bitcoin-secp256k1 0.1.1
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.
- checksums.yaml +7 -0
- data/.gitignore +4 -0
- data/.gitmodules +3 -0
- data/Gemfile +2 -0
- data/Gemfile.lock +25 -0
- data/LICENSE +21 -0
- data/README.md +29 -0
- data/Rakefile +9 -0
- data/bitcoin-secp256k1.gemspec +23 -0
- data/install_lib.sh +7 -0
- data/lib/secp256k1.rb +19 -0
- data/lib/secp256k1/c.rb +61 -0
- data/lib/secp256k1/ecdsa.rb +47 -0
- data/lib/secp256k1/key.rb +253 -0
- data/lib/secp256k1/utils.rb +21 -0
- data/lib/secp256k1/version.rb +3 -0
- data/test/fixtures/ecdsa_sig.json +999 -0
- data/test/fixtures/pubkey.json +1749 -0
- data/test/secp256k1_test.rb +51 -0
- metadata +122 -0
@@ -0,0 +1,51 @@
|
|
1
|
+
# -*- encoding : ascii-8bit -*-
|
2
|
+
|
3
|
+
$:.unshift File.expand_path('../../lib', __FILE__)
|
4
|
+
|
5
|
+
require 'minitest/autorun'
|
6
|
+
require 'secp256k1'
|
7
|
+
|
8
|
+
require 'json'
|
9
|
+
|
10
|
+
class Secp256k1Test < Minitest::Test
|
11
|
+
include Secp256k1
|
12
|
+
|
13
|
+
def test_ecdsa
|
14
|
+
vec = ecdsa_sig['vectors']
|
15
|
+
pk = PrivateKey.new
|
16
|
+
|
17
|
+
vec.each do |item|
|
18
|
+
seckey = Utils.decode_hex item['privkey']
|
19
|
+
msg32 = Utils.decode_hex item['msg']
|
20
|
+
sig = Utils.decode_hex(item['sig'])[0...-1]
|
21
|
+
|
22
|
+
pk.set_raw_privkey seckey
|
23
|
+
|
24
|
+
sig_raw = pk.ecdsa_sign msg32, raw: true
|
25
|
+
sig_check = pk.ecdsa_serialize sig_raw
|
26
|
+
|
27
|
+
assert_equal sig, sig_check
|
28
|
+
assert_equal sig_check, pk.ecdsa_serialize(pk.ecdsa_deserialize(sig_check))
|
29
|
+
end
|
30
|
+
end
|
31
|
+
|
32
|
+
def test_ecdsa_compact
|
33
|
+
pk = PrivateKey.new
|
34
|
+
raw_sig = pk.ecdsa_sign 'test'
|
35
|
+
assert_equal true, pk.pubkey.ecdsa_verify('test', raw_sig)
|
36
|
+
|
37
|
+
compact = pk.ecdsa_serialize_compact raw_sig
|
38
|
+
assert_equal 64, compact.size
|
39
|
+
|
40
|
+
sig_raw = pk.ecdsa_deserialize_compact compact
|
41
|
+
assert_equal compact, pk.ecdsa_serialize_compact(sig_raw)
|
42
|
+
assert_equal true, pk.pubkey.ecdsa_verify('test', sig_raw)
|
43
|
+
end
|
44
|
+
|
45
|
+
private
|
46
|
+
|
47
|
+
def ecdsa_sig
|
48
|
+
@ecdsa_sig = JSON.parse File.read(File.expand_path('../fixtures/ecdsa_sig.json', __FILE__))
|
49
|
+
end
|
50
|
+
|
51
|
+
end
|
metadata
ADDED
@@ -0,0 +1,122 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bitcoin-secp256k1
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Jan Xie
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
date: 2016-03-24 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: ffi
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - ">="
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: 1.9.10
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - ">="
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: 1.9.10
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: rake
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '10.5'
|
34
|
+
type: :development
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '10.5'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: minitest
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - '='
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: 5.8.3
|
48
|
+
type: :development
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - '='
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: 5.8.3
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: yard
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - '='
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.8.7.6
|
62
|
+
type: :development
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - '='
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.8.7.6
|
69
|
+
description: Ruby binding to bitcoin's secp256k1 implementation.
|
70
|
+
email:
|
71
|
+
- jan.h.xie@gmail.com
|
72
|
+
executables: []
|
73
|
+
extensions: []
|
74
|
+
extra_rdoc_files: []
|
75
|
+
files:
|
76
|
+
- ".gitignore"
|
77
|
+
- ".gitmodules"
|
78
|
+
- Gemfile
|
79
|
+
- Gemfile.lock
|
80
|
+
- LICENSE
|
81
|
+
- README.md
|
82
|
+
- Rakefile
|
83
|
+
- bitcoin-secp256k1.gemspec
|
84
|
+
- install_lib.sh
|
85
|
+
- lib/secp256k1.rb
|
86
|
+
- lib/secp256k1/c.rb
|
87
|
+
- lib/secp256k1/ecdsa.rb
|
88
|
+
- lib/secp256k1/key.rb
|
89
|
+
- lib/secp256k1/utils.rb
|
90
|
+
- lib/secp256k1/version.rb
|
91
|
+
- test/fixtures/ecdsa_sig.json
|
92
|
+
- test/fixtures/pubkey.json
|
93
|
+
- test/secp256k1_test.rb
|
94
|
+
homepage: https://github.com/janx/ruby-bitcoin-secp256k1
|
95
|
+
licenses:
|
96
|
+
- MIT
|
97
|
+
metadata: {}
|
98
|
+
post_install_message:
|
99
|
+
rdoc_options: []
|
100
|
+
require_paths:
|
101
|
+
- lib
|
102
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ">="
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: '0'
|
107
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
108
|
+
requirements:
|
109
|
+
- - ">="
|
110
|
+
- !ruby/object:Gem::Version
|
111
|
+
version: '0'
|
112
|
+
requirements: []
|
113
|
+
rubyforge_project:
|
114
|
+
rubygems_version: 2.4.5.1
|
115
|
+
signing_key:
|
116
|
+
specification_version: 4
|
117
|
+
summary: Ruby binding to bitcoin's secp256k1 implementation.
|
118
|
+
test_files:
|
119
|
+
- test/fixtures/ecdsa_sig.json
|
120
|
+
- test/fixtures/pubkey.json
|
121
|
+
- test/secp256k1_test.rb
|
122
|
+
has_rdoc:
|