bech32 1.0.3 → 1.0.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
- 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.