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 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