bech32 1.0.4 → 1.2.1

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: e9e8e0e3c612f44109634bc974d068150d4dddd7d75f9bd62ec1358bd0b021db
4
- data.tar.gz: 2481d79db6af87e2e938c714807c3789c5c00954634dd0085beaa3638c006d11
3
+ metadata.gz: 7b6e0eb4edcadc4cbeeb612e0d085bb3caed330ed1c312c1d8465baec26a4923
4
+ data.tar.gz: ea2abc8eae17e2b503e091c71402a6f9dbd3f2be7ecd416eed3dcc08be3fccb6
5
5
  SHA512:
6
- metadata.gz: 9c41b87a356b14ce0a3c086ada2a73cb653b5584b0d73bd02dec13c54e42166473577d773b7e65dec39bd477aa5adc302674c549234867f678606ad8bccb4577
7
- data.tar.gz: 0e5ab9b288e986ab996690a78c9f976d1cf658c62160f6ef2e2fc7060fc276bc84b27a9f1309d71b81a3629ecb486dd25fb0b4105bb05103cc364ab8502de61b
6
+ metadata.gz: 39d972ba715a32e90cda977d9a6c9a53f5648e760c0afcaf9edd83e1a94ce882a09d0d38d2781a691def7d8595d270d1293f96ae63df22dd981dc23ddaaf6e40
7
+ data.tar.gz: a463c2478f923f6b8b27123e5e1af24e0f6ebee5c0593fa02243311b1ca364db7d82ceea1375d9f5078e14cc3adf3bfa6eced482ea86045fa5ec1fc726fcbe47
@@ -0,0 +1,35 @@
1
+ # This workflow uses actions that are not certified by GitHub.
2
+ # They are provided by a third-party and are governed by
3
+ # separate terms of service, privacy policy, and support
4
+ # documentation.
5
+ # This workflow will download a prebuilt Ruby version, install dependencies and run tests with Rake
6
+ # For more information see: https://github.com/marketplace/actions/setup-ruby-jruby-and-truffleruby
7
+
8
+ name: Ruby
9
+
10
+ on:
11
+ push:
12
+ branches: [ master ]
13
+ pull_request:
14
+ branches: [ master ]
15
+
16
+ jobs:
17
+ test:
18
+
19
+ runs-on: ubuntu-latest
20
+ strategy:
21
+ matrix:
22
+ ruby-version: ['2.6', '2.7', '3.0']
23
+
24
+ steps:
25
+ - uses: actions/checkout@v2
26
+ - name: Set up Ruby
27
+ # To automatically get bug fixes and new Ruby versions for ruby/setup-ruby,
28
+ # change this to (see https://github.com/ruby/setup-ruby#versioning):
29
+ # uses: ruby/setup-ruby@v1
30
+ uses: ruby/setup-ruby@473e4d8fe5dd94ee328fdfca9f8c9c7afc9dae5e
31
+ with:
32
+ ruby-version: ${{ matrix.ruby-version }}
33
+ bundler-cache: true # runs 'bundle install' and caches installed gems automatically
34
+ - name: Run tests
35
+ run: bundle exec rake
data/.ruby-version CHANGED
@@ -1 +1 @@
1
- 2.5.0
1
+ ruby-3.0.0
data/README.md CHANGED
@@ -1,11 +1,15 @@
1
1
  # Bech32 [![Build Status](https://travis-ci.org/azuchi/bech32rb.svg?branch=master)](https://travis-ci.org/azuchi/bech32rb) [![Gem Version](https://badge.fury.io/rb/bech32.svg)](https://badge.fury.io/rb/bech32) [![MIT License](http://img.shields.io/badge/license-MIT-blue.svg?style=flat)](LICENSE) <img src="http://segwit.co/static/public/images/logo.png" width="100">
2
2
 
3
- The implementation of the Bech32 encoder and decoder for Ruby.
3
+ The implementation of the Bech32/Bech32m encoder and decoder for Ruby.
4
4
 
5
5
  Bech32 is checksummed base32 format that is used in following Bitcoin address format.
6
6
 
7
7
  https://github.com/bitcoin/bips/blob/master/bip-0173.mediawiki
8
8
 
9
+ Bech32m is checksummed base32m format that is used in following Bitcoin address format.
10
+
11
+ https://github.com/bitcoin/bips/blob/master/bip-0350.mediawiki
12
+
9
13
  ## Installation
10
14
 
11
15
  Add this line to your application's Gemfile:
@@ -35,13 +39,15 @@ require 'bech32'
35
39
  Decode Bech32-encoded data into hrp part and data part.
36
40
 
37
41
  ```ruby
38
- hrp, data = Bech32.decode('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4')
42
+ hrp, data, spec = Bech32.decode('BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4')
39
43
 
40
44
  # hrp is human-readable part of Bech32 format
41
45
  'bc'
42
46
 
43
47
  # data is data part of Bech32 format
44
48
  [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]
49
+
50
+ # spec is whether Bech32::Encoding::BECH32 or Bech32::Encoding::BECH32M
45
51
  ```
46
52
 
47
53
  Decode Bech32-encoded Segwit address into `Bech32::SegwitAddr` instance.
@@ -77,7 +83,7 @@ Encode Bech32 human-readable part and data part into Bech32 string.
77
83
  hrp = 'bc'
78
84
  data = [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]
79
85
 
80
- bech = Bech32.encode(hrp, data)
86
+ bech = Bech32.encode(hrp, data, Bech32::Encoding::BECH32)
81
87
  => bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
82
88
  ```
83
89
 
@@ -92,6 +98,26 @@ segwit_addr.addr
92
98
  => bc1qw508d6qejxtdg4y5r3zarvary0c5xw7kv8f3t4
93
99
  ```
94
100
 
101
+ ### CLI
102
+
103
+ After installing the gem, the `bech32` command will be available. Encoding and decoding features are also available in the cli.
104
+
105
+ #### Encode
106
+
107
+ The `encode` command takes `HRP`, `data`, and type (`bech32` or `bech32m`) as arguments and outputs a bech32/bech32m string.
108
+
109
+ $ bech32 encode genesis 000409190707111719041a120308120a060c161408110d091b090009021b1e1d150e190215010d0a1603091e1f0b100609090d1a1c1a13030c120c0c0f1c020d1d1a0e170b1c17021018121e0a021c121a1c0d161b16131d1609130f1d13180f1e081d041d0a110f110d1313081c11100600180b000c08140c1e130e0f090c160e0018191e1d1c0016060c11101214121e19070d1a0c1c15020414001f10100c09090600181806001809080e180507021913031100030216141b100908160c1213120f1912011f07021c13190d1900170c1d1203040f071c1908050504130e080d0a100d130b03000a0a08191310090918120f11031104120c15180c15120a0f1919070c1c12060c1911091010120a0d191b040c1613020e1911081f000b1a0b0514150c1613010d0c1c030b17011805090119061e0b051e130c00030419000112030110181d011a000f020c0901080c1113060201041a0e1b060a15160506181c11140c1c1d0b1b14020c131e0b0f071519181e0b1f0e0a08170f1d0c05060e1c1b0e160c0f0a171d0b101a1a1f1417160e0d1414030e161b0a000709100d15020c000e010c00000000 bech32
110
+ genesis1qyfe883hey6jrgj2xvk5g3dfmfqfzm7a4wez4pd2krf7ltsxffd6u6nrvjvv0uzda6whtuhzscj72zuj6udkmknakfn0anc07gaya2303dnngu3sxqctqvg5v7nw0fvkwqce7auqkxv3sj5j7e8d6vu4zy5qlssvffxqccxqcfgwc98zenr3qrzk5msfgkvjnj0ejpl8zunedeqhvajry08ueg99ynwgd2sdntrq22gensffcj03r3yjv4cv4j20ee8vujxve3fssj2demyvknzwe3glqt6t954vknpdvurthpc9fpex7t97nvqryeqpjrpscap6q0zvfpgv3nxzpy6wmx24k9xcu35vuatm5zvn7t084ec7tlw2gh0av9xwumwkv02hats66l5hkwd55rwkm2q8fsd4zvqwpvqqqqtdc6rp
111
+
112
+ #### Decode
113
+
114
+ The `decode` command takes bech32/bech32m string as arguments and outputs `HRP`, `data`, and type.
115
+
116
+ $ bech32 decode genesis1qyfe883hey6jrgj2xvk5g3dfmfqfzm7a4wez4pd2krf7ltsxffd6u6nrvjvv0uzda6whtuhzscj72zuj6udkmknakfn0anc07gaya2303dnngu3sxqctqvg5v7nw0fvkwqce7auqkxv3sj5j7e8d6vu4zy5qlssvffxqccxqcfgwc98zenr3qrzk5msfgkvjnj0ejpl8zunedeqhvajry08ueg99ynwgd2sdntrq22gensffcj03r3yjv4cv4j20ee8vujxve3fssj2demyvknzwe3glqt6t954vknpdvurthpc9fpex7t97nvqryeqpjrpscap6q0zvfpgv3nxzpy6wmx24k9xcu35vuatm5zvn7t084ec7tlw2gh0av9xwumwkv02hats66l5hkwd55rwkm2q8fsd4zvqwpvqqqqtdc6rp
117
+ HRP: genesis
118
+ DATA: 000409190707111719041a120308120a060c161408110d091b090009021b1e1d150e190215010d0a1603091e1f0b100609090d1a1c1a13030c120c0c0f1c020d1d1a0e170b1c17021018121e0a021c121a1c0d161b16131d1609130f1d13180f1e081d041d0a110f110d1313081c11100600180b000c08140c1e130e0f090c160e0018191e1d1c0016060c11101214121e19070d1a0c1c15020414001f10100c09090600181806001809080e180507021913031100030216141b100908160c1213120f1912011f07021c13190d1900170c1d1203040f071c1908050504130e080d0a100d130b03000a0a08191310090918120f11031104120c15180c15120a0f1919070c1c12060c1911091010120a0d191b040c1613020e1911081f000b1a0b0514150c1613010d0c1c030b17011805090119061e0b051e130c00030419000112030110181d011a000f020c0901080c1113060201041a0e1b060a15160506181c11140c1c1d0b1b14020c131e0b0f071519181e0b1f0e0a08170f1d0c05060e1c1b0e160c0f0a171d0b101a1a1f1417160e0d1414030e161b0a000709100d15020c000e010c00000000
119
+ TYPE: bech32
120
+
95
121
  ## License
96
122
 
97
123
  The gem is available as open source under the terms of the [MIT License](http://opensource.org/licenses/MIT).
data/bech32.gemspec CHANGED
@@ -4,21 +4,22 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
  require 'bech32/version'
5
5
 
6
6
  Gem::Specification.new do |spec|
7
- spec.name = "bech32"
7
+ spec.name = 'bech32'
8
8
  spec.version = Bech32::VERSION
9
- spec.authors = ["Shigeyuki Azuchi"]
10
- spec.email = ["azuchi@haw.co.jp"]
9
+ spec.authors = ['Shigeyuki Azuchi']
10
+ spec.email = ['techmedia.think@gmail.com']
11
11
 
12
- spec.summary = %q{The implementation of Bech32 encoder and decoder.}
13
- spec.description = %q{The implementation of Bech32 encoder and decoder.}
14
- spec.homepage = "https://github.com/azuchi/bech32rb"
15
- spec.license = "MIT"
12
+ spec.summary = %q(The implementation of Bech32 encoder and decoder.)
13
+ spec.description = %q(The implementation of Bech32 encoder and decoder.)
14
+ spec.homepage = 'https://github.com/azuchi/bech32rb'
15
+ spec.license = 'MIT'
16
16
 
17
17
  spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
18
- spec.bindir = "exe"
18
+ spec.bindir = 'exe'
19
19
  spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
20
- spec.require_paths = ["lib"]
20
+ spec.require_paths = ['lib']
21
+ spec.add_runtime_dependency 'thor', '>= 1.1.0'
21
22
 
22
- spec.add_development_dependency "rake", "~> 10.0"
23
- spec.add_development_dependency "rspec", "~> 3.0"
23
+ spec.add_development_dependency 'rake', '>= 12.3.3'
24
+ spec.add_development_dependency 'rspec', '~> 3.0'
24
25
  end
data/exe/bech32 ADDED
@@ -0,0 +1,35 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ require 'bech32'
4
+ require 'thor'
5
+
6
+ class CLI < Thor
7
+
8
+ desc 'encode hrp data bech32/bech32m', 'Encoding data to bech32/bech32m string.'
9
+ def encode(hrp, data, type)
10
+ if type && !['bech32', 'bech32m'].include?(type)
11
+ puts 'Invalid type value. type must be bech32 or bech32m.'
12
+ else
13
+ spec = type.nil? || type == 'bech32' ? 1 : 2
14
+ data = [data].pack('H*').unpack('C*')
15
+ puts Bech32.encode(hrp, data, spec)
16
+ end
17
+ end
18
+
19
+ desc 'decode "bech32string"', 'Decoding bech32/bech32m string.'
20
+ def decode(bech32_str)
21
+ bech32 = Bech32.decode(bech32_str, bech32_str.length)
22
+ if bech32
23
+ puts <<~EOS
24
+ HRP: #{bech32[0]}
25
+ DATA: #{bech32[1].pack('C*').unpack1('H*')}
26
+ TYPE: #{bech32[2] == Bech32::Encoding::BECH32 ? 'bech32' : 'bech32m'}
27
+ EOS
28
+ else
29
+ puts 'Can not decode.'
30
+ end
31
+ end
32
+
33
+ end
34
+
35
+ CLI.start(ARGV)
data/lib/bech32.rb CHANGED
@@ -1,44 +1,50 @@
1
1
  module Bech32
2
2
 
3
+ module Encoding
4
+ BECH32 = 1
5
+ BECH32M = 2
6
+ end
7
+
3
8
  autoload :SegwitAddr, 'bech32/segwit_addr'
4
9
 
5
10
  SEPARATOR = '1'
6
11
 
7
12
  CHARSET = %w(q p z r y 9 x 8 g f 2 t v d w 0 s 3 j n 5 4 k h c e 6 m u a 7 l)
8
13
 
14
+ BECH32M_CONST = 0x2bc830a3
15
+
9
16
  module_function
10
17
 
11
18
  # Returns the encoded Bech32 string.
12
19
  #
13
20
  # require 'bech32'
14
21
  #
15
- # bech = Bech32.encode('bc', [])
22
+ # bech = Bech32.encode('bc', [], Bech32::Encoding::BECH32)
16
23
  #
17
24
  # <i>Generates:</i>
18
25
  # 'BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4' # bech
19
26
  #
20
- def encode(hrp, data)
21
- checksummed = data + create_checksum(hrp, data)
27
+ def encode(hrp, data, spec)
28
+ checksummed = data + create_checksum(hrp, data, spec)
22
29
  hrp + SEPARATOR + checksummed.map{|i|CHARSET[i]}.join
23
30
  end
24
31
 
25
- # Returns the Bach32 decoded hrp and data.
32
+ # Returns the Bech32 decoded hrp and data.
26
33
  #
27
34
  # require 'bech32'
28
35
  #
29
36
  # addr = 'BC1QW508D6QEJXTDG4Y5R3ZARVARY0C5XW7KV8F3T4'
30
- # hrp, data = Bech32.decode(addr)
37
+ # hrp, data, spec = Bech32.decode(addr)
31
38
  #
32
39
  # <i>Generates:</i>
33
40
  # 'bc' # hrp
34
41
  # [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
42
+ # 1 # spec see Bech32::Encoding
35
43
  #
36
44
  def decode(bech, max_length = 90)
37
- # check invalid bytes
38
- return nil if bech.scrub('?').include?('?')
39
45
  # check uppercase/lowercase
46
+ return nil if bech.bytes.index{|x| x < 33 || x > 126}
40
47
  return nil if (bech.downcase != bech && bech.upcase != bech)
41
- bech.each_char{|c|return nil if c.ord < 33 || c.ord > 126}
42
48
  bech = bech.downcase
43
49
  # check data length
44
50
  pos = bech.rindex(SEPARATOR)
@@ -49,20 +55,30 @@ module Bech32
49
55
  hrp = bech[0..pos-1]
50
56
  data = bech[pos+1..-1].each_char.map{|c|CHARSET.index(c)}
51
57
  # check checksum
52
- return nil unless verify_checksum(hrp, data)
53
- [hrp, data[0..-7]]
58
+ spec = verify_checksum(hrp, data)
59
+ spec ? [hrp, data[0..-7], spec] : nil
54
60
  end
55
61
 
56
62
  # Returns computed checksum values of +hrp+ and +data+
57
- def create_checksum(hrp, data)
63
+ def create_checksum(hrp, data, spec)
58
64
  values = expand_hrp(hrp) + data
59
- polymod = polymod(values + [0, 0, 0, 0, 0, 0]) ^ 1
65
+ const = (spec == Bech32::Encoding::BECH32M ? Bech32::BECH32M_CONST : 1)
66
+ polymod = polymod(values + [0, 0, 0, 0, 0, 0]) ^ const
60
67
  (0..5).map{|i|(polymod >> 5 * (5 - i)) & 31}
61
68
  end
62
69
 
63
70
  # Verify a checksum given Bech32 string
71
+ # @param [String] hrp hrp part.
72
+ # @param [Array[Integer]] data data array.
73
+ # @return [Integer] spec
64
74
  def verify_checksum(hrp, data)
65
- polymod(expand_hrp(hrp) + data) == 1
75
+ const = polymod(expand_hrp(hrp) + data)
76
+ case const
77
+ when 1
78
+ Encoding::BECH32
79
+ when BECH32M_CONST
80
+ Encoding::BECH32M
81
+ end
66
82
  end
67
83
 
68
84
  # Expand the hrp into values for checksum computation.
@@ -84,4 +100,4 @@ module Bech32
84
100
 
85
101
  private_class_method :polymod, :expand_hrp
86
102
 
87
- end
103
+ end
@@ -4,6 +4,7 @@ module Bech32
4
4
 
5
5
  HRP_MAINNET = 'bc'
6
6
  HRP_TESTNET = 'tb'
7
+ HRP_REGTEST = 'bcrt'
7
8
 
8
9
  attr_accessor :hrp # human-readable part
9
10
  attr_accessor :ver # witness version
@@ -29,19 +30,21 @@ module Bech32
29
30
 
30
31
  # Returns segwit address string which generated from hrp, witness version and witness program.
31
32
  def addr
32
- Bech32.encode(hrp, [ver] + convert_bits(prog, 8, 5))
33
+ spec = (ver == 0 ? Bech32::Encoding::BECH32 : Bech32::Encoding::BECH32M)
34
+ Bech32.encode(hrp, [ver] + convert_bits(prog, 8, 5), spec)
33
35
  end
34
36
 
35
37
  private
36
38
 
37
39
  def parse_addr(addr)
38
- @hrp, data = Bech32.decode(addr)
39
- raise 'Invalid address.' if hrp.nil? || data[0].nil? || ![HRP_MAINNET, HRP_TESTNET].include?(hrp)
40
+ @hrp, data, spec = Bech32.decode(addr)
41
+ raise 'Invalid address.' if hrp.nil? || data[0].nil? || ![HRP_MAINNET, HRP_TESTNET, HRP_REGTEST].include?(hrp)
40
42
  @ver = data[0]
41
43
  raise 'Invalid witness version' if @ver > 16
42
44
  @prog = convert_bits(data[1..-1], 5, 8, false)
43
45
  raise 'Invalid witness program' if @prog.nil? || @prog.length < 2 || @prog.length > 40
44
46
  raise 'Invalid witness program with version 0' if @ver == 0 && (@prog.length != 20 && @prog.length != 32)
47
+ raise 'Witness version and encoding spec do not match' if (@ver == 0 && spec != Bech32::Encoding::BECH32) || (@ver != 0 && spec != Bech32::Encoding::BECH32M)
45
48
  end
46
49
 
47
50
  def convert_bits(data, from, to, padding=true)
@@ -1,3 +1,5 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Bech32
2
- VERSION = "1.0.4"
3
- end
4
+ VERSION = '1.2.1'
5
+ end
metadata CHANGED
@@ -1,29 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: bech32
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.0.4
4
+ version: 1.2.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Shigeyuki Azuchi
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2018-02-17 00:00:00.000000000 Z
11
+ date: 2021-08-02 00:00:00.000000000 Z
12
12
  dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: thor
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - ">="
18
+ - !ruby/object:Gem::Version
19
+ version: 1.1.0
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - ">="
25
+ - !ruby/object:Gem::Version
26
+ version: 1.1.0
13
27
  - !ruby/object:Gem::Dependency
14
28
  name: rake
15
29
  requirement: !ruby/object:Gem::Requirement
16
30
  requirements:
17
- - - "~>"
31
+ - - ">="
18
32
  - !ruby/object:Gem::Version
19
- version: '10.0'
33
+ version: 12.3.3
20
34
  type: :development
21
35
  prerelease: false
22
36
  version_requirements: !ruby/object:Gem::Requirement
23
37
  requirements:
24
- - - "~>"
38
+ - - ">="
25
39
  - !ruby/object:Gem::Version
26
- version: '10.0'
40
+ version: 12.3.3
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: rspec
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -40,16 +54,17 @@ dependencies:
40
54
  version: '3.0'
41
55
  description: The implementation of Bech32 encoder and decoder.
42
56
  email:
43
- - azuchi@haw.co.jp
44
- executables: []
57
+ - techmedia.think@gmail.com
58
+ executables:
59
+ - bech32
45
60
  extensions: []
46
61
  extra_rdoc_files: []
47
62
  files:
63
+ - ".github/workflows/main.yml"
48
64
  - ".gitignore"
49
65
  - ".rspec"
50
66
  - ".ruby-gemset"
51
67
  - ".ruby-version"
52
- - ".travis.yml"
53
68
  - CODE_OF_CONDUCT.md
54
69
  - Gemfile
55
70
  - LICENSE.txt
@@ -58,6 +73,7 @@ files:
58
73
  - bech32.gemspec
59
74
  - bin/console
60
75
  - bin/setup
76
+ - exe/bech32
61
77
  - lib/bech32.rb
62
78
  - lib/bech32/segwit_addr.rb
63
79
  - lib/bech32/version.rb
@@ -80,8 +96,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
80
96
  - !ruby/object:Gem::Version
81
97
  version: '0'
82
98
  requirements: []
83
- rubyforge_project:
84
- rubygems_version: 2.7.3
99
+ rubygems_version: 3.2.3
85
100
  signing_key:
86
101
  specification_version: 4
87
102
  summary: The implementation of Bech32 encoder and decoder.
data/.travis.yml DELETED
@@ -1,7 +0,0 @@
1
- language: ruby
2
- rvm:
3
- - 2.1
4
- - 2.2.2
5
- - 2.3.0
6
- - 2.4.0
7
- - 2.5.0