aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJeffrey Wilcke <jeffrey@ethereum.org>2015-05-14 02:51:02 +0800
committerJeffrey Wilcke <jeffrey@ethereum.org>2015-05-14 02:51:02 +0800
commitfad21fb4a58fd3466a6a14d36eee11a000da6777 (patch)
tree5362432935066ca40a314e4f6c02f60cc3c194f3
parentb2119d8931b054fe85cd80c02a5c9db033f61ab3 (diff)
parent56a5592ea034300c241505f32f4ed6eab673f223 (diff)
downloaddexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.tar
dexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.tar.gz
dexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.tar.bz2
dexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.tar.lz
dexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.tar.xz
dexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.tar.zst
dexon-fad21fb4a58fd3466a6a14d36eee11a000da6777.zip
Merge pull request #963 from Gustav-Simonsson/fix_keystore_crypto_comments
Update keystore code comments
-rw-r--r--crypto/key_store_passphrase.go13
1 files changed, 7 insertions, 6 deletions
diff --git a/crypto/key_store_passphrase.go b/crypto/key_store_passphrase.go
index d9a5a81f9..782f92bf1 100644
--- a/crypto/key_store_passphrase.go
+++ b/crypto/key_store_passphrase.go
@@ -28,21 +28,22 @@ the private key is encrypted and on disk uses another JSON encoding.
Cryptography:
-1. Encryption key is first 16 bytes of SHA3-256 of first 16 bytes of
- scrypt derived key from user passphrase. Scrypt parameters
+1. Encryption key is first 16 bytes of scrypt derived key
+ from user passphrase. Scrypt parameters
(work factors) [1][2] are defined as constants below.
2. Scrypt salt is 32 random bytes from CSPRNG.
- It's stored in plain next to ciphertext in key file.
-3. MAC is SHA3-256 of concatenation of ciphertext and last 16 bytes of scrypt derived key.
+ It's stored in plain next in the key file.
+3. MAC is SHA3-256 of concatenation of ciphertext and
+ last 16 bytes of scrypt derived key.
4. Plaintext is the EC private key bytes.
5. Encryption algo is AES 128 CBC [3][4]
6. CBC IV is 16 random bytes from CSPRNG.
- It's stored in plain next to ciphertext in key file.
+ It's stored in plain next in the key file.
7. Plaintext padding is PKCS #7 [5][6]
Encoding:
-1. On disk, the ciphertext, MAC, salt and IV are encoded in a nested JSON object.
+1. On disk, the ciphertext, MAC, salt and IV are encoded in a JSON object.
cat a key file to see the structure.
2. byte arrays are base64 JSON strings.
3. The EC private key bytes are in uncompressed form [7].