github.com/jonasnick/go-ethereum@v0.7.12-0.20150216215225-22176f05d387/crypto/key_store_test.go (about)

     1  package crypto
     2  
     3  import (
     4  	"github.com/jonasnick/go-ethereum/crypto/randentropy"
     5  	"reflect"
     6  	"testing"
     7  )
     8  
     9  func TestKeyStorePlain(t *testing.T) {
    10  	ks := NewKeyStorePlain(DefaultDataDir())
    11  	pass := "" // not used but required by API
    12  	k1, err := ks.GenerateNewKey(randentropy.Reader, pass)
    13  	if err != nil {
    14  		t.Fatal(err)
    15  	}
    16  
    17  	k2 := new(Key)
    18  	k2, err = ks.GetKey(k1.Address, pass)
    19  	if err != nil {
    20  		t.Fatal(err)
    21  	}
    22  
    23  	if !reflect.DeepEqual(k1.Address, k2.Address) {
    24  		t.Fatal(err)
    25  	}
    26  
    27  	if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) {
    28  		t.Fatal(err)
    29  	}
    30  
    31  	err = ks.DeleteKey(k2.Address, pass)
    32  	if err != nil {
    33  		t.Fatal(err)
    34  	}
    35  }
    36  
    37  func TestKeyStorePassphrase(t *testing.T) {
    38  	ks := NewKeyStorePassphrase(DefaultDataDir())
    39  	pass := "foo"
    40  	k1, err := ks.GenerateNewKey(randentropy.Reader, pass)
    41  	if err != nil {
    42  		t.Fatal(err)
    43  	}
    44  	k2 := new(Key)
    45  	k2, err = ks.GetKey(k1.Address, pass)
    46  	if err != nil {
    47  		t.Fatal(err)
    48  	}
    49  	if !reflect.DeepEqual(k1.Address, k2.Address) {
    50  		t.Fatal(err)
    51  	}
    52  
    53  	if !reflect.DeepEqual(k1.PrivateKey, k2.PrivateKey) {
    54  		t.Fatal(err)
    55  	}
    56  
    57  	err = ks.DeleteKey(k2.Address, pass) // also to clean up created files
    58  	if err != nil {
    59  		t.Fatal(err)
    60  	}
    61  }
    62  
    63  func TestKeyStorePassphraseDecryptionFail(t *testing.T) {
    64  	ks := NewKeyStorePassphrase(DefaultDataDir())
    65  	pass := "foo"
    66  	k1, err := ks.GenerateNewKey(randentropy.Reader, pass)
    67  	if err != nil {
    68  		t.Fatal(err)
    69  	}
    70  
    71  	_, err = ks.GetKey(k1.Address, "bar") // wrong passphrase
    72  	if err == nil {
    73  		t.Fatal(err)
    74  	}
    75  
    76  	err = ks.DeleteKey(k1.Address, "bar") // wrong passphrase
    77  	if err == nil {
    78  		t.Fatal(err)
    79  	}
    80  
    81  	err = ks.DeleteKey(k1.Address, pass) // to clean up
    82  	if err != nil {
    83  		t.Fatal(err)
    84  	}
    85  }
    86  
    87  func TestImportPreSaleKey(t *testing.T) {
    88  	// file content of a presale key file generated with:
    89  	// python pyethsaletool.py genwallet
    90  	// with password "foo"
    91  	fileContent := "{\"encseed\": \"26d87f5f2bf9835f9a47eefae571bc09f9107bb13d54ff12a4ec095d01f83897494cf34f7bed2ed34126ecba9db7b62de56c9d7cd136520a0427bfb11b8954ba7ac39b90d4650d3448e31185affcd74226a68f1e94b1108e6e0a4a91cdd83eba\", \"ethaddr\": \"d4584b5f6229b7be90727b0fc8c6b91bb427821f\", \"email\": \"gustav.simonsson@gmail.com\", \"btcaddr\": \"1EVknXyFC68kKNLkh6YnKzW41svSRoaAcx\"}"
    92  	ks := NewKeyStorePassphrase(DefaultDataDir())
    93  	pass := "foo"
    94  	_, err := ImportPreSaleKey(ks, []byte(fileContent), pass)
    95  	if err != nil {
    96  		t.Fatal(err)
    97  	}
    98  }