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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: cc8cd42467196b5488ee466cd32fca98eba75b5c
4
- data.tar.gz: 9ed97186491327543521748b12b2471f72945de3
3
+ metadata.gz: 0ec9e5202e1366e87e9051fe597c1d38ea171e0b
4
+ data.tar.gz: 72de4ccae16d879ead8badc8fd1e23d376fcecc9
5
5
  SHA512:
6
- metadata.gz: 2364641d595217cd0beef01b170d06aabd680044ae5310929cb9424e2cd784b4341e34e40c8c11de0fb6af22f296d81f2263d06200cce0285274b06f8b9ec91c
7
- data.tar.gz: 4706f9cc2c5ee1d0c658d5051c8d2d247d927013ce430f1047df69141e246ae0f5bf2a0bacae141d201833af76634d2a7b863154127e796c45fb8d9138241026
6
+ metadata.gz: 359275a9537699759cc416736c5b83c19c907332c09b509f341a0f38d3139ac6790623c0fd8fa3d15e1188b5c20a345ddf137f9ae38457f38a6afa6d415226eb
7
+ data.tar.gz: 9cdf0daab543ad1a782f88b23a0eda0a522643eca06efbee5836c9fc5e659a45b3de3f228cddd06a68550048c45e8577717f5b168c966ea6698f8c7fb047de29
@@ -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
@@ -1,6 +1,2 @@
1
1
  source 'https://rubygems.org'
2
2
  gemspec
3
-
4
- platform :jruby do
5
- gem 'jruby-openssl'
6
- end
@@ -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 'ecdsa', '~>1.2'
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)
@@ -6,7 +6,7 @@ require 'uri'
6
6
  require 'net/https'
7
7
  require 'json'
8
8
 
9
- require_relative 'key_utils'
9
+ require 'bitpay_key_utils'
10
10
  require_relative 'rest_connector'
11
11
 
12
12
  module BitPay
@@ -3,5 +3,5 @@
3
3
  # or https://github.com/bitpay/php-bitpay-client/blob/master/LICENSE
4
4
 
5
5
  module BitPay
6
- VERSION = '2.4.3'
6
+ VERSION = '2.4.4'
7
7
  end
@@ -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.3
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-13 00:00:00.000000000 Z
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: ecdsa
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: '1.2'
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: '1.2'
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
@@ -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
@@ -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