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 }