Class: WaffleAPI::AddressValidator::DigestUtilities
- Inherits:
-
Object
- Object
- WaffleAPI::AddressValidator::DigestUtilities
- Defined in:
- lib/waffle_api/address_validator.rb
Overview
Utilities are in a class to make them private
Class Method Summary collapse
Class Method Details
.b58_decode(value, length) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 |
# File 'lib/waffle_api/address_validator.rb', line 30 def self.b58_decode(value, length) long_value = 0 index = 0 result = "" value.reverse.each_char do |c| long_value += B58_CHARS.index(c) * (B58_BASE ** index) index += 1 end while long_value >= 256 do div, mod = long_value.divmod 256 result = mod.chr + result long_value = div end result = long_value.chr + result if result.length < length result = 0.chr * (length - result.length) + result end result end |
.version(address) ⇒ Object
18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/waffle_api/address_validator.rb', line 18 def self.version(address) decoded = b58_decode(address, 25) version = decoded[0, 1] checksum = decoded[-4, decoded.length] vh160 = decoded[0, decoded.length - 4] hashed = (Digest::SHA2.new << (Digest::SHA2.new << vh160).digest).digest hashed[0, 4] == checksum ? version[0] : nil end |