bitpay-sdk 2.4.3 → 2.4.4

Sign up to get free protection for your applications and to get access to all the features.
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