deterministic_bridge_key.go 1.2 KB

1234567891011121314151617181920212223242526272829303132333435363738
  1. package devnet
  2. import (
  3. "crypto/ecdsa"
  4. "crypto/elliptic"
  5. eth_crypto "github.com/ethereum/go-ethereum/crypto"
  6. )
  7. // InsecureDeterministicEcdsaKeyByIndex generates a deterministic ecdsa.PrivateKey from a given index.
  8. func InsecureDeterministicEcdsaKeyByIndex(c elliptic.Curve, idx uint64) *ecdsa.PrivateKey {
  9. // with golang <= 1.19, we used the following code to generate deterministic keys.
  10. // But in golang 1.20, ecdsa.GenerateKey became non-deterministic and therefore the keys are now hardcoded.
  11. /*
  12. // use 555 as offset to deterministically generate key 0 to match vaa-test such that
  13. // we generate the same key.
  14. r := mathrand.New(mathrand.NewSource(int64(555 + idx))) //#nosec G404 Testnet/devnet keys are not secret.
  15. key, err := ecdsa.GenerateKey(c, r)
  16. if err != nil {
  17. panic(err)
  18. }
  19. */
  20. keys := []string{
  21. "cfb12303a19cde580bb4dd771639b0d26bc68353645571a8cff516ab2ee113a0",
  22. "c3b2e45c422a1602333a64078aeb42637370b0f48fe385f9cfa6ad54a8e0c47e",
  23. "9f790d3f08bc4b5cd910d4278f3deb406e57bb5e924906ccd52052bb078ccd47",
  24. "b20cc49d6f2c82a5e6519015fc18aa3e562867f85f872c58f1277cfbd2a0c8e4",
  25. }
  26. privKey, err := eth_crypto.HexToECDSA(keys[idx])
  27. if err != nil {
  28. panic(err)
  29. }
  30. return privKey
  31. }