package multihash

Import Path
	github.com/multiformats/go-multihash/core (on go.dev)

Dependency Relation
	imports 8 packages, and imported by 6 packages

Involved Source Files errata.go magic.go registry.go
Package-Level Functions (total 4)
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)`.
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.
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.
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.
Package-Level Variables (total 3)
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.
ErrLenTooLarge is returned when the hash function cannot produce the requested number of bytes
ErrSumNotSupported is returned when the Sum function code is not implemented
Package-Level Constants (total 22)
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants
constants