/
vegawallet.go
51 lines (46 loc) · 1.72 KB
/
vegawallet.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
package generate
import (
"fmt"
"github.com/vegaprotocol/devopstools/secrets"
"code.vegaprotocol.io/vega/wallet/wallet"
)
func GenerateVegaWallet() (*secrets.VegaWalletPrivate, error) {
vegaWallet, recoveryPhrase, err := wallet.NewHDWallet("")
if err != nil {
return nil, fmt.Errorf("failed to generate vegawallet recovery phrase %w", err)
}
id := vegaWallet.ID()
keyPair, err := vegaWallet.GenerateKeyPair(nil)
if err != nil {
return nil, fmt.Errorf("failed to generate key pair %w", err)
}
return &secrets.VegaWalletPrivate{
Id: id,
PublicKey: keyPair.PublicKey(),
PrivateKey: keyPair.PrivateKey(),
RecoveryPhrase: recoveryPhrase,
}, nil
}
func ValidateVegawalletIdAndPubKeyAndPrivKeyWithRecoveryPhrase(
id string, publicKey string, privateKey string, recoveryPhrase string,
) error {
vegaWallet, err := wallet.ImportHDWallet("my wallet", recoveryPhrase, wallet.LatestVersion)
if err != nil {
return fmt.Errorf("failed to get vegawallet with recovery phrase %w", err)
}
expectedId := vegaWallet.ID()
keyPair, err := vegaWallet.GenerateKeyPair(nil)
if err != nil {
return fmt.Errorf("failed to get key pair for wallet from recovery phrase %w", err)
}
if id != expectedId {
return fmt.Errorf("vegawallet data does not match recovery phrase, id does not match, provided='%s', expected='%s'", id, expectedId)
}
if publicKey != keyPair.PublicKey() {
return fmt.Errorf("vegawallet data does not match recovery phrase, public key does not match, provided='%s', expected='%s'", publicKey, keyPair.PublicKey())
}
if privateKey != keyPair.PrivateKey() {
return fmt.Errorf("vegawallet data does not match recovery phrase, private key does not match for wallet with id='%s'", id)
}
return nil
}