// Multihash reads all the data in r and calculates its multihash. func (o *Options) Multihash(r io.Reader) (mh.Multihash, error) { b, err := ioutil.ReadAll(r) if err != nil { return nil, err } return mh.Sum(b, o.AlgorithmCode, o.Length) }
// Hash is the global IPFS hash function. uses multihash SHA2_256, 256 bits func Hash(data []byte) mh.Multihash { h, err := mh.Sum(data, mh.SHA2_256, -1) if err != nil { // this error can be safely ignored (panic) because multihash only fails // from the selection of hash function. If the fn + length are valid, it // won't error. panic("multihash failed to hash using SHA2_256.") } return h }
func TestKey(t *testing.T) { h1, err := mh.Sum([]byte("beep boop"), mh.SHA2_256, -1) if err != nil { t.Error(err) } k1 := Key(h1) h2 := mh.Multihash(k1) k2 := Key(h2) if !bytes.Equal(h1, h2) { t.Error("Multihashes not equal.") } if k1 != k2 { t.Error("Keys not equal.") } }