bitpay-sdk 2.4.3 → 2.4.4
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 +4 -4
- data/CHANGELOG.md +8 -0
- data/Gemfile +0 -4
- data/bitpay-sdk.gemspec +1 -1
- data/features/step_definitions/refund_steps.rb +1 -0
- data/lib/bitpay/client.rb +1 -1
- data/lib/bitpay/version.rb +1 -1
- data/lib/bitpay_sdk.rb +0 -3
- metadata +5 -7
- data/lib/bitpay/key_utils.rb +0 -124
- data/spec/key_utils_spec.rb +0 -41
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0ec9e5202e1366e87e9051fe597c1d38ea171e0b
|
4
|
+
data.tar.gz: 72de4ccae16d879ead8badc8fd1e23d376fcecc9
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 359275a9537699759cc416736c5b83c19c907332c09b509f341a0f38d3139ac6790623c0fd8fa3d15e1188b5c20a345ddf137f9ae38457f38a6afa6d415226eb
|
7
|
+
data.tar.gz: 9cdf0daab543ad1a782f88b23a0eda0a522643eca06efbee5836c9fc5e659a45b3de3f228cddd06a68550048c45e8577717f5b168c966ea6698f8c7fb047de29
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,14 @@
|
|
2
2
|
All notable changes to this project will be documented in this file.
|
3
3
|
This project adheres to [Semantic Versioning](http://semver.org/).
|
4
4
|
|
5
|
+
## [2.4.4] - 2015-04-14
|
6
|
+
### Changed
|
7
|
+
- Separated key utilities into its own Gem
|
8
|
+
|
9
|
+
## [2.4.3] - 2015-04-13
|
10
|
+
### Changed
|
11
|
+
- Loosened production gem requirements from patch level to major level
|
12
|
+
|
5
13
|
## [2.4.2] - 2015-03-11
|
6
14
|
### Fixed
|
7
15
|
- GitHub issue 39: handling post paths that include a ? and require a token. A workaround exists for this issue.
|
data/Gemfile
CHANGED
data/bitpay-sdk.gemspec
CHANGED
@@ -19,7 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
|
20
20
|
s.add_dependency 'json', '~>1.8'
|
21
21
|
s.add_dependency 'rack', '~>1.5'
|
22
|
-
s.add_dependency '
|
22
|
+
s.add_dependency 'bitpay-key-utils', '~>2.0.0'
|
23
23
|
|
24
24
|
s.add_development_dependency 'rake', '10.3.2'
|
25
25
|
s.add_development_dependency 'webmock', '1.18.0'
|
@@ -28,6 +28,7 @@ Then(/^they will receive an array of refunds$/) do
|
|
28
28
|
end
|
29
29
|
|
30
30
|
Given(/^a properly formatted cancellation request$/) do
|
31
|
+
sleep(1)
|
31
32
|
client = new_client_from_stored_values
|
32
33
|
@refund_id = client.get_all_refunds_for_invoice(id: REFUND_TRANSACTION).first["id"]
|
33
34
|
@response = client.cancel_refund(invoice_id: REFUND_TRANSACTION, request_id: @refund_id)
|
data/lib/bitpay/client.rb
CHANGED
data/lib/bitpay/version.rb
CHANGED
data/lib/bitpay_sdk.rb
CHANGED
@@ -22,10 +22,7 @@ module BitPay
|
|
22
22
|
# User agent reported to API
|
23
23
|
USER_AGENT = 'ruby-bitpay-sdk '+VERSION
|
24
24
|
|
25
|
-
MISSING_PEM = 'No pem file specified. Pass pem string'
|
26
|
-
|
27
25
|
class BitPayError < StandardError; end
|
28
|
-
class ArgumentError < ArgumentError; end
|
29
26
|
class ConnectionError < Errno::ECONNREFUSED; end
|
30
27
|
|
31
28
|
end
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: bitpay-sdk
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.4.
|
4
|
+
version: 2.4.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Bitpay, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-04-
|
11
|
+
date: 2015-04-14 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: json
|
@@ -39,19 +39,19 @@ dependencies:
|
|
39
39
|
- !ruby/object:Gem::Version
|
40
40
|
version: '1.5'
|
41
41
|
- !ruby/object:Gem::Dependency
|
42
|
-
name:
|
42
|
+
name: bitpay-key-utils
|
43
43
|
requirement: !ruby/object:Gem::Requirement
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version:
|
47
|
+
version: 2.0.0
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version:
|
54
|
+
version: 2.0.0
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: rake
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -234,7 +234,6 @@ files:
|
|
234
234
|
- features/step_definitions/step_helpers.rb
|
235
235
|
- lib/bitpay/cacert.pem
|
236
236
|
- lib/bitpay/client.rb
|
237
|
-
- lib/bitpay/key_utils.rb
|
238
237
|
- lib/bitpay/rest_connector.rb
|
239
238
|
- lib/bitpay/version.rb
|
240
239
|
- lib/bitpay_sdk.rb
|
@@ -245,7 +244,6 @@ files:
|
|
245
244
|
- spec/fixtures/invoices_{id}_refunds-POST.json
|
246
245
|
- spec/fixtures/invoices_{id}_refunds_{refund_id}-GET.json
|
247
246
|
- spec/fixtures/response-nodata.json
|
248
|
-
- spec/key_utils_spec.rb
|
249
247
|
- spec/set_constants.sh
|
250
248
|
- spec/spec_helper.rb
|
251
249
|
homepage: https://github.com/bitpay/ruby-client
|
data/lib/bitpay/key_utils.rb
DELETED
@@ -1,124 +0,0 @@
|
|
1
|
-
# license Copyright 2011-2014 BitPay, Inc., MIT License
|
2
|
-
# see http://opensource.org/licenses/MIT
|
3
|
-
# or https://github.com/bitpay/php-bitpay-client/blob/master/LICENSE
|
4
|
-
|
5
|
-
require 'uri'
|
6
|
-
require 'net/https'
|
7
|
-
require 'json'
|
8
|
-
require 'openssl'
|
9
|
-
require 'ecdsa'
|
10
|
-
require 'securerandom'
|
11
|
-
require 'digest/sha2'
|
12
|
-
require 'cgi'
|
13
|
-
|
14
|
-
module BitPay
|
15
|
-
class KeyUtils
|
16
|
-
class << self
|
17
|
-
def nonce
|
18
|
-
Time.now.utc.strftime('%Y%m%d%H%M%S%L')
|
19
|
-
end
|
20
|
-
|
21
|
-
## Generates a new private key
|
22
|
-
#
|
23
|
-
|
24
|
-
def generate_pem
|
25
|
-
key = OpenSSL::PKey::EC.new("secp256k1")
|
26
|
-
key.generate_key
|
27
|
-
key.to_pem
|
28
|
-
end
|
29
|
-
|
30
|
-
def create_key pem
|
31
|
-
OpenSSL::PKey::EC.new(pem)
|
32
|
-
end
|
33
|
-
|
34
|
-
def create_new_key
|
35
|
-
key = OpenSSL::PKey::EC.new("secp256k1")
|
36
|
-
key.generate_key
|
37
|
-
key
|
38
|
-
end
|
39
|
-
|
40
|
-
def get_private_key key
|
41
|
-
key.private_key.to_int.to_s(16)
|
42
|
-
end
|
43
|
-
|
44
|
-
def get_public_key key
|
45
|
-
key.public_key.group.point_conversion_form = :compressed
|
46
|
-
key.public_key.to_bn.to_s(16).downcase
|
47
|
-
end
|
48
|
-
|
49
|
-
def get_private_key_from_pem pem
|
50
|
-
raise BitPayError, MISSING_PEM unless pem
|
51
|
-
key = OpenSSL::PKey::EC.new(pem)
|
52
|
-
get_private_key key
|
53
|
-
end
|
54
|
-
|
55
|
-
def get_public_key_from_pem pem
|
56
|
-
raise BitPayError, MISSING_PEM unless pem
|
57
|
-
key = OpenSSL::PKey::EC.new(pem)
|
58
|
-
get_public_key key
|
59
|
-
end
|
60
|
-
|
61
|
-
def generate_sin_from_pem pem
|
62
|
-
#http://blog.bitpay.com/2014/07/01/bitauth-for-decentralized-authentication.html
|
63
|
-
#https://en.bitcoin.it/wiki/Identity_protocol_v1
|
64
|
-
|
65
|
-
# NOTE: All Digests are calculated against the binary representation,
|
66
|
-
# hence the requirement to use [].pack("H*") to convert to binary for each step
|
67
|
-
|
68
|
-
#Generate Private Key
|
69
|
-
key = OpenSSL::PKey::EC.new pem
|
70
|
-
key.public_key.group.point_conversion_form = :compressed
|
71
|
-
public_key = key.public_key.to_bn.to_s(2)
|
72
|
-
step_one = Digest::SHA256.hexdigest(public_key)
|
73
|
-
step_two = Digest::RMD160.hexdigest([step_one].pack("H*"))
|
74
|
-
step_three = "0F02" + step_two
|
75
|
-
step_four_a = Digest::SHA256.hexdigest([step_three].pack("H*"))
|
76
|
-
step_four = Digest::SHA256.hexdigest([step_four_a].pack("H*"))
|
77
|
-
step_five = step_four[0..7]
|
78
|
-
step_six = step_three + step_five
|
79
|
-
encode_base58(step_six)
|
80
|
-
end
|
81
|
-
|
82
|
-
|
83
|
-
## Generate ECDSA signature
|
84
|
-
# This is the last method that requires the ecdsa gem, which we would like to replace
|
85
|
-
|
86
|
-
def sign(message, privkey)
|
87
|
-
group = ECDSA::Group::Secp256k1
|
88
|
-
digest = Digest::SHA256.digest(message)
|
89
|
-
signature = nil
|
90
|
-
while signature.nil?
|
91
|
-
temp_key = 1 + SecureRandom.random_number(group.order - 1)
|
92
|
-
signature = ECDSA.sign(group, privkey.to_i(16), digest, temp_key)
|
93
|
-
return ECDSA::Format::SignatureDerString.encode(signature).unpack("H*").first
|
94
|
-
end
|
95
|
-
end
|
96
|
-
|
97
|
-
########## Private Class Methods ################
|
98
|
-
|
99
|
-
## Base58 Encoding Method
|
100
|
-
#
|
101
|
-
private
|
102
|
-
def encode_base58 (data)
|
103
|
-
code_string = "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
|
104
|
-
base = 58
|
105
|
-
x = data.hex
|
106
|
-
output_string = ""
|
107
|
-
|
108
|
-
while x > 0 do
|
109
|
-
remainder = x % base
|
110
|
-
x = x / base
|
111
|
-
output_string << code_string[remainder]
|
112
|
-
end
|
113
|
-
|
114
|
-
pos = 0
|
115
|
-
while data[pos,2] == "00" do
|
116
|
-
output_string << code_string[0]
|
117
|
-
pos += 2
|
118
|
-
end
|
119
|
-
|
120
|
-
output_string.reverse()
|
121
|
-
end
|
122
|
-
end
|
123
|
-
end
|
124
|
-
end
|
data/spec/key_utils_spec.rb
DELETED
@@ -1,41 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe BitPay::KeyUtils do
|
4
|
-
let(:key_utils) {BitPay::KeyUtils}
|
5
|
-
|
6
|
-
describe '.generate_pem' do
|
7
|
-
it 'should generate a pem string' do
|
8
|
-
regex = /BEGIN\ EC\ PRIVATE\ KEY/
|
9
|
-
expect(regex.match(key_utils.generate_pem)).to be_truthy
|
10
|
-
end
|
11
|
-
end
|
12
|
-
|
13
|
-
describe '.get_public_key_from_pem' do
|
14
|
-
it 'should generate the right public key' do
|
15
|
-
expect(key_utils.get_public_key_from_pem(PEM)).to eq(PUB_KEY)
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'should get pem from the env if none is passed' do
|
19
|
-
expect(key_utils.get_public_key_from_pem(PEM)).to eq(PUB_KEY)
|
20
|
-
end
|
21
|
-
|
22
|
-
end
|
23
|
-
|
24
|
-
describe '.generate_sin_from_pem' do
|
25
|
-
let(:pem){PEM}
|
26
|
-
let(:sin){CLIENT_ID}
|
27
|
-
|
28
|
-
it 'will return the right sin for the right pem' do
|
29
|
-
expect(key_utils.generate_sin_from_pem(pem)).to eq sin
|
30
|
-
end
|
31
|
-
|
32
|
-
end
|
33
|
-
|
34
|
-
context "errors when priv_key is not provided" do
|
35
|
-
it 'will not retrieve public key' do
|
36
|
-
expect{key_utils.get_public_key_from_pem(nil)}.to raise_error(BitPay::BitPayError)
|
37
|
-
end
|
38
|
-
|
39
|
-
end
|
40
|
-
|
41
|
-
end
|