8 . "github.com/libp2p/go-libp2p-crypto"
9 pb "github.com/libp2p/go-libp2p-crypto/pb"
10 tu "github.com/libp2p/go-libp2p-crypto/test"
13 func TestKeys(t *testing.T) {
14 for _, typ := range KeyTypes {
19 func testKeyType(typ int, t *testing.T) {
20 sk, pk, err := tu.RandTestKeyPair(typ, 512)
25 testKeySignature(t, sk)
26 testKeyEncoding(t, sk)
31 func testKeySignature(t *testing.T, sk PrivKey) {
34 text := make([]byte, 16)
35 if _, err := rand.Read(text); err != nil {
39 sig, err := sk.Sign(text)
44 valid, err := pk.Verify(text, sig)
50 t.Fatal("Invalid signature.")
54 func testKeyEncoding(t *testing.T, sk PrivKey) {
55 skbm, err := MarshalPrivateKey(sk)
60 sk2, err := UnmarshalPrivateKey(skbm)
66 t.Error("Unmarshaled private key didn't match original.\n")
69 skbm2, err := MarshalPrivateKey(sk2)
74 if !bytes.Equal(skbm, skbm2) {
75 t.Error("skb -> marshal -> unmarshal -> skb failed.\n", skbm, "\n", skbm2)
79 pkbm, err := MarshalPublicKey(pk)
84 pk2, err := UnmarshalPublicKey(pkbm)
90 t.Error("Unmarshaled public key didn't match original.\n")
93 pkbm2, err := MarshalPublicKey(pk)
98 if !bytes.Equal(pkbm, pkbm2) {
99 t.Error("skb -> marshal -> unmarshal -> skb failed.\n", pkbm, "\n", pkbm2)
103 func testKeyEquals(t *testing.T, k Key) {
110 t.Fatal("Key not equal to itself.")
113 if !KeyEqual(k, testkey(kb)) {
114 t.Fatal("Key not equal to key with same bytes.")
117 sk, pk, err := tu.RandTestKeyPair(RSA, 512)
123 t.Fatal("Keys should not equal.")
127 t.Fatal("Keys should not equal.")
133 func (pk testkey) Bytes() ([]byte, error) {
137 func (pk testkey) Type() pb.KeyType {
138 return pb.KeyType_RSA
141 func (pk testkey) Raw() ([]byte, error) {
145 func (pk testkey) Equals(k Key) bool {
146 return KeyEqual(pk, k)