HTTPDigest.Stream (HTTPDigest v0.1.0)

Copy Markdown View Source

Incremental digest computation for large bodies.

This wraps :crypto.hash_init/1, :crypto.hash_update/2, and :crypto.hash_final/1 while preserving the same algorithm policy as the one-shot HTTPDigest.content_digest/2 API.

{:ok, stream} = HTTPDigest.Stream.init(algorithms: [:sha256])
stream = HTTPDigest.Stream.update(stream, chunk1)
stream = HTTPDigest.Stream.update(stream, chunk2)
{:ok, header_value} = HTTPDigest.Stream.content_digest(stream)

Summary

Types

t()

@opaque t()

Functions

content_digest(stream)

@spec content_digest(t()) :: {:ok, String.t()}

digests(stream)

@spec digests(t()) :: %{required(atom()) => binary()}

init(opts \\ [])

@spec init(keyword()) :: {:ok, t()} | {:error, HTTPDigest.Error.t()}

repr_digest(stream)

@spec repr_digest(t()) :: {:ok, String.t()}

update(stream, iodata)

@spec update(t(), iodata()) :: t()