Add key header to unencrypted key file
This commit is contained in:
parent
29a5a92d13
commit
cd88295f5a
@ -45,27 +45,28 @@ type Key struct {
|
|||||||
type plainKeyJSON struct {
|
type plainKeyJSON struct {
|
||||||
Id []byte
|
Id []byte
|
||||||
Address []byte
|
Address []byte
|
||||||
|
KeyHeader keyHeaderJSON
|
||||||
PrivateKey []byte
|
PrivateKey []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type encryptedKeyJSON struct {
|
type encryptedKeyJSON struct {
|
||||||
Id []byte
|
Id []byte
|
||||||
Address []byte
|
Address []byte
|
||||||
Crypto cipherJSON
|
KeyHeader keyHeaderJSON
|
||||||
|
Crypto cipherJSON
|
||||||
}
|
}
|
||||||
|
|
||||||
type cipherJSON struct {
|
type cipherJSON struct {
|
||||||
MAC []byte
|
MAC []byte
|
||||||
Salt []byte
|
Salt []byte
|
||||||
IV []byte
|
IV []byte
|
||||||
KeyHeader keyHeaderJSON
|
|
||||||
CipherText []byte
|
CipherText []byte
|
||||||
}
|
}
|
||||||
|
|
||||||
type keyHeaderJSON struct {
|
type keyHeaderJSON struct {
|
||||||
Version string
|
Version string
|
||||||
Kdf string
|
Kdf string
|
||||||
KdfParams scryptParamsJSON // TODO: make more generic?
|
KdfParams *scryptParamsJSON // TODO: make more generic?
|
||||||
}
|
}
|
||||||
|
|
||||||
type scryptParamsJSON struct {
|
type scryptParamsJSON struct {
|
||||||
@ -77,9 +78,15 @@ type scryptParamsJSON struct {
|
|||||||
}
|
}
|
||||||
|
|
||||||
func (k *Key) MarshalJSON() (j []byte, err error) {
|
func (k *Key) MarshalJSON() (j []byte, err error) {
|
||||||
|
keyHeader := keyHeaderJSON{
|
||||||
|
Version: "1",
|
||||||
|
Kdf: "",
|
||||||
|
KdfParams: nil,
|
||||||
|
}
|
||||||
jStruct := plainKeyJSON{
|
jStruct := plainKeyJSON{
|
||||||
k.Id,
|
k.Id,
|
||||||
k.Address.Bytes(),
|
k.Address.Bytes(),
|
||||||
|
keyHeader,
|
||||||
FromECDSA(k.PrivateKey),
|
FromECDSA(k.PrivateKey),
|
||||||
}
|
}
|
||||||
j, err = json.Marshal(jStruct)
|
j, err = json.Marshal(jStruct)
|
||||||
|
@ -153,7 +153,7 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) {
|
|||||||
keyHeaderJSON := keyHeaderJSON{
|
keyHeaderJSON := keyHeaderJSON{
|
||||||
Version: keyHeaderVersion,
|
Version: keyHeaderVersion,
|
||||||
Kdf: keyHeaderKDF,
|
Kdf: keyHeaderKDF,
|
||||||
KdfParams: paramsJSON,
|
KdfParams: ¶msJSON,
|
||||||
}
|
}
|
||||||
|
|
||||||
keyHeaderJSONStr, err := json.Marshal(keyHeaderJSON)
|
keyHeaderJSONStr, err := json.Marshal(keyHeaderJSON)
|
||||||
@ -167,12 +167,12 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) {
|
|||||||
mac,
|
mac,
|
||||||
salt,
|
salt,
|
||||||
iv,
|
iv,
|
||||||
keyHeaderJSON,
|
|
||||||
cipherText,
|
cipherText,
|
||||||
}
|
}
|
||||||
keyStruct := encryptedKeyJSON{
|
keyStruct := encryptedKeyJSON{
|
||||||
key.Id,
|
key.Id,
|
||||||
key.Address.Bytes(),
|
key.Address.Bytes(),
|
||||||
|
keyHeaderJSON,
|
||||||
cipherStruct,
|
cipherStruct,
|
||||||
}
|
}
|
||||||
keyJSON, err := json.Marshal(keyStruct)
|
keyJSON, err := json.Marshal(keyStruct)
|
||||||
@ -204,10 +204,11 @@ func DecryptKey(ks keyStorePassphrase, keyAddr common.Address, auth string) (key
|
|||||||
err = json.Unmarshal(fileContent, keyProtected)
|
err = json.Unmarshal(fileContent, keyProtected)
|
||||||
|
|
||||||
keyId = keyProtected.Id
|
keyId = keyProtected.Id
|
||||||
|
keyHeader := keyProtected.KeyHeader
|
||||||
|
|
||||||
mac := keyProtected.Crypto.MAC
|
mac := keyProtected.Crypto.MAC
|
||||||
salt := keyProtected.Crypto.Salt
|
salt := keyProtected.Crypto.Salt
|
||||||
iv := keyProtected.Crypto.IV
|
iv := keyProtected.Crypto.IV
|
||||||
keyHeader := keyProtected.Crypto.KeyHeader
|
|
||||||
cipherText := keyProtected.Crypto.CipherText
|
cipherText := keyProtected.Crypto.CipherText
|
||||||
|
|
||||||
// used in MAC
|
// used in MAC
|
||||||
|
Loading…
Reference in New Issue
Block a user