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.
@@ -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: