wallet_validator 0.3.3 → 0.4.0

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: f3ac603fed93cd9dce85b3ffe8ea60e10489721c4f55d16296f6ae0c35b6c13b
4
- data.tar.gz: 8852e861273715a6d05362427c2258e23ae5dddb34b849d3afa58cb3b94b0e23
3
+ metadata.gz: 430bb1c8e7832cf491c7642d2b96b87633e495b52507d95224460ddbf0bb84c2
4
+ data.tar.gz: 7dc17614a55cb15e5474213f4e44dfae29f7ad379796d267967f42d1d84f08ff
5
5
  SHA512:
6
- metadata.gz: 5f63d1547da43cf4c0593e4eca8ac87d5ce38445f3b3cea1c2574d3c816e8440d55c32a7b4cacbaacadb6183f2dcb2e6cefc56da208834207600bf132aed23c6
7
- data.tar.gz: a8e8eade81642220cda1d0a76a8df52cf48d812e3cbcacb470362a420b87b2c90f0ff003372b5b4a71646effc617253167fda255a9d5a2885fe1ae31e63160ea
6
+ metadata.gz: 696552c3e4a11edce426cf87d8f30edb7be113377a5ae626687b88e054cc0213081aee06291af1c53e59e458a45408e3a4e44f85fa8cd463f8e59ca1d84652b1
7
+ data.tar.gz: 0dfc1143a027549803106e5afe24488154d0e1d31d023352521db32ce2fb86ef364f78dfe638fa2f8041ffd7d96bcd6a18ca0e611b86490453de83b7b722a5e1
data/Gemfile CHANGED
@@ -5,4 +5,4 @@ gemspec
5
5
 
6
6
  gem "rake", "~> 12.0"
7
7
  gem "rspec", "~> 3.0"
8
- gem "digest-sha3"
8
+ gem "digest-sha3"
data/Gemfile.lock CHANGED
@@ -1,13 +1,22 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wallet_validator (0.3.2)
4
+ wallet_validator (0.3.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
+ base58 (0.2.3)
10
+ cbor (0.5.9.6)
11
+ coderay (1.1.3)
9
12
  diff-lcs (1.4.4)
13
+ digest-crc (0.6.4)
14
+ rake (>= 12.0.0, < 14.0.0)
10
15
  digest-sha3 (1.1.0)
16
+ method_source (1.0.0)
17
+ pry (0.14.1)
18
+ coderay (~> 1.1)
19
+ method_source (~> 1.0)
11
20
  rake (12.3.3)
12
21
  rspec (3.10.0)
13
22
  rspec-core (~> 3.10.0)
@@ -27,7 +36,11 @@ PLATFORMS
27
36
  ruby
28
37
 
29
38
  DEPENDENCIES
39
+ base58
40
+ cbor
41
+ digest-crc
30
42
  digest-sha3
43
+ pry
31
44
  rake (~> 12.0)
32
45
  rspec (~> 3.0)
33
46
  wallet_validator!
@@ -1,4 +1,3 @@
1
-
2
1
  module WalletValidator
3
2
  class Ada < Btc
4
3
  CURRENCY_ATTR = {
@@ -17,11 +16,19 @@ module WalletValidator
17
16
  }.freeze
18
17
 
19
18
  def valid?
20
- Crypto::Bech32.valid?(address, attribute["bech32"]["hrp"], attribute["bech32"]["separator"], attribute["bech32"]["length_check"])
19
+ valid_address_v1? || valid_address_shelley?
21
20
  end
22
21
 
23
22
  private
24
23
 
24
+ def valid_address_v1?
25
+ address.start_with?("DdzFFzCqrhs")
26
+ end
27
+
28
+ def valid_address_shelley?
29
+ Crypto::Bech32.valid?(address, attribute["bech32"]["hrp"], attribute["bech32"]["separator"])
30
+ end
31
+
25
32
  def attribute
26
33
  is_testnet && CURRENCY_ATTR["testnet"] ? CURRENCY_ATTR["testnet"] : CURRENCY_ATTR["main"]
27
34
  end
@@ -8,20 +8,18 @@ module WalletValidator
8
8
  "bech32" => {
9
9
  "hrp" => "bnb", # hrp
10
10
  "separator" => "1", # separator
11
- "length_check" => [38] # length check
12
11
  },
13
12
  },
14
13
  "testnet" => {
15
14
  "bech32" => {
16
15
  "hrp" => "tbnb", # hrp
17
16
  "separator" => "1", # separator
18
- "length_check" => [38] # length check
19
17
  }
20
18
  }
21
19
  }.freeze
22
20
 
23
21
  def valid?
24
- Crypto::Bech32.valid?(address, attribute["bech32"]["hrp"], attribute["bech32"]["separator"], attribute["bech32"]["length_check"])
22
+ Crypto::Bech32.valid?(address, attribute["bech32"]["hrp"], attribute["bech32"]["separator"])
25
23
  end
26
24
 
27
25
  private
@@ -37,7 +37,7 @@ module WalletValidator
37
37
 
38
38
  if filter_def
39
39
  # false時繼續往下
40
- return true if Crypto::Bech32.valid?(address, filter_def["hrp"], filter_def["separator"], filter_def["length_check"])
40
+ return true if Crypto::Bech32.valid?(address, filter_def["hrp"], filter_def["separator"])
41
41
  end
42
42
 
43
43
  filter = attribute["filter"]
@@ -1,16 +1,13 @@
1
1
  module Crypto
2
2
  module Bech32
3
- LENGTH_CHECK_SET = [39, 59, 98].freeze
4
3
  CHARSET = "qpzry9x8gf2tvdw0s3jn54khce6mua7l".split(//)
5
4
  GENERATOR = [0x3b6a57b2, 0x26508e6d, 0x1ea119fa, 0x3d4233dd, 0x2a1462b3].freeze
6
5
 
7
- def self.valid?(address, hrp, separator, length_set = LENGTH_CHECK_SET)
8
- length_set ||= LENGTH_CHECK_SET # 歸正
6
+ def self.valid?(address, hrp, separator)
9
7
  address = address.downcase.strip
10
8
 
11
9
  match = address.match(/^#{hrp}#{separator}([\da-z]+)$/)
12
10
  return false if !match
13
- return false if !length_set.include?(match[1].length)
14
11
 
15
12
  pos = address.rindex(separator)
16
13
  return false if pos.nil? || pos < 1 || pos + 7 > address.length || address.length > 108
@@ -1,3 +1,3 @@
1
1
  module WalletValidator
2
- VERSION = "0.3.3"
2
+ VERSION = "0.4.0"
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: wallet_validator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.3
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Nic
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2021-10-18 00:00:00.000000000 Z
11
+ date: 2021-10-22 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Write a longer description or delete this line.
14
14
  email: