diff options
author | Gustav Simonsson <gustav.simonsson@gmail.com> | 2015-04-15 21:47:00 +0800 |
---|---|---|
committer | Gustav Simonsson <gustav.simonsson@gmail.com> | 2015-05-12 23:19:39 +0800 |
commit | cd88295f5ac360aaaf63be94ae09f202a4b8630f (patch) | |
tree | 09fbc21c5fedcdbe8ea63f2b3a83d98ef204da6c /crypto | |
parent | 29a5a92d13cad45794c6e42cb97260a9ab9900ab (diff) | |
download | go-tangerine-cd88295f5ac360aaaf63be94ae09f202a4b8630f.tar.gz go-tangerine-cd88295f5ac360aaaf63be94ae09f202a4b8630f.tar.zst go-tangerine-cd88295f5ac360aaaf63be94ae09f202a4b8630f.zip |
Add key header to unencrypted key file
Diffstat (limited to 'crypto')
-rw-r--r-- | crypto/key.go | 17 | ||||
-rw-r--r-- | crypto/key_store_passphrase.go | 7 |
2 files changed, 16 insertions, 8 deletions
diff --git a/crypto/key.go b/crypto/key.go index 067a5a294..0f36a7f6b 100644 --- a/crypto/key.go +++ b/crypto/key.go @@ -45,27 +45,28 @@ type Key struct { type plainKeyJSON struct { Id []byte Address []byte + KeyHeader keyHeaderJSON PrivateKey []byte } type encryptedKeyJSON struct { - Id []byte - Address []byte - Crypto cipherJSON + Id []byte + Address []byte + KeyHeader keyHeaderJSON + Crypto cipherJSON } type cipherJSON struct { MAC []byte Salt []byte IV []byte - KeyHeader keyHeaderJSON CipherText []byte } type keyHeaderJSON struct { Version string Kdf string - KdfParams scryptParamsJSON // TODO: make more generic? + KdfParams *scryptParamsJSON // TODO: make more generic? } type scryptParamsJSON struct { @@ -77,9 +78,15 @@ type scryptParamsJSON struct { } func (k *Key) MarshalJSON() (j []byte, err error) { + keyHeader := keyHeaderJSON{ + Version: "1", + Kdf: "", + KdfParams: nil, + } jStruct := plainKeyJSON{ k.Id, k.Address.Bytes(), + keyHeader, FromECDSA(k.PrivateKey), } j, err = json.Marshal(jStruct) diff --git a/crypto/key_store_passphrase.go b/crypto/key_store_passphrase.go index 00717b5d1..96227e4d1 100644 --- a/crypto/key_store_passphrase.go +++ b/crypto/key_store_passphrase.go @@ -153,7 +153,7 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) { keyHeaderJSON := keyHeaderJSON{ Version: keyHeaderVersion, Kdf: keyHeaderKDF, - KdfParams: paramsJSON, + KdfParams: ¶msJSON, } keyHeaderJSONStr, err := json.Marshal(keyHeaderJSON) @@ -167,12 +167,12 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) { mac, salt, iv, - keyHeaderJSON, cipherText, } keyStruct := encryptedKeyJSON{ key.Id, key.Address.Bytes(), + keyHeaderJSON, cipherStruct, } keyJSON, err := json.Marshal(keyStruct) @@ -204,10 +204,11 @@ func DecryptKey(ks keyStorePassphrase, keyAddr common.Address, auth string) (key err = json.Unmarshal(fileContent, keyProtected) keyId = keyProtected.Id + keyHeader := keyProtected.KeyHeader + mac := keyProtected.Crypto.MAC salt := keyProtected.Crypto.Salt iv := keyProtected.Crypto.IV - keyHeader := keyProtected.Crypto.KeyHeader cipherText := keyProtected.Crypto.CipherText // used in MAC |