Documentation ¶
Index ¶
- Constants
- Variables
- func GetHasher(indicator uint64) (hash.Hash, error)
- func GetVariableHasher(indicator uint64, sizeHint int) (hash.Hash, error)
- func Register(indicator uint64, hasherFactory func() hash.Hash)
- func RegisterVariableSize(indicator uint64, hasherFactory func(sizeHint int) (hash.Hash, bool))
Constants ¶
const ( IDENTITY = 0x00 SHA1 = 0x11 SHA2_224 = 0x1013 SHA2_256 = 0x12 SHA2_384 = 0x20 SHA2_512 = 0x13 SHA2_512_224 = 0x1014 SHA2_512_256 = 0x1015 SHA3_224 = 0x17 SHA3_256 = 0x16 SHA3_384 = 0x15 SHA3_512 = 0x14 KECCAK_224 = 0x1A KECCAK_256 = 0x1B KECCAK_384 = 0x1C KECCAK_512 = 0x1D BLAKE3 = 0x1E SHAKE_128 = 0x18 SHAKE_256 = 0x19 MURMUR3X64_64 = 0x22 MD5 = 0xd5 DBL_SHA2_256 = 0x56 )
constants
Variables ¶
var DefaultLengths = map[uint64]int{}
DefaultLengths maps a multihash indicator code to the output size for that hash, in units of bytes.
This map is populated when a hash function is registered by the Register function. It's effectively a shortcut for asking Size() on the hash.Hash.
var ErrLenTooLarge = errors.New("requested length was too large for digest")
ErrLenTooLarge is returned when the hash function cannot produce the requested number of bytes
var ErrSumNotSupported = errors.New("no such hash registered")
ErrSumNotSupported is returned when the Sum function code is not implemented
Functions ¶
func GetHasher ¶
GetHasher returns a new hash.Hash according to the indicator code number provided.
The indicator code should be per the numbers reserved and described in https://github.com/multiformats/multicodec/blob/master/table.csv .
The actual hashers available are determined by what has been registered. The registry automatically contains those hashers which are available in the golang standard libraries (which includes md5, sha1, sha256, sha384, sha512, and the "identity" mulithash, among others). Other hash implementations can be made available by using the Register function. The 'go-mulithash/register/*' packages can also be imported to gain more common hash functions.
If an error is returned, it will match `errors.Is(err, ErrSumNotSupported)`.
func GetVariableHasher ¶ added in v0.2.1
GetVariableHasher returns a new hash.Hash according to the indicator code number provided, with the specified size hint.
NOTE: The size hint is only a hint. Hashers will attempt to produce at least the number of requested bytes, but may not.
This function can fail if either the hash code is not registered, or the passed size hint is statically incompatible with the specified hash function.
func Register ¶
Register adds a new hash to the set available from GetHasher and Sum.
Register has a global effect and should only be used at package init time to avoid data races.
The indicator code should be per the numbers reserved and described in https://github.com/multiformats/multicodec/blob/master/table.csv .
If Register is called with the same indicator code more than once, the last call wins. In practice, this means that if an application has a strong opinion about what implementation to use for a certain hash (e.g., perhaps they want to override the sha256 implementation to use a special hand-rolled assembly variant rather than the stdlib one which is registered by default), then this can be done by making a Register call with that effect at init time in the application's main package. This should have the desired effect because the root of the import tree has its init time effect last.
func RegisterVariableSize ¶ added in v0.2.1
RegisterVariableSize is like Register, but adds a new variable-sized hasher factory that takes a size hint.
When passed -1, the hasher should produce digests with the hash-function's default length. When passed a non-negative integer, the hasher should try to produce digests of at least the specified size.
Types ¶
This section is empty.