money-tree 0.10.0 → 0.11.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,10 +1,10 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe MoneyTree::PrivateKey do
4
4
  before do
5
5
  @key = MoneyTree::PrivateKey.new key: "5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b"
6
6
  end
7
-
7
+
8
8
  describe "to_hex" do
9
9
  it "has 64 characters" do
10
10
  # must always be 64 characters - leading zeroes need to be preserved!
@@ -15,81 +15,81 @@ describe MoneyTree::PrivateKey do
15
15
  master = MoneyTree::Master.new seed_hex: "9cf6b6e8451c7d551cb402e2997566e5c7c258543eadb184f9f39322b2e6959b"
16
16
  expect(master.node_for_path("m/427").private_key.to_hex.length).to eql(64)
17
17
  end
18
-
18
+
19
19
  it "is a valid hex" do
20
- expect(@key.to_hex).to eql('5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b' )
20
+ expect(@key.to_hex).to eql("5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b")
21
21
  end
22
22
  end
23
-
23
+
24
24
  describe "to_wif" do
25
25
  it "is a 52 character base58 key" do
26
26
  expect(@key.to_wif.length).to eql(52)
27
27
  end
28
-
28
+
29
29
  it "starts with K or L" do
30
30
  expect(%w(K L)).to include(@key.to_wif[0])
31
31
  end
32
-
32
+
33
33
  it "is a valid compressed wif" do
34
- expect(@key.to_wif).to eql('KzPkwAXJ4wtXHnbamTaJqoMrzwCUUJaqhUxnqYhnZvZH6KhgmDPK' )
34
+ expect(@key.to_wif).to eql("KzPkwAXJ4wtXHnbamTaJqoMrzwCUUJaqhUxnqYhnZvZH6KhgmDPK")
35
35
  end
36
36
  end
37
-
37
+
38
38
  describe "to_wif(compressed: false)" do
39
39
  it "is a 51 character base58 key" do
40
40
  expect(@key.to_wif(compressed: false).length).to eql(51)
41
41
  end
42
-
42
+
43
43
  it "starts with 5" do
44
- expect(@key.to_wif(compressed: false)[0]).to eql('5')
44
+ expect(@key.to_wif(compressed: false)[0]).to eql("5")
45
45
  end
46
-
46
+
47
47
  it "is valid" do
48
- expect(@key.to_wif(compressed: false)).to eql('5JXz5ZyFk31oHVTQxqce7yitCmTAPxBqeGQ4b7H3Aj3L45wUhoa')
48
+ expect(@key.to_wif(compressed: false)).to eql("5JXz5ZyFk31oHVTQxqce7yitCmTAPxBqeGQ4b7H3Aj3L45wUhoa")
49
49
  end
50
50
  end
51
-
51
+
52
52
  describe "from_wif(wif)" do
53
53
  it "returns the key from a wif" do
54
- expect(@key.from_wif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ")).to eql('0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d')
54
+ expect(@key.from_wif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTLvyTJ")).to eql("0c28fca386c7a227600b2fe50b7cae11ec86d3bf1fbe471be89827e19d72aa1d")
55
55
  end
56
-
56
+
57
57
  it "raises an error on bad checksum" do
58
58
  expect { @key.from_wif("5HueCGU8rMjxEXxiPuD5BDku4MkFqeZyd4dZ1jvhTVqvbTBADTJ") }.to raise_error(MoneyTree::Key::InvalidWIFFormat)
59
59
  end
60
60
  end
61
-
61
+
62
62
  describe "to_base64" do
63
63
  it "has 44 characters" do
64
64
  expect(@key.to_base64.length).to eql(44)
65
65
  end
66
-
66
+
67
67
  it "is a valid base64" do
68
- expect(@key.to_base64).to eql('Xq5Tdftfeg6mUFZjY776KDDvRBvcsZGYrfMY+u6G1ks=' )
68
+ expect(@key.to_base64).to eql("Xq5Tdftfeg6mUFZjY776KDDvRBvcsZGYrfMY+u6G1ks=")
69
69
  end
70
70
  end
71
-
71
+
72
72
  describe "from_base64(base64_key)" do
73
73
  it "parses base64 key" do
74
74
  @key = MoneyTree::PrivateKey.new(key: "Xq5Tdftfeg6mUFZjY776KDDvRBvcsZGYrfMY+u6G1ks=")
75
75
  expect(@key.to_hex).to eql("5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b")
76
76
  end
77
-
77
+
78
78
  it "returns the key from base64 encoding" do
79
- expect(@key.from_base64("Xq5Tdftfeg6mUFZjY776KDDvRBvcsZGYrfMY+u6G1ks=")).to eql('5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b')
79
+ expect(@key.from_base64("Xq5Tdftfeg6mUFZjY776KDDvRBvcsZGYrfMY+u6G1ks=")).to eql("5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b")
80
80
  end
81
-
81
+
82
82
  it "raises an error on bad encoding" do
83
83
  expect { @key.from_base64("Xq5Tdftfeg6mUFZjY776KD&%#BbadBADrfMY+u6G1ks=") }.to raise_error(MoneyTree::Key::InvalidBase64Format)
84
84
  end
85
85
  end
86
-
86
+
87
87
  describe "valid?(eckey)" do
88
88
  it "checks for a valid key" do
89
89
  expect(@key.valid?).to be_truthy
90
90
  end
91
91
  end
92
-
92
+
93
93
  describe "parse_raw_key" do
94
94
  it "returns error if key is not Bignum, hex, base64, or wif formatted" do
95
95
  expect { @key = MoneyTree::PrivateKey.new(key: "Thisisnotakey") }.to raise_error(MoneyTree::Key::KeyFormatNotFound)
@@ -109,12 +109,12 @@ describe MoneyTree::PrivateKey do
109
109
 
110
110
  context "testnet" do
111
111
  before do
112
- @key = MoneyTree::PrivateKey.new key: 'cRhes8SBnsF6WizphaRKQKZZfDniDa9Bxcw31yKeEC1KDExhxFgD'
112
+ @key = MoneyTree::PrivateKey.new key: "cRhes8SBnsF6WizphaRKQKZZfDniDa9Bxcw31yKeEC1KDExhxFgD"
113
113
  end
114
114
 
115
115
  describe "to_wif" do
116
116
  it "returns same wif" do
117
- expect(@key.to_wif(network: :bitcoin_testnet)).to eql('cRhes8SBnsF6WizphaRKQKZZfDniDa9Bxcw31yKeEC1KDExhxFgD')
117
+ expect(@key.to_wif(network: :bitcoin_testnet)).to eql("cRhes8SBnsF6WizphaRKQKZZfDniDa9Bxcw31yKeEC1KDExhxFgD")
118
118
  end
119
119
  end
120
120
  end
@@ -1,111 +1,140 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe MoneyTree::PublicKey do
4
-
5
4
  describe "with a private key" do
6
5
  before do
7
6
  @private_key = MoneyTree::PrivateKey.new key: "5eae5375fb5f7a0ea650566363befa2830ef441bdcb19198adf318faee86d64b"
8
7
  @key = MoneyTree::PublicKey.new @private_key
9
8
  end
10
-
9
+
11
10
  describe "to_hex(compressed: false)" do
12
11
  it "has 65 bytes" do
13
12
  expect(@key.uncompressed.to_hex.length).to eql(130)
14
13
  end
15
-
14
+
16
15
  it "is a valid hex" do
17
- expect(@key.uncompressed.to_hex).to eql('042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4' )
16
+ expect(@key.uncompressed.to_hex).to eql("042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4")
18
17
  end
19
18
  end
20
-
19
+
21
20
  describe "to_hex" do
22
21
  it "has 33 bytes" do
23
22
  expect(@key.to_hex.length).to eql(66)
24
23
  end
25
-
24
+
26
25
  it "is a valid compressed hex" do
27
- expect(@key.to_hex).to eql('022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b' )
26
+ expect(@key.to_hex).to eql("022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b")
28
27
  end
29
28
  end
30
-
29
+
31
30
  describe "to_fingerprint" do
32
31
  it "returns a valid fingerprint" do
33
32
  expect(@key.to_fingerprint).to eql("1fddf42e")
34
33
  end
35
34
  end
36
-
35
+
37
36
  describe "to_address(compressed: false)" do
38
37
  it "has 34 characters" do
39
38
  expect(@key.uncompressed.to_address.length).to eql(34)
40
39
  end
41
-
40
+
41
+ it "is a valid bitcoin address" do
42
+ expect(@key.uncompressed.to_address).to eql("133bJA2xoVqBUsiR3uSkciMo5r15fLAaZg")
43
+ end
44
+ end
45
+
46
+ describe "to_bech32_address" do
47
+ it "has 42 characters" do
48
+ expect(@key.to_bech32_address.length).to eql(42)
49
+ end
50
+
42
51
  it "is a valid bitcoin address" do
43
- expect(@key.uncompressed.to_address).to eql('133bJA2xoVqBUsiR3uSkciMo5r15fLAaZg' )
52
+ expect(@key.to_bech32_address).to eql("bc1qrlwlgt5d0sdtq882qvk3jc0sywucn76fwcmqma")
44
53
  end
45
54
  end
46
-
55
+
47
56
  describe "to_compressed_address" do
48
57
  it "has 34 characters" do
49
58
  expect(@key.to_address.length).to eql(34)
50
59
  end
51
-
60
+
52
61
  it "is a valid compressed bitcoin address" do
53
- expect(@key.to_address).to eql('13uVqa35BMo4mYq9LiZrXVzoz9EFZ6aoXe' )
62
+ expect(@key.to_address).to eql("13uVqa35BMo4mYq9LiZrXVzoz9EFZ6aoXe")
63
+ end
64
+ end
65
+
66
+ describe "to_p2wpkh_p2sh" do
67
+ it "has 34 characters" do
68
+ expect(@key.to_p2wpkh_p2sh.length).to eql(34)
69
+ end
70
+
71
+ it "is a valid p2wpkh_p2sh bitcoin address" do
72
+ expect(@key.to_p2wpkh_p2sh).to eql("31vNN7WVDxjvc5XZVKW3qV4B3nFLxsRPnE")
54
73
  end
55
74
  end
56
75
  end
57
-
76
+
58
77
  describe "without a private key" do
59
78
  before do
60
- @key = MoneyTree::PublicKey.new '042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4'
79
+ @key = MoneyTree::PublicKey.new "042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4"
61
80
  end
62
-
81
+
63
82
  describe "to_hex(compressed: false)" do
64
83
  it "has 65 bytes" do
65
84
  expect(@key.uncompressed.to_hex.length).to eql(130)
66
85
  end
67
-
86
+
68
87
  it "is a valid hex" do
69
- expect(@key.uncompressed.to_hex).to eql('042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4' )
88
+ expect(@key.uncompressed.to_hex).to eql("042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4")
70
89
  end
71
90
  end
72
-
91
+
73
92
  describe "to_hex" do
74
93
  it "has 33 bytes" do
75
94
  expect(@key.compressed.to_hex.length).to eql(66)
76
95
  end
77
-
96
+
78
97
  it "is a valid compressed hex" do
79
- expect(@key.compressed.to_hex).to eql('022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b' )
98
+ expect(@key.compressed.to_hex).to eql("022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b")
80
99
  end
81
100
  end
82
-
101
+
83
102
  describe "to_fingerprint" do
84
103
  it "returns a valid fingerprint" do
85
104
  expect(@key.compressed.to_fingerprint).to eql("1fddf42e")
86
105
  end
87
106
  end
88
-
107
+
89
108
  describe "to_address(compressed: false)" do
90
109
  it "has 34 characters" do
91
110
  expect(@key.uncompressed.to_address.length).to eql(34)
92
111
  end
93
-
112
+
94
113
  it "is a valid bitcoin address" do
95
- expect(@key.uncompressed.to_address).to eql('133bJA2xoVqBUsiR3uSkciMo5r15fLAaZg' )
114
+ expect(@key.uncompressed.to_address).to eql("133bJA2xoVqBUsiR3uSkciMo5r15fLAaZg")
96
115
  end
97
116
  end
98
-
117
+
99
118
  describe "to_compressed_address" do
100
119
  it "has 34 characters" do
101
120
  expect(@key.compressed.to_address.length).to eql(34)
102
121
  end
103
-
122
+
104
123
  it "is a valid compressed bitcoin address" do
105
- expect(@key.compressed.to_address).to eql('13uVqa35BMo4mYq9LiZrXVzoz9EFZ6aoXe' )
124
+ expect(@key.compressed.to_address).to eql("13uVqa35BMo4mYq9LiZrXVzoz9EFZ6aoXe")
106
125
  end
107
126
  end
108
-
127
+
128
+ describe "to_p2wpkh_p2sh" do
129
+ it "has 34 characters" do
130
+ expect(@key.to_p2wpkh_p2sh.length).to eql(34)
131
+ end
132
+
133
+ it "is a valid p2wpkh_p2sh bitcoin address" do
134
+ expect(@key.to_p2wpkh_p2sh).to eql("3JUBTtepUbTZgUtjbde7UANs5cey8N57xa")
135
+ end
136
+ end
137
+
109
138
  describe "#compression" do
110
139
  it "returns current compression setting" do
111
140
  @key.compression = :uncompressed
@@ -115,18 +144,18 @@ describe MoneyTree::PublicKey do
115
144
  end
116
145
  end
117
146
  end
118
-
147
+
119
148
  describe "with a bad key" do
120
149
  it "raises KeyFormatNotFound" do
121
- expect { @key = MoneyTree::PublicKey.new 'THISISNOTAVALIDKEY' }.to raise_error(MoneyTree::Key::KeyFormatNotFound)
150
+ expect { @key = MoneyTree::PublicKey.new "THISISNOTAVALIDKEY" }.to raise_error(MoneyTree::Key::KeyFormatNotFound)
122
151
  end
123
152
  end
124
153
 
125
154
  describe "recalcuating public key" do
126
155
  it "produces same results" do
127
156
  results = []
128
- 100.times do
129
- results << MoneyTree::PublicKey.new('042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4').to_s
157
+ 100.times do
158
+ results << MoneyTree::PublicKey.new("042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4").to_s
130
159
  end
131
160
  expect(results.uniq.length).to eql(1)
132
161
  end
@@ -134,7 +163,7 @@ describe MoneyTree::PublicKey do
134
163
 
135
164
  describe "#uncompressed" do
136
165
  before do
137
- @key = MoneyTree::PublicKey.new('022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b')
166
+ @key = MoneyTree::PublicKey.new("022dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b")
138
167
  end
139
168
 
140
169
  it "does not mutate key" do
@@ -147,7 +176,7 @@ describe MoneyTree::PublicKey do
147
176
 
148
177
  describe "#compressed" do
149
178
  before do
150
- @key = MoneyTree::PublicKey.new('042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4')
179
+ @key = MoneyTree::PublicKey.new("042dfc2557a007c93092c2915f11e8aa70c4f399a6753e2e908330014091580e4b11203096f1a1c5276a73f91b9465357004c2103cc42c63d6d330df589080d2e4")
151
180
  end
152
181
 
153
182
  it "does not mutate key" do
@@ -158,8 +187,20 @@ describe MoneyTree::PublicKey do
158
187
  end
159
188
  end
160
189
 
190
+ context "wobine's blackboard 101 series" do
191
+ # ref https://github.com/wobine/blackboard101/blob/e991ea0b98fd26059bf3806e5749b5e5f737e791/EllipticCurvesPart4-PrivateKeyToPublicKey.py
192
+ subject(:wobine) { MoneyTree::PrivateKey.new key: "A0DC65FFCA799873CBEA0AC274015B9526505DAAAED385155425F7337704883E" }
193
+
194
+ it "always recovers wobine's public keys" do
195
+ expect(wobine.key).to eq "a0dc65ffca799873cbea0ac274015b9526505daaaed385155425f7337704883e"
196
+ public_key = MoneyTree::PublicKey.new wobine
197
+ expect(public_key.key).to eq "020791dc70b75aa995213244ad3f4886d74d61ccd3ef658243fcad14c9ccee2b0a"
198
+ expect(public_key.uncompressed.to_hex).to eq "040791dc70b75aa995213244ad3f4886d74d61ccd3ef658243fcad14c9ccee2b0aa762fbc6ac0921b8f17025bb8458b92794ae87a133894d70d7995fc0b6b5ab90"
199
+ end
200
+ end
201
+
161
202
  context "testnet" do
162
- context 'with private key' do
203
+ context "with private key" do
163
204
  before do
164
205
  @private_key = MoneyTree::PrivateKey.new
165
206
  @key = MoneyTree::PublicKey.new(@private_key)
@@ -174,9 +215,9 @@ describe MoneyTree::PublicKey do
174
215
  end
175
216
  end
176
217
 
177
- context 'without private key' do
218
+ context "without private key" do
178
219
  before do
179
- @key = MoneyTree::PublicKey.new('0297b033ba894611345a0e777861237ef1632370fbd58ebe644eb9f3714e8fe2bc')
220
+ @key = MoneyTree::PublicKey.new("0297b033ba894611345a0e777861237ef1632370fbd58ebe644eb9f3714e8fe2bc")
180
221
  end
181
222
 
182
223
  it "should have an address starting with m or n" do
@@ -1,4 +1,4 @@
1
- require 'spec_helper'
1
+ require "spec_helper"
2
2
 
3
3
  describe MoneyTree::Support do
4
4
  include MoneyTree::Support
@@ -10,20 +10,20 @@ describe MoneyTree::Support do
10
10
  expect(sha256("8147786c4d15106333bf278d71dadaf1079ef2d2440a4dde37d747ded5403592")).to eql("507a5b8dfed0fc6fe8801743720cedec06aa5c6fca72b07c49964492fb98a714")
11
11
  end
12
12
  end
13
-
13
+
14
14
  describe "ripemd160(str)" do
15
15
  it "properly calculates ripemd160 hash" do
16
16
  expect(ripemd160("abc", ascii: true)).to eql("8eb208f7e05d987a9b044a8e98c6b087f15a0bfc")
17
17
  expect(ripemd160("e8026715af68676e0287ec9aa774f8103e4bddd5505b209263a8ff97c6ea29cc")).to eql("166db6510884918f31a9d246404760db8154bf84")
18
18
  end
19
19
  end
20
-
20
+
21
21
  describe "hmac_sha512_hex(key, message)" do
22
22
  it "properly calculates hmac sha512" do
23
23
  expect(hmac_sha512_hex("Jefe", "what do ya want for nothing?")).to eql("164b7a7bfcf819e2e395fbe73b56e0a387bd64222e831fd610270cd7ea2505549758bf75c05a994a6d034f65f8f0e6fdcaeab1a34d4a6b4b636e070a38bce737")
24
24
  end
25
25
  end
26
-
26
+
27
27
  describe "hex_to_int" do
28
28
  it "converts hex to integer" do
29
29
  expect(hex_to_int("abcdef0123456789")).to eql(12379813738877118345)
data/spec/spec_helper.rb CHANGED
@@ -1,3 +1,15 @@
1
- require 'simplecov'
2
- require 'money-tree'
3
- require 'pry'
1
+ # use the local version of the code instead of a globally installed gem
2
+ $LOAD_PATH.unshift File.expand_path("../../lib", __FILE__)
3
+
4
+ # only run coverage reports on github actions
5
+ if ENV["COVERAGE"]
6
+ require "simplecov"
7
+ SimpleCov.start
8
+ require "codecov"
9
+ SimpleCov.formatter = SimpleCov::Formatter::Codecov
10
+ end
11
+
12
+ require "money-tree"
13
+
14
+ RSpec.configure do |config|
15
+ end
metadata CHANGED
@@ -1,156 +1,35 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: money-tree
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.10.0
4
+ version: 0.11.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Micah Winkelspecht
8
- autorequire:
8
+ - Afri Schoedon
9
+ autorequire:
9
10
  bindir: bin
10
- cert_chain:
11
- - |
12
- -----BEGIN CERTIFICATE-----
13
- MIIEHDCCAoSgAwIBAgIBATANBgkqhkiG9w0BAQsFADAcMRowGAYDVQQDDBFtYXR0
14
- L0RDPWdlbS9EQz1jbzAeFw0xODA1MzAyMTQwNDZaFw0xOTA1MzAyMTQwNDZaMBwx
15
- GjAYBgNVBAMMEW1hdHQvREM9Z2VtL0RDPWNvMIIBojANBgkqhkiG9w0BAQEFAAOC
16
- AY8AMIIBigKCAYEAxfbjMHFlxA2P+4YWPagKoGAMi4078imgXdFbD3Rloe6cGfYp
17
- IMUQitiHrKi6fhSE0UjXmoP3qnYFddm1enN9zUAFRhHWv7xpINqSqss4PYAb5Anl
18
- RYZu3jromop5aVodi15HUfu5z27MvBm4rAaN/dDRfh/rT2hDbTTh0HmvEaPUDfX6
19
- TyflAttfabFvtY4qsD+ao8tks0DytqyuEWZ0tvQ6upOgHRNNuYDwDZB1T9v2dq2w
20
- 3goJFmOKBMMn7UH8WMjD3HiOuRD4tWhq5xWLjBqjzFlVPlZPgdCNyXeMMnLXER98
21
- NY35cVWFFuqG+kZwy4MFKdE9WFTocLZxLFo0VVTNSpPara9HirbHtIo9jZNuop4S
22
- g4JTf1F8dIWYii3sXoAYZfkl6rHVRP0G/OV5LcTfSS3QkmI5hNltz5FZzc+qI6S1
23
- rTR1ZwTy1rRI3coFY7vDRaFWBoMbbo/DytgCE3+rfbVDxQrJa4aZ0iYDhu8LXEA1
24
- VTtpf1EWYCOsYE1TAgMBAAGjaTBnMAkGA1UdEwQCMAAwCwYDVR0PBAQDAgSwMB0G
25
- A1UdDgQWBBQ6QoDNre7LFgOukH2Cv+RqZyfUzjAWBgNVHREEDzANgQttYXR0QGdl
26
- bS5jbzAWBgNVHRIEDzANgQttYXR0QGdlbS5jbzANBgkqhkiG9w0BAQsFAAOCAYEA
27
- kOxYnOsB+NwHwLc2lHEZ8ubxanq2qIZDhvVQ4M31gwmba43xO7vq0ktFxYRvozs4
28
- 74dQ6bmY2e7njoFgeutyJwxulA+BC71mDQA1s4WsZo7Z2TRgB0GViVqHrzq+jY+M
29
- p9mTHQqKH+2j0P9T4DXSzq4qOaBA3YROAwAzYI9N8MObeWkRt2pZ4zYQrAniP2nd
30
- wzXs/G5lWbbntVcvQOfAAXBipSJ3X5P2EGpUytP9ZpGdezY5HZzuiJFcmCf1CM3t
31
- VX4NZjbJak9gOY0AFD0Aw497sYenm0VBExclOmeRuZLffpWteTTL//utpG3bbFPl
32
- jQ78uzsrexYTYW5IshjfSIf3TZxm50Z45pyOTow5EOP1Nd7OmKOcI8hrLGv5+AlD
33
- hCnomUTUNsM4Rjwl5rzQiIn3ezv6+0tlg4rWJmVTuOGwcHk/oj1In2sPjCqm0pgx
34
- TLnMa8gr6aUpuHR5s2N4ZH0Q2YIsaD6cv7DYXt+G4MRut3njOYHfkqsSVykO6hvr
35
- -----END CERTIFICATE-----
36
- date: 2018-05-30 00:00:00.000000000 Z
37
- dependencies:
38
- - !ruby/object:Gem::Dependency
39
- name: ffi
40
- requirement: !ruby/object:Gem::Requirement
41
- requirements:
42
- - - ">="
43
- - !ruby/object:Gem::Version
44
- version: '0'
45
- type: :runtime
46
- prerelease: false
47
- version_requirements: !ruby/object:Gem::Requirement
48
- requirements:
49
- - - ">="
50
- - !ruby/object:Gem::Version
51
- version: '0'
52
- - !ruby/object:Gem::Dependency
53
- name: bundler
54
- requirement: !ruby/object:Gem::Requirement
55
- requirements:
56
- - - "~>"
57
- - !ruby/object:Gem::Version
58
- version: '1.3'
59
- type: :development
60
- prerelease: false
61
- version_requirements: !ruby/object:Gem::Requirement
62
- requirements:
63
- - - "~>"
64
- - !ruby/object:Gem::Version
65
- version: '1.3'
66
- - !ruby/object:Gem::Dependency
67
- name: rake
68
- requirement: !ruby/object:Gem::Requirement
69
- requirements:
70
- - - ">="
71
- - !ruby/object:Gem::Version
72
- version: '0'
73
- type: :development
74
- prerelease: false
75
- version_requirements: !ruby/object:Gem::Requirement
76
- requirements:
77
- - - ">="
78
- - !ruby/object:Gem::Version
79
- version: '0'
80
- - !ruby/object:Gem::Dependency
81
- name: rspec
82
- requirement: !ruby/object:Gem::Requirement
83
- requirements:
84
- - - ">="
85
- - !ruby/object:Gem::Version
86
- version: '0'
87
- type: :development
88
- prerelease: false
89
- version_requirements: !ruby/object:Gem::Requirement
90
- requirements:
91
- - - ">="
92
- - !ruby/object:Gem::Version
93
- version: '0'
94
- - !ruby/object:Gem::Dependency
95
- name: simplecov
96
- requirement: !ruby/object:Gem::Requirement
97
- requirements:
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: '0'
101
- type: :development
102
- prerelease: false
103
- version_requirements: !ruby/object:Gem::Requirement
104
- requirements:
105
- - - ">="
106
- - !ruby/object:Gem::Version
107
- version: '0'
108
- - !ruby/object:Gem::Dependency
109
- name: coveralls
110
- requirement: !ruby/object:Gem::Requirement
111
- requirements:
112
- - - ">="
113
- - !ruby/object:Gem::Version
114
- version: '0'
115
- type: :development
116
- prerelease: false
117
- version_requirements: !ruby/object:Gem::Requirement
118
- requirements:
119
- - - ">="
120
- - !ruby/object:Gem::Version
121
- version: '0'
122
- - !ruby/object:Gem::Dependency
123
- name: pry
124
- requirement: !ruby/object:Gem::Requirement
125
- requirements:
126
- - - ">="
127
- - !ruby/object:Gem::Version
128
- version: '0'
129
- type: :development
130
- prerelease: false
131
- version_requirements: !ruby/object:Gem::Requirement
132
- requirements:
133
- - - ">="
134
- - !ruby/object:Gem::Version
135
- version: '0'
11
+ cert_chain: []
12
+ date: 2022-11-03 00:00:00.000000000 Z
13
+ dependencies: []
136
14
  description: A Ruby Gem implementation of Bitcoin HD Wallets
137
15
  email:
138
16
  - winkelspecht@gmail.com
17
+ - gems@q9f.cc
139
18
  executables: []
140
19
  extensions: []
141
20
  extra_rdoc_files: []
142
21
  files:
22
+ - ".github/donation_btc_qr_code.gif"
23
+ - ".github/workflows/spec.yml"
143
24
  - ".gitignore"
144
25
  - ".rspec"
145
- - ".simplecov"
146
- - ".travis.yml"
147
26
  - Gemfile
148
27
  - LICENSE.txt
149
28
  - README.md
150
29
  - Rakefile
151
30
  - certs/mattatgemco.pem
31
+ - checksum/money-tree-0.11.0.gem.sha512
152
32
  - checksum/money-tree-0.9.0.gem.sha512
153
- - donation_btc_qr_code.gif
154
33
  - lib/money-tree.rb
155
34
  - lib/money-tree/address.rb
156
35
  - lib/money-tree/key.rb
@@ -160,18 +39,23 @@ files:
160
39
  - lib/money-tree/version.rb
161
40
  - lib/openssl_extensions.rb
162
41
  - money-tree.gemspec
163
- - spec/lib/money-tree/address_spec.rb
164
- - spec/lib/money-tree/node_spec.rb
165
- - spec/lib/money-tree/openssl_extensions_spec.rb
166
- - spec/lib/money-tree/private_key_spec.rb
167
- - spec/lib/money-tree/public_key_spec.rb
168
- - spec/lib/money-tree/support_spec.rb
42
+ - spec/money-tree/address_spec.rb
43
+ - spec/money-tree/money_tree_spec.rb
44
+ - spec/money-tree/node_spec.rb
45
+ - spec/money-tree/openssl_extensions_spec.rb
46
+ - spec/money-tree/private_key_spec.rb
47
+ - spec/money-tree/public_key_spec.rb
48
+ - spec/money-tree/support_spec.rb
169
49
  - spec/spec_helper.rb
170
- homepage: https://github.com/gemhq/money-tree
50
+ homepage: https://github.com/GemHQ/money-tree
171
51
  licenses:
172
52
  - MIT
173
- metadata: {}
174
- post_install_message:
53
+ metadata:
54
+ homepage_uri: https://github.com/GemHQ/money-tree
55
+ source_code_uri: https://github.com/GemHQ/money-tree
56
+ github_repo: https://github.com/GemHQ/money-tree
57
+ bug_tracker_uri: https://github.com/GemHQ/money-tree/issues
58
+ post_install_message:
175
59
  rdoc_options: []
176
60
  require_paths:
177
61
  - lib
@@ -179,23 +63,26 @@ required_ruby_version: !ruby/object:Gem::Requirement
179
63
  requirements:
180
64
  - - ">="
181
65
  - !ruby/object:Gem::Version
182
- version: '0'
66
+ version: '2.6'
67
+ - - "<"
68
+ - !ruby/object:Gem::Version
69
+ version: '4.0'
183
70
  required_rubygems_version: !ruby/object:Gem::Requirement
184
71
  requirements:
185
72
  - - ">="
186
73
  - !ruby/object:Gem::Version
187
74
  version: '0'
188
75
  requirements: []
189
- rubyforge_project:
190
- rubygems_version: 2.7.7
191
- signing_key:
76
+ rubygems_version: 3.3.23
77
+ signing_key:
192
78
  specification_version: 4
193
79
  summary: Bitcoin Hierarchical Deterministic Wallets in Ruby! (Bitcoin standard BIP0032)
194
80
  test_files:
195
- - spec/lib/money-tree/address_spec.rb
196
- - spec/lib/money-tree/node_spec.rb
197
- - spec/lib/money-tree/openssl_extensions_spec.rb
198
- - spec/lib/money-tree/private_key_spec.rb
199
- - spec/lib/money-tree/public_key_spec.rb
200
- - spec/lib/money-tree/support_spec.rb
81
+ - spec/money-tree/address_spec.rb
82
+ - spec/money-tree/money_tree_spec.rb
83
+ - spec/money-tree/node_spec.rb
84
+ - spec/money-tree/openssl_extensions_spec.rb
85
+ - spec/money-tree/private_key_spec.rb
86
+ - spec/money-tree/public_key_spec.rb
87
+ - spec/money-tree/support_spec.rb
201
88
  - spec/spec_helper.rb
checksums.yaml.gz.sig DELETED
Binary file
data/.simplecov DELETED
@@ -1,7 +0,0 @@
1
- require 'coveralls'
2
-
3
- SimpleCov.formatter = SimpleCov::Formatter::MultiFormatter.new([
4
- SimpleCov::Formatter::HTMLFormatter,
5
- Coveralls::SimpleCov::Formatter
6
- ])
7
- SimpleCov.start
data/.travis.yml DELETED
@@ -1,3 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.0.0