bitcoin-addrgen 0.0.2 → 0.1.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,7 +1,7 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- bitcoin-addrgen (0.0.2)
4
+ bitcoin-addrgen (0.1.0)
5
5
  ffi (~> 1.2.0)
6
6
 
7
7
  GEM
@@ -32,6 +32,7 @@ module GMP
32
32
  attach_function :__gmpz_add, [:pointer, :pointer, :pointer], :void
33
33
  attach_function :__gmpz_add_ui, [:pointer, :pointer, :ulong], :void
34
34
  attach_function :__gmpz_and, [:pointer, :pointer, :pointer], :void
35
+ attach_function :__gmpz_clear, [:pointer], :void
35
36
  attach_function :__gmpz_cmp, [:pointer, :pointer], :int
36
37
  attach_function :__gmpz_cmp_si, [:pointer, :long], :int
37
38
  attach_function :__gmpz_fdiv_q_ui, [:pointer, :pointer, :ulong], :ulong
@@ -42,10 +43,25 @@ module GMP
42
43
  attach_function :__gmpz_neg, [:pointer, :pointer], :void
43
44
  attach_function :__gmpz_pow_ui, [:pointer, :pointer, :ulong], :void
44
45
  attach_function :__gmpz_sub, [:pointer, :pointer, :pointer], :void
46
+
47
+ @ptrlist = []
48
+
49
+ def self.collect(ptr)
50
+ @ptrlist << ptr
51
+ end
52
+
53
+ def self.collect_clear
54
+ @ptrlist.each { |p|
55
+ GMP::__gmpz_clear(p)
56
+ }
57
+ @ptrlist = []
58
+ end
59
+
45
60
  end
46
61
 
47
62
  def gmp_init(str, base)
48
63
  ptr = FFI::MemoryPointer.new :char, 16
64
+ GMP::collect(ptr)
49
65
  GMP::__gmpz_init_set_str(ptr, str, base)
50
66
  ptr
51
67
  end
@@ -56,6 +72,7 @@ end
56
72
 
57
73
  def gmp_add(a, b)
58
74
  ptr = FFI::MemoryPointer.new :char, 16
75
+ GMP::collect(ptr)
59
76
  if a.instance_of? Fixnum
60
77
  GMP::__gmpz_add_ui(ptr, b, a)
61
78
  elsif b.instance_of? Fixnum
@@ -68,6 +85,7 @@ end
68
85
 
69
86
  def gmp_and(a, b)
70
87
  ptr = FFI::MemoryPointer.new :char, 16
88
+ GMP::collect(ptr)
71
89
  GMP::__gmpz_and(ptr, a, b)
72
90
  ptr
73
91
  end
@@ -86,24 +104,28 @@ end
86
104
 
87
105
  def gmp_div(a, b)
88
106
  ptr = FFI::MemoryPointer.new :char, 16
107
+ GMP::collect(ptr)
89
108
  GMP::__gmpz_fdiv_q_ui(ptr, a, b)
90
109
  ptr
91
110
  end
92
111
 
93
112
  def gmp_invert(a, b)
94
113
  ptr = FFI::MemoryPointer.new :char, 16
114
+ GMP::collect(ptr)
95
115
  GMP::__gmpz_invert(ptr, a, b)
96
116
  ptr
97
117
  end
98
118
 
99
119
  def gmp_mod(a, b)
100
120
  ptr = FFI::MemoryPointer.new :char, 16
121
+ GMP::collect(ptr)
101
122
  GMP::__gmpz_fdiv_r(ptr, a, b)
102
123
  ptr
103
124
  end
104
125
 
105
126
  def gmp_mul(a, b)
106
127
  ptr = FFI::MemoryPointer.new :char, 16
128
+ GMP::collect(ptr)
107
129
  if a.instance_of? Fixnum
108
130
  GMP::__gmpz_mul_si(ptr, b, a)
109
131
  elsif b.instance_of? Fixnum
@@ -116,18 +138,21 @@ end
116
138
 
117
139
  def gmp_neg(a)
118
140
  ptr = FFI::MemoryPointer.new :char, 16
141
+ GMP::collect(ptr)
119
142
  GMP::__gmpz_neg(ptr, a)
120
143
  ptr
121
144
  end
122
145
 
123
146
  def gmp_pow(a, b)
124
147
  ptr = FFI::MemoryPointer.new :char, 16
148
+ GMP::collect(ptr)
125
149
  GMP::__gmpz_pow_ui(ptr, a, b)
126
150
  ptr
127
151
  end
128
152
 
129
153
  def gmp_sub(a, b)
130
154
  ptr = FFI::MemoryPointer.new :char, 16
155
+ GMP::collect(ptr)
131
156
  GMP::__gmpz_sub(ptr, a, b)
132
157
  ptr
133
158
  end
@@ -298,6 +323,7 @@ module BitcoinAddrgen
298
323
  n += 2
299
324
  end
300
325
 
326
+ GMP::collect_clear
301
327
  pad + num
302
328
  end
303
329
  end
@@ -1,3 +1,3 @@
1
1
  module BitcoinAddrgen
2
- VERSION = "0.0.2"
2
+ VERSION = "0.1.0"
3
3
  end
@@ -9,28 +9,47 @@ describe BitcoinAddrgen do
9
9
  BitcoinAddrgen.generate_public_address(master_public_key, address_index)
10
10
  end
11
11
 
12
- context "with first address index" do
12
+ context "with address index 0" do
13
13
  let(:address_index) { 0 }
14
-
15
14
  it "generates the correct public address" do
16
15
  expect(subject).to eq('13EfJ1hQBGMBbEwvPa3MLeH6buBhiMSfCC')
17
16
  end
18
17
  end
19
18
 
20
- context "with seventh address index" do
19
+ context "with address index 6" do
21
20
  let(:address_index) { 6 }
22
-
23
21
  it "generates the correct public address" do
24
22
  expect(subject).to eq('1jmA5ySdFz7cDwWb15rWQe63ZUo8spiBa')
25
23
  end
26
24
  end
27
25
 
28
- context "with 10th address index" do
26
+ context "with address index 9" do
29
27
  let(:address_index) { 9 }
30
-
31
28
  it "generates the correct public address" do
32
29
  expect(subject).to eq('1J7yTE8Cm9fMV9nqCjnM6kTTzTkksVic98')
33
30
  end
34
31
  end
32
+
33
+ context "with address index 100" do
34
+ let(:address_index) { 100 }
35
+ it "generates the correct public address" do
36
+ expect(subject).to eq('1LNUmaHWMybREGszq8wiDTULJR3tvsjx7')
37
+ end
38
+ end
39
+
40
+ context "with address index 65537" do
41
+ let(:address_index) { 65537 }
42
+ it "generates the correct public address" do
43
+ expect(subject).to eq('1JnjQQ5LcMDYDLNd31bEU2L5wZ9fipvEQ6')
44
+ end
45
+ end
46
+
47
+ context "with address index 4294967296" do
48
+ let(:address_index) { 4294967296 }
49
+ it "generates the correct public address" do
50
+ expect(subject).to eq('1KJwuVF7hm7EoT1AYJas2WM3yodCzsEhAQ')
51
+ end
52
+ end
53
+
35
54
  end
36
55
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bitcoin-addrgen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.1.0
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2013-07-09 00:00:00.000000000 Z
12
+ date: 2013-08-30 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: ffi