bitcoin-cigs 0.0.5 → 0.0.6

Sign up to get free protection for your applications and to get access to all the features.
data/Gemfile.lock CHANGED
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bitcoin-cigs (0.0.5)
4
+ bitcoin-cigs (0.0.6)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1,3 +1,3 @@
1
1
  module BitcoinCigs
2
- VERSION = "0.0.5"
2
+ VERSION = "0.0.6"
3
3
  end
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
- nil
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})
@@ -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.5
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: 2013-12-10 00:00:00.000000000 Z
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: !ruby/object:Gem::Requirement
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: !ruby/object:Gem::Requirement
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.21
89
+ rubygems_version: 1.8.11
100
90
  signing_key:
101
91
  specification_version: 3
102
92
  summary: Create and Verify Bitcoin Signatures