Module: Mnam::Util::Crypto

Defined in:
lib/mnam/util/crypto.rb

Class Method Summary collapse

Class Method Details

.get_address(key, network_address = '17') ⇒ Object



20
21
22
# File 'lib/mnam/util/crypto.rb', line 20

def self.get_address(key, network_address = '17')
  BTC::Base58.base58check_from_data([network_address.to_i(16)].pack('c') + Digest::RMD160.digest(key.public_key))
end

.get_key(secret) ⇒ Object



6
7
8
# File 'lib/mnam/util/crypto.rb', line 6

def self.get_key(secret)
  BTC::Key.new(:private_key => Digest::SHA256.digest(secret), :public_key_compressed => true)
end

.second_verify(transaction, second_public_key_hex) ⇒ Object



15
16
17
18
# File 'lib/mnam/util/crypto.rb', line 15

def self.second_verify(transaction, second_public_key_hex)
  public_only_key = BTC::Key.new(:public_key => [second_public_key_hex].pack('H*'))
  public_only_key.verify_ecdsa_signature([transaction.sign_signature].pack('H*'), Digest::SHA256.digest(transaction.to_bytes(false)))
end

.verify(transaction) ⇒ Object



10
11
12
13
# File 'lib/mnam/util/crypto.rb', line 10

def self.verify(transaction)
  public_only_key = BTC::Key.new(:public_key => [transaction.sender_public_key].pack('H*'))
  public_only_key.verify_ecdsa_signature([transaction.signature].pack('H*'), Digest::SHA256.digest(transaction.to_bytes))
end