github.com/MetalBlockchain/metalgo@v1.11.9/utils/crypto/bls/secret_test.go (about)

     1  // Copyright (C) 2019-2024, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package bls
     5  
     6  import (
     7  	"testing"
     8  
     9  	"github.com/stretchr/testify/require"
    10  
    11  	"github.com/MetalBlockchain/metalgo/utils"
    12  )
    13  
    14  func TestSecretKeyFromBytesZero(t *testing.T) {
    15  	require := require.New(t)
    16  
    17  	var skArr [SecretKeyLen]byte
    18  	skBytes := skArr[:]
    19  	_, err := SecretKeyFromBytes(skBytes)
    20  	require.ErrorIs(err, errFailedSecretKeyDeserialize)
    21  }
    22  
    23  func TestSecretKeyFromBytesWrongSize(t *testing.T) {
    24  	require := require.New(t)
    25  
    26  	skBytes := utils.RandomBytes(SecretKeyLen + 1)
    27  	_, err := SecretKeyFromBytes(skBytes)
    28  	require.ErrorIs(err, errFailedSecretKeyDeserialize)
    29  }
    30  
    31  func TestSecretKeyBytes(t *testing.T) {
    32  	require := require.New(t)
    33  
    34  	msg := utils.RandomBytes(1234)
    35  
    36  	sk, err := NewSecretKey()
    37  	require.NoError(err)
    38  	sig := Sign(sk, msg)
    39  	skBytes := SecretKeyToBytes(sk)
    40  
    41  	sk2, err := SecretKeyFromBytes(skBytes)
    42  	require.NoError(err)
    43  	sig2 := Sign(sk2, msg)
    44  	sk2Bytes := SecretKeyToBytes(sk2)
    45  
    46  	require.Equal(sk, sk2)
    47  	require.Equal(skBytes, sk2Bytes)
    48  	require.Equal(sig, sig2)
    49  }