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  }