git.frostfs.info/TrueCloudLab/frostfs-sdk-go@v0.0.0-20241022124111-5361f0ecebd3/crypto/crypto_test.go (about) 1 package frostfscrypto_test 2 3 import ( 4 "crypto/rand" 5 "testing" 6 7 "git.frostfs.info/TrueCloudLab/frostfs-api-go/v2/refs" 8 frostfscrypto "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/crypto" 9 frostfsecdsa "git.frostfs.info/TrueCloudLab/frostfs-sdk-go/crypto/ecdsa" 10 "github.com/nspcc-dev/neo-go/pkg/crypto/keys" 11 "github.com/stretchr/testify/require" 12 ) 13 14 func TestSignature(t *testing.T) { 15 data := make([]byte, 512) 16 rand.Read(data) 17 18 k, err := keys.NewPrivateKey() 19 require.NoError(t, err) 20 21 var s frostfscrypto.Signature 22 var m refs.Signature 23 24 for _, f := range []func() frostfscrypto.Signer{ 25 func() frostfscrypto.Signer { 26 return frostfsecdsa.Signer(k.PrivateKey) 27 }, 28 func() frostfscrypto.Signer { 29 return frostfsecdsa.SignerRFC6979(k.PrivateKey) 30 }, 31 func() frostfscrypto.Signer { 32 return frostfsecdsa.SignerWalletConnect(k.PrivateKey) 33 }, 34 } { 35 signer := f() 36 37 err := s.Calculate(signer, data) 38 require.NoError(t, err) 39 40 s.WriteToV2(&m) 41 42 require.NoError(t, s.ReadFromV2(m)) 43 44 valid := s.Verify(data) 45 require.True(t, valid, "type %T", signer) 46 } 47 }