accounts/keystore: added test case for zeroKey

This commit is contained in:
Marius van der Wijden 2020-04-24 09:26:16 +02:00
parent d88437cf10
commit 2d1031ba7b
2 changed files with 13 additions and 0 deletions

View file

@ -495,5 +495,6 @@ func (ks *KeyStore) ImportPreSaleKey(keyJSON []byte, passphrase string) (account
// zeroKey zeroes a private key in memory. // zeroKey zeroes a private key in memory.
func zeroKey(k *ecdsa.PrivateKey) { func zeroKey(k *ecdsa.PrivateKey) {
k.PublicKey = ecdsa.PublicKey{}
k.D.SetUint64(uint64(0)) k.D.SetUint64(uint64(0))
} }

View file

@ -18,6 +18,7 @@ package keystore
import ( import (
"io/ioutil" "io/ioutil"
"math/big"
"math/rand" "math/rand"
"os" "os"
"runtime" "runtime"
@ -218,6 +219,17 @@ func TestSignRace(t *testing.T) {
t.Errorf("Account did not lock within the timeout") t.Errorf("Account did not lock within the timeout")
} }
func TestZeroKey(t *testing.T) {
key, err := crypto.GenerateKey()
if err != nil {
t.Fatalf("failed to generate key: %v", key)
}
zeroKey(key)
if key.D.Cmp(big.NewInt(0)) != 0 {
t.Fatalf("failed to zero out key: %v", key)
}
}
// Tests that the wallet notifier loop starts and stops correctly based on the // Tests that the wallet notifier loop starts and stops correctly based on the
// addition and removal of wallet event subscriptions. // addition and removal of wallet event subscriptions.
func TestWalletNotifierLifecycle(t *testing.T) { func TestWalletNotifierLifecycle(t *testing.T) {