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  }