Compare commits
1 Commits
rehab/upgr
...
feat/from-
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
8f7b37bab5 |
9
cid.go
9
cid.go
@@ -573,8 +573,15 @@ func (p Prefix) Sum(data []byte) (Cid, error) {
|
||||
|
||||
return Undef, fmt.Errorf("invalid v0 prefix")
|
||||
}
|
||||
digest, err := mh.Digest(data, p.MhType, length)
|
||||
if err != nil {
|
||||
return Undef, err
|
||||
}
|
||||
return p.FromDigest(digest)
|
||||
}
|
||||
|
||||
hash, err := mh.Sum(data, p.MhType, length)
|
||||
func (p Prefix) FromDigest(digest []byte) (Cid, error) {
|
||||
hash, err := mh.Encode(digest, p.MhType)
|
||||
if err != nil {
|
||||
return Undef, err
|
||||
}
|
||||
|
||||
30
cid_test.go
30
cid_test.go
@@ -105,7 +105,37 @@ func TestPrefixSum(t *testing.T) {
|
||||
}
|
||||
}
|
||||
}
|
||||
func TestPrefixDigest(t *testing.T) {
|
||||
// Test creating CIDs both manually and with Prefix.
|
||||
// Tests: https://github.com/ipfs/go-cid/issues/83
|
||||
for _, hashfun := range []uint64{
|
||||
mh.ID, mh.SHA3, mh.SHA2_256,
|
||||
} {
|
||||
h1, err := mh.Sum([]byte("TEST"), hashfun, -1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
c1 := NewCidV1(Raw, h1)
|
||||
|
||||
h2, err := mh.Sum([]byte("foobar"), hashfun, -1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
c2 := NewCidV1(Raw, h2)
|
||||
|
||||
digest, err := mh.Digest([]byte("foobar"), hashfun, -1)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
c3, err := c1.Prefix().FromDigest(digest)
|
||||
if err != nil {
|
||||
t.Fatal(err)
|
||||
}
|
||||
if !c2.Equals(c3) {
|
||||
t.Fatal("expected CIDs to be equal")
|
||||
}
|
||||
}
|
||||
}
|
||||
func TestBasicMarshaling(t *testing.T) {
|
||||
h, err := mh.Sum([]byte("TEST"), mh.SHA3, 4)
|
||||
if err != nil {
|
||||
|
||||
2
go.mod
2
go.mod
@@ -2,7 +2,7 @@ module github.com/ipfs/go-cid
|
||||
|
||||
require (
|
||||
github.com/multiformats/go-multibase v0.0.3
|
||||
github.com/multiformats/go-multihash v0.0.14
|
||||
github.com/multiformats/go-multihash v0.0.15-0.20210226003459-69a4fed1d6f2
|
||||
github.com/multiformats/go-varint v0.0.6
|
||||
)
|
||||
|
||||
|
||||
3
go.sum
3
go.sum
@@ -15,8 +15,11 @@ github.com/multiformats/go-multibase v0.0.3/go.mod h1:5+1R4eQrT3PkYZ24C3W2Ue2tPw
|
||||
github.com/multiformats/go-multihash v0.0.13 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc=
|
||||
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multihash v0.0.14/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-multihash v0.0.15-0.20210226003459-69a4fed1d6f2 h1:0DZ3ybel2YfQ4L9GrglYgfXxdXVT8CVkJt//crxSQDM=
|
||||
github.com/multiformats/go-multihash v0.0.15-0.20210226003459-69a4fed1d6f2/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
||||
github.com/multiformats/go-varint v0.0.5 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg=
|
||||
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/multiformats/go-varint v0.0.6 h1:gk85QWKxh3TazbLxED/NlDVv8+q+ReFJk7Y2W/KhfNY=
|
||||
github.com/multiformats/go-varint v0.0.6/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
||||
github.com/spaolacci/murmur3 v1.1.0 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||
|
||||
Reference in New Issue
Block a user