adequate_crypto_address 0.1.9 → 0.1.10

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: cc3f7b31f03344b8164799a312194a5bb5dae5cf60534fd27b2b63ac2f34f71e
4
- data.tar.gz: 1d27ef4e6b5bfe339bded354851535180d2253abc669201821d156f2d4ef2208
3
+ metadata.gz: 10e7258877cecbf393bb9c822529224e788a8a2e1c7e1ea0afac613d91d9f105
4
+ data.tar.gz: a8ca65293e94f0d3d8f66b7083ed6ea41f3cc44160d5a816d5ca7c83ae73a689
5
5
  SHA512:
6
- metadata.gz: 8a0605d3bf6f9a4a152d2a7eac314957c7144a866b8d15e102568cb620599aab118f7cbaa9ca0aad5a4c3c544abe3d547a5c5de7d05e0a225920c5e3a0036c70
7
- data.tar.gz: 1bbcd35c29eaea4834b245cfeba3c335b430430e2e84a18a9e216ded2a3e679bb3e04b569b42fc48fcdf600b43b20dac3f03255cc1e9644b65fa090ca45dcaf7
6
+ metadata.gz: 6cab54b49e7dc468a9b33c5efb12dd33861ed5be4c1d991c7b560e83c52dbec1b4898ca5b544c925d28a1774c425b67573e6056ffbb086ab0dd39da120769685
7
+ data.tar.gz: 3f701615de8ea0e510796125ad180d37d36712d3ac829846736d723d71943b043bc83bd1d3e834408deb83ab15034225d5aee3855b20ee36fd14c22afedc5058
data/Gemfile CHANGED
@@ -4,7 +4,7 @@ source 'https://rubygems.org'
4
4
 
5
5
  git_source(:github) { |repo_name| "https://github.com/#{repo_name}" }
6
6
 
7
- gem 'coveralls', '>= 0.8.17', require: false
7
+ gem 'coveralls', '>= 0.8.23', require: false
8
8
  gem 'pry', require: false
9
9
 
10
10
  gem 'rubocop-rspec'
data/Makefile CHANGED
@@ -3,4 +3,4 @@ build:
3
3
  gem build adequate_crypto_address.gemspec
4
4
 
5
5
  push:
6
- gem push adequate_crypto_address-0.1.9.gem
6
+ gem push adequate_crypto_address-0.1.10.gem
@@ -19,6 +19,6 @@ Gem::Specification.new do |spec|
19
19
 
20
20
  spec.add_dependency 'base58', '~> 0.2'
21
21
  spec.add_dependency 'keccak', '~> 1.3'
22
- spec.add_development_dependency 'rake', '~> 13.0'
23
- spec.add_development_dependency 'rspec', '~> 3.10'
22
+ spec.add_development_dependency 'rake', '~> 13.2'
23
+ spec.add_development_dependency 'rspec', '~> 3.13'
24
24
  end
@@ -33,6 +33,8 @@ module AdequateCryptoAddress
33
33
  return :segwit_v0_keyhash if witness_version == 0 && witness_program.bytesize == 20
34
34
 
35
35
  return :segwit_v0_scripthash if witness_version == 0 && witness_program.bytesize == 32
36
+
37
+ return :taproot if witness_version == 1 && witness_program.bytesize == 32
36
38
  end
37
39
 
38
40
  base58_decoded = begin
@@ -72,6 +74,7 @@ module AdequateCryptoAddress
72
74
  length = program.size
73
75
  return nil if length < 2 || length > 40
74
76
  return nil if data[0] == 0 && length != 20 && length != 32
77
+ return nil if data[0] == 1 && length != 32
75
78
 
76
79
  program_hex = program.pack('C*').unpack('H*').first
77
80
  [data[0], program_hex]
@@ -121,7 +121,9 @@ module AdequateCryptoAddress
121
121
  end
122
122
 
123
123
  return nil if have_lower && have_upper
124
- return nil if chk != 1
124
+
125
+ # Accept both Bech32 (chk == 1) and Bech32m (chk == 0x2bc830a3)
126
+ return nil unless chk == 1 || chk == 0x2bc830a3
125
127
 
126
128
  [hrp.pack('C*'), data]
127
129
  end
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module AdequateCryptoAddress
4
- VERSION = '0.1.9'
4
+ VERSION = '0.1.10'
5
5
  end
@@ -29,7 +29,12 @@ RSpec.describe(AdequateCryptoAddress) do
29
29
  expect(described_class).to be_valid('bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq', 'bitcoin')
30
30
  expect(described_class).to be_valid('bc1qar0srrr7xfkvy5l643lydnw9re59gtzzwf5mdq', 'bitcoin', :segwit_v0_keyhash)
31
31
  expect(described_class).to be_valid('bc1qc7slrfxkknqcq2jevvvkdgvrt8080852dfjewde450xdlk4ugp7szw5tk9', 'BTC')
32
- expect(described_class).to be_valid('bc1qc7slrfxkknqcq2jevvvkdgvrt8080852dfjewde450xdlk4ugp7szw5tk9', 'bitcoin', 'segwit_v0_scripthash')
32
+ expect(described_class).to be_valid('bc1qc7slrfxkknqcq2jevvvkdgvrt8080852dfjewde450xdlk4ugp7szw5tk9', 'bitcoin', :segwit_v0_scripthash)
33
+ end
34
+
35
+ it 'validates taproot addresses' do
36
+ expect(described_class).to be_valid('bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr', 'bitcoin')
37
+ expect(described_class).to be_valid('bc1p5cyxnuxmeuwuvkwfem96lqzszd02n6xdcjrs20cac6yqjjwudpxqkedrcr', 'BTC', :taproot)
33
38
  end
34
39
 
35
40
  it 'validates wrong addresses' do
@@ -46,6 +51,8 @@ RSpec.describe(AdequateCryptoAddress) do
46
51
  expect(described_class).not_to be_valid('bc1zw508d6qejxtdg4y5r3zarvaryvqyzf3du', 'bitcoin')
47
52
  expect(described_class).not_to be_valid('tb1qrp33g0q5c5txsp9arysrx4k6zdkfs4nce4xj0gdcccefvpysxf3pjxtptv', 'Bitcoin')
48
53
  expect(described_class).not_to be_valid('bc1gmk9yu', 'bitcoin')
54
+ expect(described_class).not_to be_valid('bc1p5d7rjq7g6rdk2yhzks9smlqfpuecypus6uf4e9qrsssrwc09', 'bitcoin') # invalid checksum
55
+ expect(described_class).not_to be_valid('bc1p5d7rjq7g6rdk2yhzks9smlqfpuecypus6uf4e9qrsssrwc0', 'bitcoin') # too short
49
56
  end
50
57
  end
51
58
 
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: adequate_crypto_address
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.9
4
+ version: 0.1.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - vtm
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2022-09-14 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: base58
@@ -44,30 +43,29 @@ dependencies:
44
43
  requirements:
45
44
  - - "~>"
46
45
  - !ruby/object:Gem::Version
47
- version: '13.0'
46
+ version: '13.2'
48
47
  type: :development
49
48
  prerelease: false
50
49
  version_requirements: !ruby/object:Gem::Requirement
51
50
  requirements:
52
51
  - - "~>"
53
52
  - !ruby/object:Gem::Version
54
- version: '13.0'
53
+ version: '13.2'
55
54
  - !ruby/object:Gem::Dependency
56
55
  name: rspec
57
56
  requirement: !ruby/object:Gem::Requirement
58
57
  requirements:
59
58
  - - "~>"
60
59
  - !ruby/object:Gem::Version
61
- version: '3.10'
60
+ version: '3.13'
62
61
  type: :development
63
62
  prerelease: false
64
63
  version_requirements: !ruby/object:Gem::Requirement
65
64
  requirements:
66
65
  - - "~>"
67
66
  - !ruby/object:Gem::Version
68
- version: '3.10'
67
+ version: '3.13'
69
68
  description: A Ruby Library for dealing with validation cryptocurrency adresses.
70
- email:
71
69
  executables: []
72
70
  extensions: []
73
71
  extra_rdoc_files: []
@@ -105,7 +103,6 @@ homepage: https://github.com/vtm9/adequate_crypto_address
105
103
  licenses:
106
104
  - MIT
107
105
  metadata: {}
108
- post_install_message:
109
106
  rdoc_options: []
110
107
  require_paths:
111
108
  - lib
@@ -120,8 +117,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
120
117
  - !ruby/object:Gem::Version
121
118
  version: '0'
122
119
  requirements: []
123
- rubygems_version: 3.2.22
124
- signing_key:
120
+ rubygems_version: 3.6.9
125
121
  specification_version: 4
126
122
  summary: A Ruby Library for dealing with validation cryptocurrency adresses.
127
123
  test_files: []