class Base58GMP

Constants

ALPHABETS
BASE58_LENGTH_MD5
DEFAULT_ALPHABET
GMP_ALPHABET
VERSION

Public Class Methods

alphabet_digits(alphabet) click to toggle source
# File lib/base58_gmp.rb, line 62
def self.alphabet_digits(alphabet)
  alphabet = normalize_alphabet alphabet

  unless ALPHABETS.key? alphabet
    fail ArgumentError, "Alphabet is invalid: #{alphabet}"
  end

  return ALPHABETS[alphabet]
end
base58_to_integer(base58, alphabet = DEFAULT_ALPHABET) click to toggle source
# File lib/base58_gmp.rb, line 33
def self.base58_to_integer(base58, alphabet = DEFAULT_ALPHABET)
  unless base58.is_a? String
    fail ArgumentError, 'Base58 argument is not a string.'
  end

  unless normalize_alphabet(alphabet) == GMP_ALPHABET
    base58 = from_to(base58, alphabet, GMP_ALPHABET)
  end

  GMP::Z.new(base58, 58)
end
Also aliased as: decode
decode(base58, alphabet = DEFAULT_ALPHABET)
Alias for: base58_to_integer
encode(integer, alphabet = DEFAULT_ALPHABET)
Alias for: integer_to_base58
from_to(base58, from_alphabet, to_alphabet) click to toggle source
# File lib/base58_gmp.rb, line 45
def self.from_to(base58, from_alphabet, to_alphabet)
  unless base58.is_a? String
    fail ArgumentError, 'Base58 argument is not a string.'
  end

  from_digits = alphabet_digits from_alphabet
  to_digits = alphabet_digits to_alphabet

  from_digits != to_digits \
    ? base58.tr(from_digits, to_digits) \
    : base58
end
integer_to_base58(integer, alphabet = DEFAULT_ALPHABET) click to toggle source
# File lib/base58_gmp.rb, line 23
def self.integer_to_base58(integer, alphabet = DEFAULT_ALPHABET)
  base58 = integer.is_a?(GMP::Z) \
         ? integer.to_s(58) \
         : GMP::Z(integer).to_s(58)

  normalize_alphabet(alphabet) == GMP_ALPHABET \
    ? base58 \
    : from_to(base58, GMP_ALPHABET, alphabet)
end
Also aliased as: encode
md5(data, alphabet = DEFAULT_ALPHABET, opts = {})
Alias for: md5_base58
md5_base58(data, alphabet = DEFAULT_ALPHABET, opts = {}) click to toggle source
# File lib/base58_gmp.rb, line 72
def self.md5_base58(data, alphabet = DEFAULT_ALPHABET, opts = {})
  base58 = integer_to_base58(Digest::MD5.hexdigest(data).hex, alphabet)

  opts.key?(:pad) && opts[:pad] \
    ? base58.rjust(BASE58_LENGTH_MD5, alphabet_digits(alphabet)[0]) \
    : base58
end
Also aliased as: md5
normalize_alphabet(alphabet) click to toggle source
# File lib/base58_gmp.rb, line 58
def self.normalize_alphabet(alphabet)
  alphabet.to_sym.downcase
end