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 }