Module: Multihashes
- Defined in:
- lib/multihashes.rb,
lib/multihashes/version.rb
Defined Under Namespace
Classes: DigestLengthError, HashFunctionNotImplemented
Constant Summary
collapse
- TABLE =
Multicodecs.where(tag: 'multihash')
.map { |codec| [codec.code, codec.name] }
.to_h
- VERSION =
"0.2.0"
Class Method Summary
collapse
Class Method Details
.decode(multihash) ⇒ Object
20
21
22
23
24
25
26
27
28
|
# File 'lib/multihashes.rb', line 20
def self.decode(multihash)
integer, length, digest = multihash.unpack('CCa*')
if length != digest.bytesize
raise DigestLengthError, 'digest did not match expected multihash length'
end
{code: integer, hash_function: TABLE[integer], length: length, digest: digest}
end
|
.encode(digest, hash_function) ⇒ Object
13
14
15
16
17
18
|
# File 'lib/multihashes.rb', line 13
def self.encode(digest, hash_function)
length = digest.bytesize
key = TABLE.key hash_function
raise HashFunctionNotImplemented, 'unknown hash function code' if key.nil?
[TABLE.key(hash_function), length, digest].pack("CCa#{length}")
end
|