Module: Multihashes
- Defined in:
- lib/multihashes.rb,
lib/multihashes/version.rb
Defined Under Namespace
Classes: DigestLengthError, HashFunctionNotImplemented
Constant Summary
collapse
- TABLE =
{
0x11 => 'sha1',
0x12 => 'sha2-256',
0x13 => 'sha2-512',
0x14 => 'sha3',
0x40 => 'blake2b',
0x41 => 'blake2s'
}
- VERSION =
"0.1.2"
Class Method Summary
collapse
Class Method Details
.decode(multihash) ⇒ Object
24
25
26
27
28
29
30
31
32
|
# File 'lib/multihashes.rb', line 24
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
17
18
19
20
21
22
|
# File 'lib/multihashes.rb', line 17
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
|