classicfm-discord-bot/node_modules/sodium/docs/generichash.md
2024-05-09 14:45:10 -04:00

4.1 KiB
Executable file

Note the Generic Hashing section of the libsodium documentation, on which this document heavily depends.

Implemented using BLAKE2b. This function set should not be used to hash passwords. Use crypto_pwhash instead.

crypto_generichash(out_size, in, key)

Compute a fixed length fingerprint for a message of arbitrary length. Use cases include file integrity checks (fulfilling a similar role to MD5 and SHA-1, but with better security) and creating unique identifiers to index data of arbitrary length.

Parameters

out_size: Number, Output length in bytes. Should be between crypto_generichash_BYTES_MIN and crypto_generichash_BYTES_MAX (inclusive). The minimum recommended size is crypto_generichash_BYTES.

in: Buffer, Message to hash.

key: Buffer, Should be between crypto_generichash_KEYBYTES_MIN and crypto_generichash_KEYBYTES_MAX (inclusive). Note the recommended size: crypto_generichash_KEYBYTES. Key can also be null, in which case the output will always have the same fingerprint. If a key is specified, different keys hashing the same message should produce different fingerprints.

Returns

Buffer, Containing the resulting hash.

crypto_generichash_init(key, out_size)

Initialize a state in order to eventually produce an output of length out_size.

Together with crypto_generichash_update and crypto_generichash_final, forms the generichash streaming API. Useful for very large files or data streams.

Parameters

key: Buffer, See restrictions for generichash keys, above. Can be null.

out_size: Number, Eventual output length, in bytes.

Returns

Buffer, Containing state. Passed as initial parameter to crypto_generichash_update and crypto_generichash_final.

crypto_generichash_update(state, message)

Process a chunk of the eventual completed message.

Parameters

state: Buffer, The result of a call to crypto_generichash_init or a previous call to crypto_generichash_update.

message: Buffer, Chunk of message to add.

Returns

Buffer, Containing state.

crypto_generichash_final(state, out_size)

Obtain the output hash as a result of the streaming API state.

Parameters

state: Buffer, The result of a call to crypto_generichash_update.

out_size: Number, Output length, in bytes.

Returns

Buffer, Containing the resulting hash.

crypto_generichash_BYTES_MIN

Minimum permitted length of output hash, in bytes. Algorithm-specific variant: crypto_generichash_blake2b_BYTES_MIN.

crypto_generichash_BYTES_MAX

Maximum permitted length of output hash, in bytes. Algorithm-specific variant: crypto_generichash_blake2b_BYTES_MAX.

crypto_generichash_BYTES

Recommended length of output hash to effectively ensure that two messages will not share the same fingerprint. Algorithm-specific variant: crypto_generichash_blake2b_BYTES.

crypto_generichash_KEYBYTES_MIN

Minimum permitted length of key, in bytes. Algorithm-speficic variant: crypto_generichash_blake2b_KEYBYTES_MIN.

crypto_generichash_KEYBYTES_MAX

Maximum permitted length of key, in bytes. Algorithm-specific variant: crypto_generichash_blake2b_KEYBYTES_MAX.

crypto_generichash_KEYBYTES

Recommended length of key, in bytes. Note that key can also be null, which leads to the message always having the same fingerprint. Algorithm-specific variant: crypto_generichash_blake2b_KEYBYTES.

Note

Node Sodium also exposes crypto_generichash_blake2b, crypto_generichash_blake2b_init, crypto_generichash_blake2b_update, and crypto_generichash_blake2b_final. In the interests of brevity these are not separately documented, but their usage and parameters are identical (with the exception of constant naming: see above list).