Unverified Commit d51115b4 authored by Steven Allen's avatar Steven Allen Committed by GitHub

Merge pull request #6 from ipfs/feat/test-embed

add an explicit test case for the EmbedPublicKey function
parents 130e692f 49dd8235
......@@ -6,7 +6,7 @@ sudo: false
language: go
go:
- 1.10.0
- 1.10.x
install:
- make deps
......
......@@ -68,17 +68,22 @@ func GetEOL(entry *pb.IpnsEntry) (time.Time, error) {
// that don't embed their public keys as they may not be able to validate them
// efficiently.
func EmbedPublicKey(pk ic.PubKey, entry *pb.IpnsEntry) error {
// Try extracting the public key from the ID. If we can, *don't* embed
// it.
id, err := peer.IDFromPublicKey(pk)
if err != nil {
return err
}
extraced, err := id.ExtractPublicKey()
extracted, err := id.ExtractPublicKey()
if err != nil {
return err
}
if extraced != nil {
if extracted != nil {
return nil
}
// We failed to extract the public key from the peer ID, embed it in the
// record.
pkBytes, err := pk.Bytes()
if err != nil {
return err
......
package ipns
import (
"testing"
"time"
u "github.com/ipfs/go-ipfs-util"
ci "github.com/libp2p/go-libp2p-crypto"
peer "github.com/libp2p/go-libp2p-peer"
)
func TestEmbedPublicKey(t *testing.T) {
sr := u.NewTimeSeededRand()
priv, pub, err := ci.GenerateKeyPairWithReader(ci.RSA, 1024, sr)
if err != nil {
t.Fatal(err)
}
pid, err := peer.IDFromPublicKey(pub)
if err != nil {
t.Fatal(err)
}
e, err := Create(priv, []byte("/a/b"), 0, time.Now().Add(1*time.Hour))
if err != nil {
t.Fatal(err)
}
if err := EmbedPublicKey(pub, e); err != nil {
t.Fatal(err)
}
embeddedPk, err := ci.UnmarshalPublicKey(e.PubKey)
if err != nil {
t.Fatal(err)
}
embeddedPid, err := peer.IDFromPublicKey(embeddedPk)
if err != nil {
t.Fatal(err)
}
if embeddedPid != pid {
t.Fatalf("pid mismatch: %s != %s", pid, embeddedPid)
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment