class Neb::PrivateKey

Attributes

raw[R]

Public Class Methods

new(raw) click to toggle source
# File lib/neb/private_key.rb, line 8
def initialize(raw)
  @raw = raw
end
random() click to toggle source
# File lib/neb/private_key.rb, line 85
def random
  new(Utils.random_bytes)
end

Public Instance Methods

decode(fmt = nil) click to toggle source
# File lib/neb/private_key.rb, line 35
def decode(fmt = nil)
  fmt ||= format

  case fmt
  when :decimal
    raw
  when :bin
    BaseConvert.decode(raw, 256)
  when :bin_compressed
    BaseConvert.decode(raw[0, 32], 256)
  when :hex
    BaseConvert.decode(raw, 16)
  when :hex_compressed
    BaseConvert.decode(raw[0, 64], 16)
  else
    raise ArgumentError, "WIF does not represent privkey"
  end
end
encode(fmt) click to toggle source
# File lib/neb/private_key.rb, line 16
def encode(fmt)
  return self.class.new(value).encode(fmt) unless raw.is_a?(Numeric)

  case fmt
  when :decimal
    raw
  when :bin
    BaseConvert.encode(raw, 256, 32)
  when :bin_compressed
    "#{BaseConvert.encode(raw, 256, 32)}\x01"
  when :hex
    BaseConvert.encode(raw, 16, 64)
  when :hex_compressed
    "#{BaseConvert.encode(raw, 16, 64)}01"
  else
    raise ArgumentError, "invalid format: #{fmt}"
  end
end
format() click to toggle source
# File lib/neb/private_key.rb, line 58
def format
  return :decimal if raw.is_a?(Numeric)
  return :bin if raw.size == 32
  return :bin_compressed if raw.size == 33
  return :hex if raw.size == 64
  return :hex_compressed if raw.size == 66
end
to_address() click to toggle source
# File lib/neb/private_key.rb, line 79
def to_address
  to_address_obj.to_s
end
to_address_obj() click to toggle source
# File lib/neb/private_key.rb, line 75
def to_address_obj
  PublicKey.new(to_pubkey_obj.encode(:bin)).to_address
end
to_pubkey() click to toggle source
# File lib/neb/private_key.rb, line 66
def to_pubkey
  to_pubkey_obj.to_s
end
to_pubkey_obj() click to toggle source
# File lib/neb/private_key.rb, line 70
def to_pubkey_obj
  raise ValidationError, "Invalid private key" if value >= Secp256k1::N
  PublicKey.new(Secp256k1.priv_to_pub(encode(:bin)))
end
to_s() click to toggle source
# File lib/neb/private_key.rb, line 12
def to_s
  encode(:hex)
end
value() click to toggle source
# File lib/neb/private_key.rb, line 54
def value
  @value ||= decode
end