github.com/storacha/go-ucanto@v0.7.2/principal/ed25519/signer/signer_test.go (about) 1 package signer 2 3 import ( 4 "crypto/ed25519" 5 "fmt" 6 "testing" 7 8 "github.com/stretchr/testify/require" 9 ) 10 11 func TestGenerateEncodeDecode(t *testing.T) { 12 s0, err := Generate() 13 if err != nil { 14 t.Fatalf("generating Ed25519 key: %v", err) 15 } 16 17 fmt.Println(s0.DID().String()) 18 19 s1, err := Decode(s0.Encode()) 20 if err != nil { 21 t.Fatalf("decoding Ed25519 key: %v", err) 22 } 23 24 fmt.Println(s1.DID().String()) 25 26 if s0.DID().String() != s1.DID().String() { 27 t.Fatalf("public key mismatch: %s != %s", s0.DID().String(), s1.DID().String()) 28 } 29 } 30 31 func TestGenerateFormatParse(t *testing.T) { 32 s0, err := Generate() 33 if err != nil { 34 t.Fatalf("generating Ed25519 key: %v", err) 35 } 36 37 fmt.Println(s0.DID().String()) 38 39 str, err := Format(s0) 40 if err != nil { 41 t.Fatalf("formatting Ed25519 key: %v", err) 42 } 43 44 fmt.Println(str) 45 46 s1, err := Parse(str) 47 if err != nil { 48 t.Fatalf("parsing Ed25519 key: %v", err) 49 } 50 51 fmt.Println(s1.DID().String()) 52 53 if s0.DID().String() != s1.DID().String() { 54 t.Fatalf("public key mismatch: %s != %s", s0.DID().String(), s1.DID().String()) 55 } 56 } 57 58 func TestVerify(t *testing.T) { 59 s0, err := Generate() 60 if err != nil { 61 t.Fatalf("generating Ed25519 key: %v", err) 62 } 63 64 msg := []byte("testy") 65 sig := s0.Sign(msg) 66 67 res := s0.Verifier().Verify(msg, sig) 68 if res != true { 69 t.Fatalf("verify failed") 70 } 71 } 72 73 func TestSignerRaw(t *testing.T) { 74 s, err := Generate() 75 require.NoError(t, err) 76 77 msg := []byte{1, 2, 3} 78 raw := s.Raw() 79 sig := ed25519.Sign(raw, msg) 80 81 require.Equal(t, s.Sign(msg).Raw(), sig) 82 } 83 84 func TestFromRaw(t *testing.T) { 85 t.Run("round trip", func(t *testing.T) { 86 _, priv, err := ed25519.GenerateKey(nil) 87 require.NoError(t, err) 88 89 s, err := FromRaw(priv) 90 require.NoError(t, err) 91 92 require.Equal(t, priv, ed25519.PrivateKey(s.Raw())) 93 }) 94 95 t.Run("invalid length", func(t *testing.T) { 96 _, err := FromRaw([]byte{}) 97 require.Error(t, err) 98 require.ErrorContains(t, err, "invalid length") 99 }) 100 }