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")
|
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 {
|
if err != nil {
|
||||||
return Undef, err
|
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) {
|
func TestBasicMarshaling(t *testing.T) {
|
||||||
h, err := mh.Sum([]byte("TEST"), mh.SHA3, 4)
|
h, err := mh.Sum([]byte("TEST"), mh.SHA3, 4)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|||||||
2
go.mod
2
go.mod
@@ -2,7 +2,7 @@ module github.com/ipfs/go-cid
|
|||||||
|
|
||||||
require (
|
require (
|
||||||
github.com/multiformats/go-multibase v0.0.3
|
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
|
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 h1:06x+mk/zj1FoMsgNejLpy6QTvJqlSt/BhLEy87zidlc=
|
||||||
github.com/multiformats/go-multihash v0.0.13/go.mod h1:VdAWLKTwram9oKAatUcLxBNUjdtcVwxObEQBtRfuyjc=
|
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.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 h1:XVZwSo04Cs3j/jS0uAEPpT3JY6DzMcVLLoWOSnCxOjg=
|
||||||
github.com/multiformats/go-varint v0.0.5/go.mod h1:3Ls8CIEsrijN6+B7PbrXRPxHRPuXSrVKRY101jdMZYE=
|
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/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 h1:7c1g84S4BPRrfL5Xrdp6fOJ206sU9y293DDHaoy0bLI=
|
||||||
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
github.com/spaolacci/murmur3 v1.1.0/go.mod h1:JwIasOWyU6f++ZhiEuf87xNszmSA2myDM2Kzu9HwQUA=
|
||||||
|
|||||||
Reference in New Issue
Block a user