block_io 3.0.2 → 3.0.3

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
  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