bech32 1.0.3 → 1.0.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
- SHA1:
3
- metadata.gz: 9acaaf9038539574877c05ca9dc45fbb69f78fb0
4
- data.tar.gz: 6b73bb92def6f2eaebb5ac369217d7d973a4891f
2
+ SHA256:
3
+ metadata.gz: e9e8e0e3c612f44109634bc974d068150d4dddd7d75f9bd62ec1358bd0b021db
4
+ data.tar.gz: 2481d79db6af87e2e938c714807c3789c5c00954634dd0085beaa3638c006d11
5
5
  SHA512:
6
- metadata.gz: 98ad08c6ca5138e4643f4b0c6b5587a9e2f110d7358a7585e8938c3ed520bbeff5626bcdd954500bda086c6a652566ce0a944a842d0002b56c388fac7612af63
7
- data.tar.gz: a0e59ec902594e8d60d45bc254e49fca7ae96d57cf9be389b62654a38fe077172bc23753aa1b178478d7ca4562ee74ea3aaf13ef713d03c24c4cf67a6d3baf11
6
+ metadata.gz: 9c41b87a356b14ce0a3c086ada2a73cb653b5584b0d73bd02dec13c54e42166473577d773b7e65dec39bd477aa5adc302674c549234867f678606ad8bccb4577
7
+ data.tar.gz: 0e5ab9b288e986ab996690a78c9f976d1cf658c62160f6ef2e2fc7060fc276bc84b27a9f1309d71b81a3629ecb486dd25fb0b4105bb05103cc364ab8502de61b
@@ -1 +1 @@
1
- 2.4.1
1
+ 2.5.0
@@ -4,3 +4,4 @@ rvm:
4
4
  - 2.2.2
5
5
  - 2.3.0
6
6
  - 2.4.0
7
+ - 2.5.0
data/README.md CHANGED
@@ -55,6 +55,20 @@ segwit_addr.to_script_pubkey
55
55
  => 0014751e76e8199196d454941c45d1b3a323f1433bd6
56
56
  ```
57
57
 
58
+ #### Advanced
59
+
60
+ The maximum number of characters of Bech32 defined in [BIP-173](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki) is limited to 90 characters.
61
+ However, LN specification [BOLT#11](https://github.com/lightningnetwork/lightning-rfc/blob/master/11-payment-encoding.md) has no limitation.
62
+
63
+ To decode data of more than 90 characters, specify `max_length` at decode as below. (The default value of `max_length` is 90.)
64
+
65
+ ```ruby
66
+ MAX_INTEGER = 2**31 - 1
67
+ Bech32.decode(bechString, MAX_INTEGER)
68
+ ```
69
+
70
+ Note that between length of the addresses and the error-detection capabilities are [trade-off](https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki#checksum-design).
71
+
58
72
  ### Encode
59
73
 
60
74
  Encode Bech32 human-readable part and data part into Bech32 string.
@@ -33,7 +33,7 @@ module Bech32
33
33
  # 'bc' # hrp
34
34
  # [0, 14, 20, 15, 7, 13, 26, 0, 25, 18, 6, 11, 13, 8, 21, 4, 20, 3, 17, 2, 29, 3, 12, 29, 3, 4, 15, 24, 20, 6, 14, 30, 22] # data
35
35
  #
36
- def decode(bech)
36
+ def decode(bech, max_length = 90)
37
37
  # check invalid bytes
38
38
  return nil if bech.scrub('?').include?('?')
39
39
  # check uppercase/lowercase
@@ -42,7 +42,7 @@ module Bech32
42
42
  bech = bech.downcase
43
43
  # check data length
44
44
  pos = bech.rindex(SEPARATOR)
45
- return nil if pos.nil? || pos + 7 > bech.length || bech.length > 90
45
+ return nil if pos.nil? || pos + 7 > bech.length || bech.length > max_length
46
46
  # check valid charset
47
47
  bech[pos+1..-1].each_char{|c|return nil unless CHARSET.include?(c)}
48
48
  # split hrp and data
@@ -1,3 +1,3 @@
1
1
  module Bech32
2
- VERSION = "1.0.3"
2
+ VERSION = "1.0.4"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bech32
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.3
4
+ version: 1.0.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shigeyuki Azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2017-10-06 00:00:00.000000000 Z
11
+ date: 2018-02-17 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake
@@ -81,7 +81,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
81
81
  version: '0'
82
82
  requirements: []
83
83
  rubyforge_project:
84
- rubygems_version: 2.6.13
84
+ rubygems_version: 2.7.3
85
85
  signing_key:
86
86
  specification_version: 4
87
87
  summary: The implementation of Bech32 encoder and decoder.