key_store_test.go 2.3 KB

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