class Eth::Key
Attributes
private_key[RW]
public_key[RW]
Public Class Methods
decrypt(data, password)
click to toggle source
# File lib/eth/key.rb, line 14 def self.decrypt(data, password) priv = Decrypter.perform data, password default priv: priv end
default(priv: nil)
click to toggle source
# File lib/eth/key.rb, line 39 def default(priv: nil) key = self.new private_key = MoneyTree::PrivateKey.new key: priv public_key = MoneyTree::PublicKey.new(private_key, compressed: false) key.private_key = private_key key.public_key = public_key return key end
encrypt(key, password)
click to toggle source
# File lib/eth/key.rb, line 8 def self.encrypt(key, password) key = new(priv: key) unless key.is_a?(Key) Encrypter.perform key.private_hex, password end
from_node(node)
click to toggle source
# File lib/eth/key.rb, line 30 def from_node(node) key = self.new private_key = MoneyTree::PrivateKey.new(key: node.private_key.to_hex) public_key = MoneyTree::PublicKey.new(node.private_key, compressed: false) key.private_key = private_key key.public_key = public_key return key end
from_private_key_hex(private_key_hex)
click to toggle source
# File lib/eth/key.rb, line 20 def from_private_key_hex(private_key_hex) private_key = MoneyTree::PrivateKey.new(key: private_key_hex) private_key.remove_instance_variable(:@raw_key) private_key.options[:key] = nil key = self.new key.private_key = private_key key.public_key = MoneyTree::PublicKey.new private_key, compressed: false return key end
Public Instance Methods
address()
click to toggle source
# File lib/eth/key.rb, line 67 def address Utils.public_key_to_address public_hex end
Also aliased as: to_address
private_hex()
click to toggle source
def initialize(priv: nil) @private_key = MoneyTree::PrivateKey.new key: priv @public_key = MoneyTree::PublicKey.new private_key
, compressed: false end
# File lib/eth/key.rb, line 55 def private_hex private_key.to_hex end
public_bytes()
click to toggle source
# File lib/eth/key.rb, line 59 def public_bytes public_key.to_bytes end
public_hex()
click to toggle source
# File lib/eth/key.rb, line 63 def public_hex public_key.to_hex end
sign(message)
click to toggle source
# File lib/eth/key.rb, line 72 def sign(message) sign_hash message_hash(message) end
sign_hash(hash)
click to toggle source
# File lib/eth/key.rb, line 76 def sign_hash(hash) loop do signature = OpenSsl.sign_compact hash, private_hex, public_hex return signature if valid_s? signature end end
verify_signature(message, signature)
click to toggle source
# File lib/eth/key.rb, line 83 def verify_signature(message, signature) hash = message_hash(message) public_hex == OpenSsl.recover_compact(hash, signature) end
Private Instance Methods
message_hash(message)
click to toggle source
# File lib/eth/key.rb, line 91 def message_hash(message) Utils.keccak256 message end
valid_s?(signature)
click to toggle source
# File lib/eth/key.rb, line 95 def valid_s?(signature) s_value = Utils.v_r_s_for(signature).last s_value <= Secp256k1::N/2 && s_value != 0 end