github.com/MetalBlockchain/subnet-evm@v0.4.9/plugin/evm/message/signature_request_test.go (about)

     1  // (c) 2023, Ava Labs, Inc. All rights reserved.
     2  // See the file LICENSE for licensing terms.
     3  
     4  package message
     5  
     6  import (
     7  	"encoding/base64"
     8  	"encoding/hex"
     9  	"testing"
    10  
    11  	"github.com/MetalBlockchain/metalgo/ids"
    12  	"github.com/MetalBlockchain/metalgo/utils/crypto/bls"
    13  	"github.com/stretchr/testify/require"
    14  )
    15  
    16  // TestMarshalSignatureRequest asserts that the structure or serialization logic hasn't changed, primarily to
    17  // ensure compatibility with the network.
    18  func TestMarshalSignatureRequest(t *testing.T) {
    19  	messageIDBytes, err := hex.DecodeString("0000000000000000000000000000000000000000000000000000000000000000")
    20  	require.NoError(t, err)
    21  	messageID, err := ids.ToID(messageIDBytes)
    22  	require.NoError(t, err)
    23  
    24  	signatureRequest := SignatureRequest{
    25  		MessageID: messageID,
    26  	}
    27  
    28  	base64SignatureRequest := "AAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA=="
    29  	signatureRequestBytes, err := Codec.Marshal(Version, signatureRequest)
    30  	require.NoError(t, err)
    31  	require.Equal(t, base64SignatureRequest, base64.StdEncoding.EncodeToString(signatureRequestBytes))
    32  
    33  	var s SignatureRequest
    34  	_, err = Codec.Unmarshal(signatureRequestBytes, &s)
    35  	require.NoError(t, err)
    36  	require.Equal(t, signatureRequest.MessageID, s.MessageID)
    37  }
    38  
    39  // TestMarshalSignatureResponse asserts that the structure or serialization logic hasn't changed, primarily to
    40  // ensure compatibility with the network.
    41  func TestMarshalSignatureResponse(t *testing.T) {
    42  	var signature [bls.SignatureLen]byte
    43  	sig, err := hex.DecodeString("0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef0123456789abcdef")
    44  	require.NoError(t, err, "failed to decode string to hex")
    45  
    46  	copy(signature[:], sig)
    47  	signatureResponse := SignatureResponse{
    48  		Signature: signature,
    49  	}
    50  
    51  	base64SignatureResponse := "AAABI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8BI0VniavN7wEjRWeJq83vASNFZ4mrze8="
    52  	signatureResponseBytes, err := Codec.Marshal(Version, signatureResponse)
    53  	require.NoError(t, err)
    54  	require.Equal(t, base64SignatureResponse, base64.StdEncoding.EncodeToString(signatureResponseBytes))
    55  
    56  	var s SignatureResponse
    57  	_, err = Codec.Unmarshal(signatureResponseBytes, &s)
    58  	require.NoError(t, err)
    59  	require.Equal(t, signatureResponse.Signature, s.Signature)
    60  }