module Multihashes

Constants

TABLE

github.com/multiformats/multicodec/blob/master/table.csv

VERSION

Public Class Methods

decode(multihash) click to toggle source
# 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) click to toggle source
# 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