bitcoin-cigs 0.0.5 → 0.0.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/Gemfile.lock +1 -1
- data/lib/bitcoin_cigs/version.rb +1 -1
- data/lib/bitcoin_cigs.rb +20 -4
- data/spec/bitcoin_cigs_spec.rb +47 -0
- metadata +7 -17
data/Gemfile.lock
CHANGED
data/lib/bitcoin_cigs/version.rb
CHANGED
data/lib/bitcoin_cigs.rb
CHANGED
@@ -35,9 +35,27 @@ module BitcoinCigs
|
|
35
35
|
end
|
36
36
|
|
37
37
|
def verify_message!(address, signature, message, options = {:network => :mainnet})
|
38
|
+
|
38
39
|
decoded_address = decode58(address)
|
39
40
|
raise ::BitcoinCigs::Error.new("Incorrect address or message for signature.") if decoded_address.nil?
|
40
|
-
network_version = str_to_num(decoded_address) >> (8 * 24)
|
41
|
+
# network_version = str_to_num(decoded_address) >> (8 * 24)
|
42
|
+
|
43
|
+
addr = get_signature_address!(signature, message, options)
|
44
|
+
|
45
|
+
raise ::BitcoinCigs::Error.new("Incorrect address or message for signature.") if address != addr
|
46
|
+
|
47
|
+
nil
|
48
|
+
end
|
49
|
+
|
50
|
+
def get_signature_address(signature, message, options = {:network => :mainnet})
|
51
|
+
begin
|
52
|
+
get_signature_address!(signature, message, options)
|
53
|
+
rescue ::BitcoinCigs::Error
|
54
|
+
false
|
55
|
+
end
|
56
|
+
end
|
57
|
+
|
58
|
+
def get_signature_address!(signature, message, options = {:network => :mainnet})
|
41
59
|
|
42
60
|
message = calculate_hash(format_message_to_sign(message))
|
43
61
|
|
@@ -82,10 +100,8 @@ module BitcoinCigs
|
|
82
100
|
|
83
101
|
|
84
102
|
public_key = ::BitcoinCigs::PublicKey.new(g, q, compressed)
|
85
|
-
addr = public_key_to_bc_address(public_key.ser(), NETWORK_VERSION[options[:network]])
|
86
|
-
raise ::BitcoinCigs::Error.new("Incorrect address or message for signature.") if address != addr
|
87
103
|
|
88
|
-
|
104
|
+
public_key_to_bc_address(public_key.ser(), NETWORK_VERSION[options[:network]])
|
89
105
|
end
|
90
106
|
|
91
107
|
def sign_message(wallet_key, message, options = {:network => :mainnet})
|
data/spec/bitcoin_cigs_spec.rb
CHANGED
@@ -194,5 +194,52 @@ describe BitcoinCigs do
|
|
194
194
|
end
|
195
195
|
end
|
196
196
|
end
|
197
|
+
|
198
|
+
describe "get_signature_address!" do
|
199
|
+
subject { BitcoinCigs.get_signature_address!(signature, message, :network => network) }
|
200
|
+
|
201
|
+
context "with valid data" do
|
202
|
+
it "returns correct address" do
|
203
|
+
expect(subject).to eq(address)
|
204
|
+
end
|
205
|
+
end
|
206
|
+
|
207
|
+
context "with invalid signature" do
|
208
|
+
let(:signature) { "invalid" }
|
209
|
+
|
210
|
+
it "raises ::BitcoinCigs::Error" do
|
211
|
+
expect { subject }.to raise_error(::BitcoinCigs::Error, "Bad signature length")
|
212
|
+
end
|
213
|
+
end
|
214
|
+
|
215
|
+
context "with invalid message" do
|
216
|
+
let(:message) { "invalid" }
|
217
|
+
|
218
|
+
it "returns wrong address" do
|
219
|
+
expect(subject).not_to eq(address)
|
220
|
+
end
|
221
|
+
end
|
222
|
+
|
223
|
+
context "with testnet" do
|
224
|
+
use_testnet
|
225
|
+
|
226
|
+
context "with valid data" do
|
227
|
+
it "returns valid address" do
|
228
|
+
expect(subject).to eq(address)
|
229
|
+
end
|
230
|
+
end
|
231
|
+
end
|
232
|
+
end
|
233
|
+
|
234
|
+
describe "get_signature_address" do
|
235
|
+
subject { BitcoinCigs.get_signature_address(signature, message) }
|
236
|
+
|
237
|
+
context "with valid data" do
|
238
|
+
it "returns true" do
|
239
|
+
expect(subject).to eq(address)
|
240
|
+
end
|
241
|
+
end
|
242
|
+
end
|
243
|
+
|
197
244
|
|
198
245
|
end
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitcoin-cigs
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,11 +9,11 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2014-03-02 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rspec
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirement: &70337710906420 !ruby/object:Gem::Requirement
|
17
17
|
none: false
|
18
18
|
requirements:
|
19
19
|
- - ~>
|
@@ -21,15 +21,10 @@ dependencies:
|
|
21
21
|
version: 2.13.0
|
22
22
|
type: :development
|
23
23
|
prerelease: false
|
24
|
-
version_requirements:
|
25
|
-
none: false
|
26
|
-
requirements:
|
27
|
-
- - ~>
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: 2.13.0
|
24
|
+
version_requirements: *70337710906420
|
30
25
|
- !ruby/object:Gem::Dependency
|
31
26
|
name: rake
|
32
|
-
requirement: !ruby/object:Gem::Requirement
|
27
|
+
requirement: &70337710905920 !ruby/object:Gem::Requirement
|
33
28
|
none: false
|
34
29
|
requirements:
|
35
30
|
- - ~>
|
@@ -37,12 +32,7 @@ dependencies:
|
|
37
32
|
version: 10.0.4
|
38
33
|
type: :development
|
39
34
|
prerelease: false
|
40
|
-
version_requirements:
|
41
|
-
none: false
|
42
|
-
requirements:
|
43
|
-
- - ~>
|
44
|
-
- !ruby/object:Gem::Version
|
45
|
-
version: 10.0.4
|
35
|
+
version_requirements: *70337710905920
|
46
36
|
description: Create and Verify Bitcoin Signatures.
|
47
37
|
email:
|
48
38
|
- michaelgpearce@yahoo.com
|
@@ -96,7 +86,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
96
86
|
version: '0'
|
97
87
|
requirements: []
|
98
88
|
rubyforge_project: bitcoin-cigs
|
99
|
-
rubygems_version: 1.8.
|
89
|
+
rubygems_version: 1.8.11
|
100
90
|
signing_key:
|
101
91
|
specification_version: 3
|
102
92
|
summary: Create and Verify Bitcoin Signatures
|