github.com/MetalBlockchain/metalgo@v1.11.9/utils/crypto/bls/public_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 TestPublicKeyFromCompressedBytesWrongSize(t *testing.T) {
    15  	require := require.New(t)
    16  
    17  	pkBytes := utils.RandomBytes(PublicKeyLen + 1)
    18  	_, err := PublicKeyFromCompressedBytes(pkBytes)
    19  	require.ErrorIs(err, ErrFailedPublicKeyDecompress)
    20  }
    21  
    22  func TestPublicKeyBytes(t *testing.T) {
    23  	require := require.New(t)
    24  
    25  	sk, err := NewSecretKey()
    26  	require.NoError(err)
    27  
    28  	pk := PublicFromSecretKey(sk)
    29  	pkBytes := PublicKeyToCompressedBytes(pk)
    30  
    31  	pk2, err := PublicKeyFromCompressedBytes(pkBytes)
    32  	require.NoError(err)
    33  	pk2Bytes := PublicKeyToCompressedBytes(pk2)
    34  
    35  	require.Equal(pk, pk2)
    36  	require.Equal(pkBytes, pk2Bytes)
    37  }
    38  
    39  func TestAggregatePublicKeysNoop(t *testing.T) {
    40  	require := require.New(t)
    41  
    42  	sk, err := NewSecretKey()
    43  	require.NoError(err)
    44  
    45  	pk := PublicFromSecretKey(sk)
    46  	pkBytes := PublicKeyToCompressedBytes(pk)
    47  
    48  	aggPK, err := AggregatePublicKeys([]*PublicKey{pk})
    49  	require.NoError(err)
    50  
    51  	aggPKBytes := PublicKeyToCompressedBytes(aggPK)
    52  	require.NoError(err)
    53  
    54  	require.Equal(pk, aggPK)
    55  	require.Equal(pkBytes, aggPKBytes)
    56  }