class Mastercoin::Util

Public Class Methods

get_sequence(bitcoin_address, encoding = false) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 42
def self.get_sequence(bitcoin_address, encoding = false)
  decoded = Bitcoin.decode_base58(bitcoin_address)
  seq = decoded[2..3].to_i(16)

  if encoding
     seq -= 1
  end

  if seq < 0
    seq += 256
  end

  return seq
end
multiple_hash(target, times = 1) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 22
def self.multiple_hash(target, times = 1)
  times -= 1
  new_target = Digest::SHA256.hexdigest(target).upcase
  if times > 0 
    return multiple_hash(new_target, times)
  end

  return new_target
end
sort_and_strip_keys(keys) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 12
def self.sort_and_strip_keys(keys)
  Util.sort_keys(keys).collect{|key| Util.strip_key(key)}
end
sort_keys(public_keys) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 3
def self.sort_keys(public_keys)
  public_keys.sort{|x,y| x[0..1] <=> y[0..1]}
end
strip_key(key) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 7
def self.strip_key(key)
  return key[2..-1]
end
valid_ecdsa_point?(pub_key) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 32
def self.valid_ecdsa_point?(pub_key)
  begin
    Bitcoin::Key.new(nil, pub_key).addr
  rescue OpenSSL::PKey::EC::Point::Error
    return false
  end

  return true
end
xor_pack_unpack_strings(s1, s2) click to toggle source
# File lib/mastercoin-ruby/util.rb, line 16
def self.xor_pack_unpack_strings(s1, s2)
  s1_bytes = [s1].pack("H*").unpack("C*")
  s2_bytes = [s2].pack("H*").unpack("C*")
  s1_bytes.zip(s2_bytes).map { |a, b| (a ^ b).to_s(16).rjust(2,"0") }.join
end