hermez-node/common/accountcreationauths_test.go
common/accountcreationauths_test.goRaw
1package common
2
3import (
4 "encoding/hex"
5 "testing"
6
7 ethCommon "github.com/ethereum/go-ethereum/common"
8 ethCrypto "github.com/ethereum/go-ethereum/crypto"
9 "github.com/iden3/go-iden3-crypto/babyjub"
10 "github.com/stretchr/testify/assert"
11 "github.com/stretchr/testify/require"
12)
13
14func TestAccountCreationAuth(t *testing.T) {
15 // Ethereum key
16 ethSk, err := ethCrypto.HexToECDSA("fad9c8855b740a0b7ed4c221dbad0f33a83a49cad6b3fe8d5817ac83d38b6a19")
17 require.NoError(t, err)
18 ethAddr := ethCrypto.PubkeyToAddress(ethSk.PublicKey)
19
20 // BabyJubJub key
21 var sk babyjub.PrivateKey
22 _, err = hex.Decode(sk[:], []byte("0001020304050607080900010203040506070809000102030405060708090001"))
23 assert.NoError(t, err)
24
25 chainID := uint16(0)
26 hermezContractAddr := ethCommon.HexToAddress("0xc344E203a046Da13b0B4467EB7B3629D0C99F6E6")
27 a := AccountCreationAuth{
28 EthAddr: ethAddr,
29 BJJ: sk.Public().Compress(),
30 }
31 msg, err := a.HashToSign(chainID, hermezContractAddr)
32 assert.NoError(t, err)
33 assert.Equal(t, "cb5a7e44329ff430c81fec49fb2ac6741f02d5ec96cbcb618a6991f0a9c80ffd", hex.EncodeToString(msg))
34
35 // sign AccountCreationAuth with eth key
36 sig, err := ethCrypto.Sign(msg, ethSk)
37 assert.NoError(t, err)
38 a.Signature = sig
39
40 assert.True(t, a.VerifySignature(chainID, hermezContractAddr))
41}