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 +5 -5
- data/.ruby-version +1 -1
- data/.travis.yml +1 -0
- data/README.md +14 -0
- data/lib/bech32.rb +2 -2
- data/lib/bech32/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: e9e8e0e3c612f44109634bc974d068150d4dddd7d75f9bd62ec1358bd0b021db
|
4
|
+
data.tar.gz: 2481d79db6af87e2e938c714807c3789c5c00954634dd0085beaa3638c006d11
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9c41b87a356b14ce0a3c086ada2a73cb653b5584b0d73bd02dec13c54e42166473577d773b7e65dec39bd477aa5adc302674c549234867f678606ad8bccb4577
|
7
|
+
data.tar.gz: 0e5ab9b288e986ab996690a78c9f976d1cf658c62160f6ef2e2fc7060fc276bc84b27a9f1309d71b81a3629ecb486dd25fb0b4105bb05103cc364ab8502de61b
|
data/.ruby-version
CHANGED
@@ -1 +1 @@
|
|
1
|
-
2.
|
1
|
+
2.5.0
|
data/.travis.yml
CHANGED
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.
|
data/lib/bech32.rb
CHANGED
@@ -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 >
|
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
|
data/lib/bech32/version.rb
CHANGED
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.
|
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:
|
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.
|
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.
|