class Crypto::Keys::KeyRing
Attributes
address[R]
private_key[R]
public_key[R]
seed[R]
wif[R]
Public Class Methods
generate(network = MAINNET)
click to toggle source
# File lib/crypto/key_ring.rb, line 23 def self.generate(network = MAINNET) key_pair = KeyUtils.create_new_keypair private_key = PrivateKey.new(key_pair[:hex_private_key], network) public_key = PublicKey.new(key_pair[:hex_public_key], network) KeyRing.new(private_key, public_key, private_key.wif, public_key.address) end
generate_hd(seed = nil, derivation = nil, network = MAINNET)
click to toggle source
# File lib/crypto/key_ring.rb, line 30 def self.generate_hd(seed = nil, derivation = nil, network = MAINNET) _seed = seed.nil? ? SecureRandom.hex(64) : seed keys = (derivation.nil? || derivation.nil? && derivation == "m") ? HDKEY::KeyRing.get_master_key_from_seed(_seed) : HDKEY::KeyRing.derive_path(derivation, _seed, HDKEY::HARDENED_AXENTRO) private_key = PrivateKey.new(keys.private_key, network) _public_key = HDKEY::KeyRing.get_public_key(keys.private_key)[2..-1] public_key = PublicKey.new(_public_key, network) KeyRing.new(private_key, public_key, private_key.wif, public_key.address, _seed) end
is_valid?(public_key, wif, address)
click to toggle source
# File lib/crypto/key_ring.rb, line 41 def self.is_valid?(public_key, wif, address) address = Address.from(address) wif = Wif.new(wif) raise AxentroError, "network mismatch between address and wif" if address.network != wif.network public_key = PublicKey.from_hex(public_key, address.network) raise AxentroError, "public key mismatch between public key and wif" if public_key.as_hex != wif.public_key.as_hex true end
new(private_key, public_key, wif, address, seed = nil)
click to toggle source
# File lib/crypto/key_ring.rb, line 15 def initialize(private_key, public_key, wif, address, seed = nil) @private_key = private_key @public_key = public_key @wif = wif @address = address @seed = seed end