class Bitcoin::Key

Public Class Methods

new(priv_key: nil, pubkey: nil, key_type: nil, compressed: true, allow_hybrid: false) click to toggle source
# File lib/block_io/extended_bitcoinrb.rb, line 76
def initialize(priv_key: nil, pubkey: nil, key_type: nil, compressed: true, allow_hybrid: false)
  # override so enforce compressed keys
  
  raise "key_type must always be Bitcoin::KEY::TYPES[:compressed]" unless key_type == TYPES[:compressed]
  puts '[Warning] Use key_type parameter instead of compressed. compressed parameter removed in the future.' if key_type.nil? && !compressed.nil? && pubkey.nil?
  if key_type
    @key_type = key_type
    compressed = @key_type != TYPES[:uncompressed]
  else
    @key_type = compressed ? TYPES[:compressed] : TYPES[:uncompressed]
  end
  @secp256k1_module =  Bitcoin.secp_impl
  @priv_key = priv_key
  if @priv_key
    raise ArgumentError, Errors::Messages::INVALID_PRIV_KEY unless validate_private_key_range(@priv_key)
  end
  if pubkey
    @pubkey = pubkey
  else
    @pubkey = generate_pubkey(priv_key, compressed: compressed) if priv_key
  end
  raise ArgumentError, Errors::Messages::INVALID_PUBLIC_KEY unless fully_valid_pubkey?(allow_hybrid)
end

Public Instance Methods

private_key_hex() click to toggle source
# File lib/block_io/extended_bitcoinrb.rb, line 104
def private_key_hex
  @priv_key
end
public_key_hex() click to toggle source
# File lib/block_io/extended_bitcoinrb.rb, line 100
def public_key_hex
  @pubkey
end