bitcoin-cigs 0.0.6 → 0.0.7

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.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bitcoin-cigs (0.0.6)
4
+ bitcoin-cigs (0.0.7)
5
5
 
6
6
  GEM
7
7
  remote: http://rubygems.org/
@@ -1,4 +1,4 @@
1
- %w(error crypto_helper base_58 curve_fp point public_key private_key signature ec_key).each do |f|
1
+ %w(error crypto_helper compact_int base_58 curve_fp point public_key private_key signature ec_key).each do |f|
2
2
  require File.join(File.dirname(__FILE__), 'bitcoin_cigs', f)
3
3
  end
4
4
 
@@ -115,7 +115,7 @@ module BitcoinCigs
115
115
  def sign_message!(wallet_key, message, options = {:network => :mainnet})
116
116
  private_key = convert_wallet_format_to_bytes!(wallet_key, options[:network])
117
117
 
118
- msg_hash = sha256(sha256(format_msg_to_sign(message)))
118
+ msg_hash = sha256(sha256(format_message_to_sign(message)))
119
119
 
120
120
  ec_key = ::BitcoinCigs::EcKey.new(str_to_num(private_key))
121
121
  private_key = ec_key.private_key
@@ -162,8 +162,8 @@ module BitcoinCigs
162
162
 
163
163
  private
164
164
 
165
- def format_msg_to_sign(message)
166
- return "\x18Bitcoin Signed Message:\n#{message.size.chr}#{message}"
165
+ def format_message_to_sign(message)
166
+ "\x18Bitcoin Signed Message:\n#{::BitcoinCigs::CompactInt.new(message.size).encode}#{message}"
167
167
  end
168
168
 
169
169
  def random_k
@@ -256,10 +256,6 @@ module BitcoinCigs
256
256
  sha256(sha256(d))
257
257
  end
258
258
 
259
- def format_message_to_sign(message)
260
- "\x18Bitcoin Signed Message:\n#{message.length.chr}#{message}"
261
- end
262
-
263
259
  def public_key_to_bc_address(public_key, network_version)
264
260
  h160 = hash_160(public_key)
265
261
 
@@ -0,0 +1,33 @@
1
+ module BitcoinCigs
2
+ class CompactInt
3
+
4
+ def initialize(value)
5
+ @value = value
6
+ end
7
+
8
+ def encode()
9
+ arr = if @value < 253
10
+ [@value]
11
+ elsif @value < (1 << 16)
12
+ [253, *number_to_bytes(@value, 2)]
13
+ elsif value < (1 << 32)
14
+ [254, *number_to_bytes(@value, 4)]
15
+ else
16
+ [255, *number_to_bytes(@value, 8)]
17
+ end
18
+
19
+ arr.pack('C*')
20
+ end
21
+
22
+ private
23
+
24
+ def number_to_bytes(number, size)
25
+ result = []
26
+ size.times do |n|
27
+ result << ((number >> (8 * n)) & 255)
28
+ end
29
+
30
+ result
31
+ end
32
+ end
33
+ end
@@ -1,3 +1,3 @@
1
1
  module BitcoinCigs
2
- VERSION = "0.0.6"
2
+ VERSION = "0.0.7"
3
3
  end
@@ -23,12 +23,21 @@ describe BitcoinCigs do
23
23
  let(:message) { "this is a message" }
24
24
 
25
25
  describe "sign_message!" do
26
- subject { BitcoinCigs.sign_message!(wallet_key, message, :network => network) }
26
+ subject { BitcoinCigs.sign_message!(wallet_key, message, :network => network).tap {|m| puts m} }
27
27
 
28
28
  context "with valid data" do
29
29
  it "generates the correct signature" do
30
30
  expect(BitcoinCigs.verify_message(address, subject, message, :network => network)).to be_true
31
31
  end
32
+
33
+ context "with a message > 252 characters" do
34
+ let(:message) { "a" * 253 }
35
+
36
+ it "generates the correct signature" do
37
+ expect(BitcoinCigs.verify_message(address, subject, message, :network => network)).to be_true
38
+ end
39
+
40
+ end
32
41
  end
33
42
 
34
43
  context "invalid wallet key" do
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.6
4
+ version: 0.0.7
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: 2014-03-02 00:00:00.000000000 Z
12
+ date: 2014-08-11 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
16
- requirement: &70337710906420 !ruby/object:Gem::Requirement
16
+ requirement: &70234363200340 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ~>
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: 2.13.0
22
22
  type: :development
23
23
  prerelease: false
24
- version_requirements: *70337710906420
24
+ version_requirements: *70234363200340
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: rake
27
- requirement: &70337710905920 !ruby/object:Gem::Requirement
27
+ requirement: &70234363199100 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ~>
@@ -32,7 +32,7 @@ dependencies:
32
32
  version: 10.0.4
33
33
  type: :development
34
34
  prerelease: false
35
- version_requirements: *70337710905920
35
+ version_requirements: *70234363199100
36
36
  description: Create and Verify Bitcoin Signatures.
37
37
  email:
38
38
  - michaelgpearce@yahoo.com
@@ -52,6 +52,7 @@ files:
52
52
  - lib/bitcoin-cigs.rb
53
53
  - lib/bitcoin_cigs.rb
54
54
  - lib/bitcoin_cigs/base_58.rb
55
+ - lib/bitcoin_cigs/compact_int.rb
55
56
  - lib/bitcoin_cigs/crypto_helper.rb
56
57
  - lib/bitcoin_cigs/curve_fp.rb
57
58
  - lib/bitcoin_cigs/ec_key.rb