block_io 3.0.2 → 3.0.3

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
  SHA256:
3
- metadata.gz: 04ac726371db4f0ba948b04d19cf556427c593029ec883f1883c4c37bf215e3e
4
- data.tar.gz: b705bb847c6af978f583580762e05183403478612866c63fb76377508c748aeb
3
+ metadata.gz: c290c375f3fb3278c9a27bc3950b2fab5933631d3e3e8eff1e7564c5ebfd9e8b
4
+ data.tar.gz: a42456ef38ce4785622494a8b95171416eb9da05d776d269ac9984f49a977897
5
5
  SHA512:
6
- metadata.gz: 5706382a756eb2d06c8ee744dac42ac09c83a8b48465a3d7b2d602829d2c8c0879ae4e7aa9adc4fff63665de84ecbb00c8f4f7ec9160dd3b70c54163e1f44b48
7
- data.tar.gz: 44483df6c48b4d839f33173939a388bb7bb674881d920c9e987776b8452be3dcae92847c145f70764972e2e709b649e31967e6b1be27db71b346d1a6334eba73
6
+ metadata.gz: 317e3939e17806aedaec69f82cdd843c016342af51db8fc308fad666212f812153c239af4c768528fd7cce61f984af7704b5b06317f020a0a924f5c1b2a48969
7
+ data.tar.gz: 4d2223d07edcb8ddee3a16745c10e17b8a4a802cc793e3fd8b8c6673f7138ed728bd418799e3e4eb8ee163f2407463decf1fcad0e960822240cf9afcf606d831
data/README.md CHANGED
@@ -17,6 +17,7 @@ Or install it yourself as:
17
17
  $ gem install block_io
18
18
 
19
19
  ## Changelog
20
+ *09/28/21*: Version 3.0.3 supports witness_v1 outputs (Bech32m).
20
21
  *07/21/21*: Version 3.0.2 fixes Litecoin P2SH address version.
21
22
  *06/09/21*: Version 3.0.1 implements use of dynamic decryption algorithms.
22
23
  *04/14/21*: BREAKING CHANGES. Version 3.0.0. Remove support for Ruby < 2.4.0, and Windows. Behavior and interfaces have changed. By upgrading you'll need to revise your code and tests.
data/block_io.gemspec CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |spec|
22
22
  spec.add_development_dependency "rake", "~> 13.0", ">= 13.0"
23
23
  spec.add_development_dependency "rspec", "~> 3.6", ">= 3.6"
24
24
  spec.add_development_dependency "webmock", "~> 3.12", "< 4.0"
25
- spec.add_runtime_dependency "bitcoinrb", "~> 0.7.0", "= 0.7.0"
25
+ spec.add_runtime_dependency "bitcoinrb", "~> 0.8.0", "= 0.8.0"
26
26
  spec.add_runtime_dependency "http", ">= 4.4.1", "< 6.0"
27
27
  spec.add_runtime_dependency "oj", "~> 3.0", "< 4.0"
28
28
  spec.add_runtime_dependency "connection_pool", ">= 2.2", "< 3.0"
@@ -46,12 +46,17 @@ module Bitcoin
46
46
  r = point_field.mod(r_point.x)
47
47
  return nil if r.zero?
48
48
 
49
+ rec = r_point.y & 1
50
+
49
51
  e = ECDSA.normalize_digest(data, GROUP.bit_length)
50
52
  s = point_field.mod(point_field.inverse(nonce) * (e + r * private_key))
51
53
 
52
54
  # covert to low-s
53
- s = GROUP.order - s if s > (GROUP.order / 2)
54
-
55
+ if s > (GROUP.order / 2)
56
+ s = GROUP.order - s
57
+ rec = r_point.y & 1
58
+ end
59
+
55
60
  return nil if s.zero?
56
61
 
57
62
  signature = ECDSA::Signature.new(r, s).to_der
@@ -60,7 +65,7 @@ module Bitcoin
60
65
  # public_key = Bitcoin::Key.new(priv_key: privkey.bth, :key_type => Bitcoin::Key::TYPES[:compressed]).pubkey # get rid of the key_type warning
61
66
  # raise 'Creation of signature failed.' unless Bitcoin::Secp256k1::Ruby.verify_sig(data, signature, public_key)
62
67
 
63
- signature
68
+ [signature, rec]
64
69
  end
65
70
 
66
71
  end
@@ -1,3 +1,3 @@
1
1
  module BlockIo
2
- VERSION = "3.0.2"
2
+ VERSION = "3.0.3"
3
3
  end
@@ -347,5 +347,25 @@ describe "Client.create_and_sign_transaction" do
347
347
 
348
348
  end
349
349
 
350
- end
350
+ context "witness_v1_output" do
351
+
352
+ before(:each) do
353
+
354
+ @blockio = BlockIo::Client.new(:api_key => @api_key, :pin => @insecure_pin_valid)
355
+
356
+ end
357
+
358
+ it "succeeds_on_witness_v1_output" do
359
+
360
+ request = Oj.safe_load(File.open("spec/test-cases/json/prepare_transaction_response_witness_v1_output.json").read)
361
+ expected_response = Oj.safe_load(File.open("spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json").read)
362
+
363
+ actual_response = @blockio.create_and_sign_transaction(request)
364
+
365
+ expect(actual_response).to eq(expected_response)
366
+
367
+ end
368
+
369
+ end
351
370
 
371
+ end
@@ -0,0 +1,11 @@
1
+ {
2
+ "tx_type": "basic",
3
+ "tx_hex": "0100000001784ecc9b864ff9b8a97eaacd138fdf193a5d889735702a4f726d2f87631de45f0100000000ffffffff03204e000000000000225120000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e86433204e000000000000220020000000c4a5cad46221b2a187905e5266362b99d5e91c6ce24d165dab93e864339f4c00000000000017a914026b9608a26f40f74644cc60622d1067c3696ac98700000000",
4
+ "signatures": [
5
+ {
6
+ "input_index": 0,
7
+ "public_key": "02d2cbf77287c1443759abdd35f239e7da2f52c992258653bc8dd577ae63c78628",
8
+ "signature": "304402206d093e2a14e80e01f3c8eefc76d651d01c3dedbd1f0dabf78ace5b352ca660b602202aac312b5b7f0b8c79ad22e75d2523ee39d9c62a35be4db102b5c8f3f296f662"
9
+ }
10
+ ]
11
+ }
@@ -0,0 +1,64 @@
1
+ {
2
+ "status": "success",
3
+ "data": {
4
+ "network": "BTCTEST",
5
+ "tx_type": "basic",
6
+ "inputs": [
7
+ {
8
+ "input_index": 0,
9
+ "previous_txid": "5fe41d63872f6d724f2a703597885d3a19df8f13cdaa7ea9b8f94f869bcc4e78",
10
+ "previous_output_index": 1,
11
+ "input_value": "0.00060915",
12
+ "spending_address": "2MsU2DsvP7okZ2sZGZUvH3rZZuQt4pf75Am"
13
+ }
14
+ ],
15
+ "outputs": [
16
+ {
17
+ "output_index": 0,
18
+ "output_category": "user-specified",
19
+ "output_value": "0.00020000",
20
+ "receiving_address": "tb1pqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesf3hn0c"
21
+ },
22
+ {
23
+ "output_index": 1,
24
+ "output_category": "user-specified",
25
+ "output_value": "0.00020000",
26
+ "receiving_address": "tb1qqqqqp399et2xygdj5xreqhjjvcmzhxw4aywxecjdzew6hylgvsesrxh6hy"
27
+ },
28
+ {
29
+ "output_index": 2,
30
+ "output_category": "change",
31
+ "output_value": "0.00019615",
32
+ "receiving_address": "2MsU2DsvP7okZ2sZGZUvH3rZZuQt4pf75Am"
33
+ }
34
+ ],
35
+ "input_address_data": [
36
+ {
37
+ "required_signatures": 2,
38
+ "public_keys": [
39
+ "021916c1ea9215990263e2862bcecc85397d199a4411c863983176ee3d44e27f7f",
40
+ "02d2cbf77287c1443759abdd35f239e7da2f52c992258653bc8dd577ae63c78628"
41
+ ],
42
+ "address": "2MsU2DsvP7okZ2sZGZUvH3rZZuQt4pf75Am",
43
+ "address_type": "P2WSH-over-P2SH"
44
+ }
45
+ ],
46
+ "user_key": {
47
+ "public_key": "02d2cbf77287c1443759abdd35f239e7da2f52c992258653bc8dd577ae63c78628",
48
+ "encrypted_passphrase": "jlPuw8CJGTWTb+O4I/IKGWGDdF9G8/MX5meX+IfuLfbb7rRABoSUGYSU2BXxxRqR95K64u8gH46h3zr/NKsj8OFv5gj4JwClM7RN03fvb+3CyXgwy4eYSSpFE6vVsdyoxJ8rshUbpf8tvCerUKC0LhE9d61q7mWYoVAik61WRwc=",
49
+ "algorithm": {
50
+ "pbkdf2_salt": "7ccf40ce398f0fb475fe91043f7dce57",
51
+ "pbkdf2_iterations": 102400,
52
+ "pbkdf2_hash_function": "SHA256",
53
+ "pbkdf2_phase1_key_length": 16,
54
+ "pbkdf2_phase2_key_length": 32,
55
+ "aes_iv": "7c69a5e81e53ba05213b35bb",
56
+ "aes_cipher": "AES-256-GCM",
57
+ "aes_auth_tag": "d19b5e48e068f3b1179a4724b3862650",
58
+ "aes_auth_data": ""
59
+ }
60
+ },
61
+ "estimated_tx_size": 260,
62
+ "expected_unsigned_txid": "e1925681c6986df2617d41c90b2bbc32cd01f7df0323ca52417b4a8677b2a160"
63
+ }
64
+ }
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: block_io
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.0.2
4
+ version: 3.0.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - Atif Nazir
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2021-07-22 00:00:00.000000000 Z
11
+ date: 2021-09-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bundler
@@ -96,20 +96,20 @@ dependencies:
96
96
  requirements:
97
97
  - - "~>"
98
98
  - !ruby/object:Gem::Version
99
- version: 0.7.0
99
+ version: 0.8.0
100
100
  - - '='
101
101
  - !ruby/object:Gem::Version
102
- version: 0.7.0
102
+ version: 0.8.0
103
103
  type: :runtime
104
104
  prerelease: false
105
105
  version_requirements: !ruby/object:Gem::Requirement
106
106
  requirements:
107
107
  - - "~>"
108
108
  - !ruby/object:Gem::Version
109
- version: 0.7.0
109
+ version: 0.8.0
110
110
  - - '='
111
111
  - !ruby/object:Gem::Version
112
- version: 0.7.0
112
+ version: 0.8.0
113
113
  - !ruby/object:Gem::Dependency
114
114
  name: http
115
115
  requirement: !ruby/object:Gem::Requirement
@@ -251,6 +251,7 @@ files:
251
251
  - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json
252
252
  - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json
253
253
  - spec/test-cases/json/create_and_sign_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
254
+ - spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json
254
255
  - spec/test-cases/json/get_balance_response.json
255
256
  - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json
256
257
  - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json
@@ -284,6 +285,7 @@ files:
284
285
  - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
285
286
  - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
286
287
  - spec/test-cases/json/prepare_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
288
+ - spec/test-cases/json/prepare_transaction_response_witness_v1_output.json
287
289
  - spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
288
290
  homepage: https://block.io/api/simple/ruby
289
291
  licenses:
@@ -356,6 +358,7 @@ test_files:
356
358
  - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh.json
357
359
  - spec/test-cases/json/create_and_sign_transaction_response_sweep_p2wpkh_over_p2sh.json
358
360
  - spec/test-cases/json/create_and_sign_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
361
+ - spec/test-cases/json/create_and_sign_transaction_response_witness_v1_output.json
359
362
  - spec/test-cases/json/get_balance_response.json
360
363
  - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_3of5_195inputs.json
361
364
  - spec/test-cases/json/prepare_dtrust_transaction_response_P2SH_4of5_195inputs.json
@@ -389,4 +392,5 @@ test_files:
389
392
  - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_253inputs.json
390
393
  - spec/test-cases/json/prepare_transaction_response_P2WSH-over-P2SH_1of2_762inputs.json
391
394
  - spec/test-cases/json/prepare_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json
395
+ - spec/test-cases/json/prepare_transaction_response_witness_v1_output.json
392
396
  - spec/test-cases/json/summarize_prepared_transaction_response_with_blockio_fee_and_expected_unsigned_txid.json