Documentation ¶
Overview ¶
Package blake2s implements the BLAKE2s hash algorithm defined by RFC 7693 and the extendable output function (XOF) BLAKE2Xs.
For a detailed specification of BLAKE2s see https://blake2.net/blake2.pdf and for BLAKE2Xs see https://blake2.net/blake2x.pdf
If you aren't sure which function you need, use BLAKE2s (Sum256 or New256). If you need a secret-key MAC (message authentication code), use the New256 function with a non-nil key.
BLAKE2X is a construction to compute hash values larger than 32 bytes. It can produce hash values between 0 and 65535 bytes.
Index ¶
Constants ¶
const ( // The blocksize of BLAKE2s in bytes. BlockSize = 64 // The hash size of BLAKE2s-256 in bytes. Size = 32 // The hash size of BLAKE2s-128 in bytes. Size128 = 16 )
const OutputLengthUnknown = 0
OutputLengthUnknown can be used as the size argument to NewXOF to indicate the length of the output is not known in advance.
Variables ¶
This section is empty.
Functions ¶
func New128 ¶
New128 returns a new hash.Hash computing the BLAKE2s-128 checksum given a non-empty key. Note that a 128-bit digest is too small to be secure as a cryptographic hash and should only be used as a MAC, thus the key argument is not optional.
func New256 ¶
New256 returns a new hash.Hash computing the BLAKE2s-256 checksum. A non-nil key turns the hash into a MAC. The key must between zero and 32 bytes long. When the key is nil, the returned hash.Hash implements BinaryMarshaler and BinaryUnmarshaler for state (de)serialization as documented by hash.Hash.
Types ¶
type XOF ¶
type XOF interface { // Write absorbs more data into the hash's state. It panics if called // after Read. io.Writer // Read reads more output from the hash. It returns io.EOF if the limit // has been reached. io.Reader // Clone returns a copy of the XOF in its current state. Clone() XOF // Reset resets the XOF to its initial state. Reset() }
XOF defines the interface to hash functions that support arbitrary-length output.
func NewXOF ¶
NewXOF creates a new variable-output-length hash. The hash either produce a known number of bytes (1 <= size < 65535), or an unknown number of bytes (size == OutputLengthUnknown). In the latter case, an absolute limit of 128GiB applies.
A non-nil key turns the hash into a MAC. The key must between zero and 32 bytes long.