wallet_validator 0.4.0 → 0.4.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
2
  SHA256:
3
- metadata.gz: 430bb1c8e7832cf491c7642d2b96b87633e495b52507d95224460ddbf0bb84c2
4
- data.tar.gz: 7dc17614a55cb15e5474213f4e44dfae29f7ad379796d267967f42d1d84f08ff
3
+ metadata.gz: 62df34f52cd15408080c248728737ddb9cd091b87e812b987332f6e74d10f32f
4
+ data.tar.gz: c68015b87a9982cd45a67bd7283861dffb6a1904fb5377a07b9cbb643dc46d88
5
5
  SHA512:
6
- metadata.gz: 696552c3e4a11edce426cf87d8f30edb7be113377a5ae626687b88e054cc0213081aee06291af1c53e59e458a45408e3a4e44f85fa8cd463f8e59ca1d84652b1
7
- data.tar.gz: 0dfc1143a027549803106e5afe24488154d0e1d31d023352521db32ce2fb86ef364f78dfe638fa2f8041ffd7d96bcd6a18ca0e611b86490453de83b7b722a5e1
6
+ metadata.gz: d57a6dfb2572802af15eb7769fe66b2109460d62af177b41b9e5d3564b47d4cdb4c877b728b1a04fcf36a8d79b94902aaff9b1c48973896ee8556514790c2734
7
+ data.tar.gz: 4cdb5f619afa1a1db0ff9ebc5bf65946890e3890e026dbc4eb94199954e7cc69461788bf6eef3a56e6eade759ba88dcb44b2a8668051f5bc4bdee7b7126dc21d
data/Gemfile CHANGED
@@ -6,3 +6,5 @@ gemspec
6
6
  gem "rake", "~> 12.0"
7
7
  gem "rspec", "~> 3.0"
8
8
  gem "digest-sha3"
9
+ gem "base58"
10
+ gem "cbor"
data/Gemfile.lock CHANGED
@@ -1,22 +1,15 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- wallet_validator (0.3.3)
4
+ wallet_validator (0.4.3)
5
5
 
6
6
  GEM
7
7
  remote: https://rubygems.org/
8
8
  specs:
9
9
  base58 (0.2.3)
10
10
  cbor (0.5.9.6)
11
- coderay (1.1.3)
12
11
  diff-lcs (1.4.4)
13
- digest-crc (0.6.4)
14
- rake (>= 12.0.0, < 14.0.0)
15
12
  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)
20
13
  rake (12.3.3)
21
14
  rspec (3.10.0)
22
15
  rspec-core (~> 3.10.0)
@@ -38,9 +31,7 @@ PLATFORMS
38
31
  DEPENDENCIES
39
32
  base58
40
33
  cbor
41
- digest-crc
42
34
  digest-sha3
43
- pry
44
35
  rake (~> 12.0)
45
36
  rspec (~> 3.0)
46
37
  wallet_validator!
@@ -22,7 +22,19 @@ module WalletValidator
22
22
  private
23
23
 
24
24
  def valid_address_v1?
25
- address.start_with?("DdzFFzCqrhs")
25
+ begin
26
+ decoded_baase58 = Crypto::Base58.base58_to_binary(address, "ADA")
27
+
28
+ tagged, valid_crc = CBOR.decode(decoded_baase58)
29
+
30
+ return false if !valid_crc.is_a?(Numeric)
31
+
32
+ crc = Zlib::crc32(tagged.value)
33
+
34
+ return crc == valid_crc
35
+ rescue
36
+ return false
37
+ end
26
38
  end
27
39
 
28
40
  def valid_address_shelley?
@@ -3,10 +3,16 @@ module Crypto
3
3
  ALPHABET = {
4
4
  :flickr => "123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ", # This is the default
5
5
  :ripple => "rpshnaf39wBUDNEGHJKLM4PQRST7VWXYZ2bcdeCg65jkm8oFqi1tuvAxyz",
6
+ :cardano => "123456789ABCDEFGHJKLMNPQRSTUVWXYZabcdefghijkmnopqrstuvwxyz"
6
7
  }.freeze
7
8
 
8
9
  def self.base58_to_binary(base58_val, currency)
9
- alphabet = currency.downcase == "xrp" ? ALPHABET[:ripple] : ALPHABET[:flickr]
10
+ alphabet = case currency.downcase
11
+ when "xrp"
12
+ ALPHABET[:ripple]
13
+ else
14
+ ALPHABET[:flickr]
15
+ end
10
16
 
11
17
  nzeroes = nil
12
18
  base58_val.chars.each_with_index do |c, index|
@@ -26,7 +32,14 @@ module Crypto
26
32
  end
27
33
 
28
34
  def self.base58_to_int(base58_val, currency)
29
- alphabet = currency.downcase == "xrp" ? ALPHABET[:ripple] : ALPHABET[:flickr]
35
+ alphabet = case currency.downcase
36
+ when "xrp"
37
+ ALPHABET[:ripple]
38
+ when "ada"
39
+ ALPHABET[:cardano]
40
+ else
41
+ ALPHABET[:flickr]
42
+ end
30
43
 
31
44
  int_val = 0
32
45
  base58_val.reverse.split(//).each_with_index do |char, index|
@@ -1,3 +1,3 @@
1
1
  module WalletValidator
2
- VERSION = "0.4.0"
2
+ VERSION = "0.4.4"
3
3
  end
@@ -1,3 +1,6 @@
1
+ require "cbor"
2
+ require 'zlib'
3
+
1
4
  require "wallet_validator/config"
2
5
 
3
6
  require "wallet_validator/crypto/bech32"
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.4.0
4
+ version: 0.4.4
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-22 00:00:00.000000000 Z
11
+ date: 2021-10-25 00:00:00.000000000 Z
12
12
  dependencies: []
13
13
  description: Write a longer description or delete this line.
14
14
  email: