Skip to content

Commit cd88295

Browse files
author
Gustav Simonsson
committed
Add key header to unencrypted key file
1 parent 29a5a92 commit cd88295

File tree

2 files changed

+16
-8
lines changed

2 files changed

+16
-8
lines changed

crypto/key.go

Lines changed: 12 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,27 +45,28 @@ type Key struct {
4545
type plainKeyJSON struct {
4646
Id []byte
4747
Address []byte
48+
KeyHeader keyHeaderJSON
4849
PrivateKey []byte
4950
}
5051

5152
type encryptedKeyJSON struct {
52-
Id []byte
53-
Address []byte
54-
Crypto cipherJSON
53+
Id []byte
54+
Address []byte
55+
KeyHeader keyHeaderJSON
56+
Crypto cipherJSON
5557
}
5658

5759
type cipherJSON struct {
5860
MAC []byte
5961
Salt []byte
6062
IV []byte
61-
KeyHeader keyHeaderJSON
6263
CipherText []byte
6364
}
6465

6566
type keyHeaderJSON struct {
6667
Version string
6768
Kdf string
68-
KdfParams scryptParamsJSON // TODO: make more generic?
69+
KdfParams *scryptParamsJSON // TODO: make more generic?
6970
}
7071

7172
type scryptParamsJSON struct {
@@ -77,9 +78,15 @@ type scryptParamsJSON struct {
7778
}
7879

7980
func (k *Key) MarshalJSON() (j []byte, err error) {
81+
keyHeader := keyHeaderJSON{
82+
Version: "1",
83+
Kdf: "",
84+
KdfParams: nil,
85+
}
8086
jStruct := plainKeyJSON{
8187
k.Id,
8288
k.Address.Bytes(),
89+
keyHeader,
8390
FromECDSA(k.PrivateKey),
8491
}
8592
j, err = json.Marshal(jStruct)

crypto/key_store_passphrase.go

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -153,7 +153,7 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) {
153153
keyHeaderJSON := keyHeaderJSON{
154154
Version: keyHeaderVersion,
155155
Kdf: keyHeaderKDF,
156-
KdfParams: paramsJSON,
156+
KdfParams: &paramsJSON,
157157
}
158158

159159
keyHeaderJSONStr, err := json.Marshal(keyHeaderJSON)
@@ -167,12 +167,12 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) {
167167
mac,
168168
salt,
169169
iv,
170-
keyHeaderJSON,
171170
cipherText,
172171
}
173172
keyStruct := encryptedKeyJSON{
174173
key.Id,
175174
key.Address.Bytes(),
175+
keyHeaderJSON,
176176
cipherStruct,
177177
}
178178
keyJSON, err := json.Marshal(keyStruct)
@@ -204,10 +204,11 @@ func DecryptKey(ks keyStorePassphrase, keyAddr common.Address, auth string) (key
204204
err = json.Unmarshal(fileContent, keyProtected)
205205

206206
keyId = keyProtected.Id
207+
keyHeader := keyProtected.KeyHeader
208+
207209
mac := keyProtected.Crypto.MAC
208210
salt := keyProtected.Crypto.Salt
209211
iv := keyProtected.Crypto.IV
210-
keyHeader := keyProtected.Crypto.KeyHeader
211212
cipherText := keyProtected.Crypto.CipherText
212213

213214
// used in MAC

0 commit comments

Comments
 (0)