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 }