class Digitalbits::KeyPair

Public Class Methods

new(public_key, secret_key = nil) click to toggle source

@param [RbNaCl::VerifyKey] public_key @param [RbNaCl::SigningKey, nil] secret_key

# File lib/digitalbits/key_pair.rb, line 45
def initialize(public_key, secret_key = nil)
  @public_key = public_key
  @secret_key = secret_key
end

Public Instance Methods

account_id() click to toggle source
# File lib/digitalbits/key_pair.rb, line 58
def account_id
  Digitalbits::AccountID.new :public_key_type_ed25519, raw_public_key
end
address() click to toggle source
# File lib/digitalbits/key_pair.rb, line 50
def address
  Util::StrKey.check_encode(:account_id, raw_public_key)
end
muxed_account() click to toggle source
# File lib/digitalbits/key_pair.rb, line 62
def muxed_account
  Digitalbits::MuxedAccount.new :key_type_ed25519, raw_public_key
end
public_key() click to toggle source
# File lib/digitalbits/key_pair.rb, line 66
def public_key
  Digitalbits::PublicKey.new :public_key_type_ed25519, raw_public_key
end
raw_public_key() click to toggle source
# File lib/digitalbits/key_pair.rb, line 79
def raw_public_key
  @public_key.to_bytes
end
raw_seed() click to toggle source
# File lib/digitalbits/key_pair.rb, line 83
def raw_seed
  raise "no private key" if @secret_key.nil?
  @secret_key.to_bytes
end
rbnacl_signing_key() click to toggle source
# File lib/digitalbits/key_pair.rb, line 88
def rbnacl_signing_key
  @secret_key
end
rbnacl_verify_key() click to toggle source
# File lib/digitalbits/key_pair.rb, line 92
def rbnacl_verify_key
  @public_key
end
seed() click to toggle source
# File lib/digitalbits/key_pair.rb, line 54
def seed
  Util::StrKey.check_encode(:seed, raw_seed)
end
sign(message) click to toggle source
# File lib/digitalbits/key_pair.rb, line 100
def sign(message)
  raise NotImplementedError, "no private key, signing is not available" unless sign?

  @secret_key.sign(message)
end
sign?() click to toggle source
# File lib/digitalbits/key_pair.rb, line 96
def sign?
  !@secret_key.nil?
end
sign_decorated(message) click to toggle source
# File lib/digitalbits/key_pair.rb, line 106
def sign_decorated(message)
  raw_signature = sign(message)
  Digitalbits::DecoratedSignature.new({
    hint: signature_hint,
    signature: raw_signature
  })
end
signature_hint() click to toggle source
# File lib/digitalbits/key_pair.rb, line 74
def signature_hint
  # take last 4 bytes
  account_id.to_xdr.slice(-4, 4)
end
signer_key() click to toggle source
# File lib/digitalbits/key_pair.rb, line 70
def signer_key
  Digitalbits::SignerKey.new :signer_key_type_ed25519, raw_public_key
end
to_keypair() click to toggle source
# File lib/digitalbits/key_pair.rb, line 122
def to_keypair
  self
end
verify(signature, message) click to toggle source
# File lib/digitalbits/key_pair.rb, line 114
def verify(signature, message)
  @public_key.verify(signature, message)
rescue RbNaCl::LengthError
  false
rescue RbNaCl::BadSignatureError
  false
end