8 "github.com/pborman/uuid"
9 "github.com/bytom/vapor/crypto/ed25519/chainkd"
17 // Tests that a json key file can be decrypted and encrypted in multiple rounds.
18 func TestKeyEncryptDecrypt(t *testing.T) {
19 keyjson, err := ioutil.ReadFile("testdata/bytom-very-light-scrypt.json")
23 password := "bytomtest"
25 // Do a few rounds of decryption and encryption
26 for i := 0; i < 3; i++ {
27 // Try a bad password first
29 if _, err := DecryptKey(keyjson, password+"bad"); err == nil {
30 t.Errorf("test %d: json key decrypted with bad password", i)
33 // Decrypt with the correct password
34 key, err := DecryptKey(keyjson, password)
36 t.Errorf("test %d: json key failed to decrypt: %v", i, err)
38 if key.Alias != alias {
39 t.Errorf("test %d: key address mismatch: have %x, want %x", i, key.Alias, alias)
42 // Recrypt with a new password and start over
43 //password += "new data appended"
44 if _, err = EncryptKey(key, password, veryLightScryptN, veryLightScryptP); err != nil {
45 t.Errorf("test %d: failed to recrypt key %v", i, err)
50 func TestGenerateFile(t *testing.T) {
51 xprv, xpub, err := chainkd.NewXKeys(nil)
55 id := uuid.NewRandom()
64 password := "bytomtest"
65 xkey, err := EncryptKey(key, password, veryLightScryptN, veryLightScryptP)
66 file := keyFileName(key.ID.String())
67 writeKeyFile(file, xkey)