eth 0.4.5 → 0.4.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG.md +14 -1
- data/eth.gemspec +1 -0
- data/lib/eth/key/decrypter.rb +28 -2
- data/lib/eth/version.rb +1 -1
- metadata +16 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0c5f0d8fb53ed83ac74dbcb8d22159f0345adcec
|
4
|
+
data.tar.gz: 6903709ca948490f7060ecef87dd1e213fda1c08
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b4558847999d40a3bde43a4704767bf66afc7a32d719c87f2ee75008879bd73d598225de09980bd0087143b415ef21bc76ed83fd41c192a6a0ba797ad4ac848a
|
7
|
+
data.tar.gz: 111d01b2f8cf20d3a25bfcb9f098b1e643892dfe0d45a90c17d49a477ebca1259a13f775d3d22eaeeb8354aad6246ed5c543dae3b379bbb25fa6f6a42fdc435f
|
data/CHANGELOG.md
CHANGED
@@ -4,7 +4,20 @@ All notable changes to this project will be documented in this file.
|
|
4
4
|
The format is based on [Keep a Changelog](http://keepachangelog.com/)
|
5
5
|
and this project adheres to [Semantic Versioning](http://semver.org/).
|
6
6
|
|
7
|
-
## [
|
7
|
+
## [0.4.6]
|
8
|
+
|
9
|
+
### Added
|
10
|
+
- Support scrypt private key decryption
|
11
|
+
|
12
|
+
## [0.4.5]
|
13
|
+
|
14
|
+
### Changed
|
15
|
+
- Further improve Open SSL configurability
|
16
|
+
|
17
|
+
## [0.4.4]
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
- Support old versions of SSL to help avoid preious breaking changes
|
8
21
|
|
9
22
|
## [0.4.3]
|
10
23
|
|
data/eth.gemspec
CHANGED
@@ -23,6 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
spec.add_dependency 'ffi', '~> 1.0'
|
24
24
|
spec.add_dependency 'money-tree', '~> 0.9'
|
25
25
|
spec.add_dependency 'rlp', '~> 0.7.3'
|
26
|
+
spec.add_dependency 'scrypt', '~> 3.0.5'
|
26
27
|
|
27
28
|
spec.add_development_dependency 'bundler', '~> 1.12'
|
28
29
|
spec.add_development_dependency 'pry', '~> 0.1'
|
data/lib/eth/key/decrypter.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'json'
|
2
|
+
require 'scrypt'
|
2
3
|
|
3
4
|
class Eth::Key::Decrypter
|
4
5
|
include Eth::Utils
|
@@ -24,7 +25,15 @@ class Eth::Key::Decrypter
|
|
24
25
|
attr_reader :data, :key, :password
|
25
26
|
|
26
27
|
def derive_key(password)
|
27
|
-
|
28
|
+
case kdf
|
29
|
+
when 'pbkdf2'
|
30
|
+
@key = OpenSSL::PKCS5.pbkdf2_hmac(password, salt, iterations, key_length, digest)
|
31
|
+
when 'scrypt'
|
32
|
+
# OpenSSL 1.1 inclues OpenSSL::KDF.scrypt, but it is not available usually, otherwise we could do: OpenSSL::KDF.scrypt(password, salt: salt, N: n, r: r, p: p, length: key_length)
|
33
|
+
@key = SCrypt::Engine.scrypt(password, salt, n, r, p, key_length)
|
34
|
+
else
|
35
|
+
raise "Unsupported key derivation function: #{kdf}!"
|
36
|
+
end
|
28
37
|
end
|
29
38
|
|
30
39
|
def check_macs
|
@@ -72,8 +81,24 @@ class Eth::Key::Decrypter
|
|
72
81
|
crypto_data['kdfparams']['c'].to_i
|
73
82
|
end
|
74
83
|
|
84
|
+
def kdf
|
85
|
+
crypto_data['kdf']
|
86
|
+
end
|
87
|
+
|
75
88
|
def key_length
|
76
|
-
|
89
|
+
crypto_data['kdfparams']['dklen'].to_i
|
90
|
+
end
|
91
|
+
|
92
|
+
def n
|
93
|
+
crypto_data['kdfparams']['n'].to_i
|
94
|
+
end
|
95
|
+
|
96
|
+
def r
|
97
|
+
crypto_data['kdfparams']['r'].to_i
|
98
|
+
end
|
99
|
+
|
100
|
+
def p
|
101
|
+
crypto_data['kdfparams']['p'].to_i
|
77
102
|
end
|
78
103
|
|
79
104
|
def digest
|
@@ -83,5 +108,6 @@ class Eth::Key::Decrypter
|
|
83
108
|
def digest_name
|
84
109
|
"sha256"
|
85
110
|
end
|
111
|
+
|
86
112
|
|
87
113
|
end
|
data/lib/eth/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eth
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.4.
|
4
|
+
version: 0.4.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Steve Ellis
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-12-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: digest-sha3
|
@@ -66,6 +66,20 @@ dependencies:
|
|
66
66
|
- - "~>"
|
67
67
|
- !ruby/object:Gem::Version
|
68
68
|
version: 0.7.3
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: scrypt
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: 3.0.5
|
76
|
+
type: :runtime
|
77
|
+
prerelease: false
|
78
|
+
version_requirements: !ruby/object:Gem::Requirement
|
79
|
+
requirements:
|
80
|
+
- - "~>"
|
81
|
+
- !ruby/object:Gem::Version
|
82
|
+
version: 3.0.5
|
69
83
|
- !ruby/object:Gem::Dependency
|
70
84
|
name: bundler
|
71
85
|
requirement: !ruby/object:Gem::Requirement
|