Add key header to encrypted keys

* Add key header containing key version, kdf and kdf params
* Store key header as JSON in the key file
* Read in KDF params from key header
* Include key header in MAC calculation and MAC verification
This commit is contained in:
Gustav Simonsson
2015-04-15 13:24:12 +02:00
parent ac3371bcb6
commit 29a5a92d13
2 changed files with 61 additions and 11 deletions

View File

@ -48,19 +48,34 @@ type plainKeyJSON struct {
PrivateKey []byte
}
type cipherJSON struct {
MAC []byte
Salt []byte
IV []byte
CipherText []byte
}
type encryptedKeyJSON struct {
Id []byte
Address []byte
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?
}
type scryptParamsJSON struct {
N int
R int
P int
DkLen int
SaltLen int
}
func (k *Key) MarshalJSON() (j []byte, err error) {
jStruct := plainKeyJSON{
k.Id,