aboutsummaryrefslogtreecommitdiffstats
path: root/crypto/key_store_passphrase.go
diff options
context:
space:
mode:
authorGustav Simonsson <gustav.simonsson@gmail.com>2015-02-05 00:06:06 +0800
committerGustav Simonsson <gustav.simonsson@gmail.com>2015-02-11 05:49:28 +0800
commit8c056aebe10c8c56f7c25889780b04e00f9ca00b (patch)
tree9186028c43f33dec61d21924866248da2c559330 /crypto/key_store_passphrase.go
parente40c1c62ce0c2d9567066d84ea74fd24b424a81a (diff)
downloadgo-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.tar
go-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.tar.gz
go-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.tar.bz2
go-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.tar.lz
go-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.tar.xz
go-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.tar.zst
go-tangerine-8c056aebe10c8c56f7c25889780b04e00f9ca00b.zip
Set both key generation and ECDSA nonce to use mixed entropy
* Move random entropy functions to new package randentropy * Add function to get n bytes entropy where up to first 32 bytes are mixed with OS entropy sources
Diffstat (limited to 'crypto/key_store_passphrase.go')
-rw-r--r--crypto/key_store_passphrase.go15
1 files changed, 3 insertions, 12 deletions
diff --git a/crypto/key_store_passphrase.go b/crypto/key_store_passphrase.go
index 0862b7886..74408f874 100644
--- a/crypto/key_store_passphrase.go
+++ b/crypto/key_store_passphrase.go
@@ -68,10 +68,10 @@ import (
"code.google.com/p/go.crypto/scrypt"
"crypto/aes"
"crypto/cipher"
- crand "crypto/rand"
"encoding/hex"
"encoding/json"
"errors"
+ "github.com/ethereum/go-ethereum/crypto/randentropy"
"io"
"os"
"path"
@@ -116,7 +116,7 @@ func (ks keyStorePassphrase) GetKeyAddresses() (addresses [][]byte, err error) {
func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) {
authArray := []byte(auth)
- salt := GetEntropyCSPRNG(32)
+ salt := randentropy.GetEntropyMixed(32)
derivedKey, err := scrypt.Key(authArray, salt, scryptN, scryptr, scryptp, scryptdkLen)
if err != nil {
return err
@@ -131,7 +131,7 @@ func (ks keyStorePassphrase) StoreKey(key *Key, auth string) (err error) {
return err
}
- iv := GetEntropyCSPRNG(aes.BlockSize) // 16
+ iv := randentropy.GetEntropyMixed(aes.BlockSize) // 16
AES256CBCEncrypter := cipher.NewCBCEncrypter(AES256Block, iv)
cipherText := make([]byte, len(toEncrypt))
AES256CBCEncrypter.CryptBlocks(cipherText, toEncrypt)
@@ -196,12 +196,3 @@ func DecryptKey(ks keyStorePassphrase, keyAddr []byte, auth string) (keyBytes []
}
return keyBytes, keyId, err
}
-
-func GetEntropyCSPRNG(n int) []byte {
- mainBuff := make([]byte, n)
- _, err := io.ReadFull(crand.Reader, mainBuff)
- if err != nil {
- panic("key generation: reading from crypto/rand failed: " + err.Error())
- }
- return mainBuff
-}