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