class Nis::Keypair

Attributes

private[R]
public[R]

Public Class Methods

new(private_key, public_key: nil) click to toggle source

@param [String] Hex Private Key @option options [Strung] :public_key Hex Public Key

# File lib/nis/keypair.rb, line 7
def initialize(private_key, public_key: nil)
  @private = private_key
  @public  = public_key || calc_public_key
end

Public Instance Methods

sign(data) click to toggle source

@param [String] Hex string @return [String] Signed hex string

# File lib/nis/keypair.rb, line 14
def sign(data)
  bin_data = Nis::Util::Convert.hex2bin(data)
  bin_signed = Nis::Util::Ed25519.signature_hash_unsafe(bin_data, bin_secret, bin_public)
  bin_signed.unpack('H*').first
end

Private Instance Methods

bin_public() click to toggle source
# File lib/nis/keypair.rb, line 34
def bin_public
  @bin_public ||= Nis::Util::Ed25519.publickey_hash_unsafe(bin_secret)
end
bin_secret() click to toggle source
# File lib/nis/keypair.rb, line 30
def bin_secret
  @bin_secret ||= Nis::Util::Convert.hex2bin_rev(fix_private_key(@private))
end
calc_public_key() click to toggle source
# File lib/nis/keypair.rb, line 26
def calc_public_key
  bin_public.unpack('H*').first
end
fix_private_key(key) click to toggle source
# File lib/nis/keypair.rb, line 22
def fix_private_key(key)
  "#{'0' * 64}#{key.sub(/^00/i, '')}"[-64, 64]
end