class Ed25519::SigningKey

Private key for producing digital signatures

Attributes

keypair[R]
seed[R]
verify_key[R]

Public Class Methods

from_keypair(keypair) click to toggle source

Create a SigningKey from a 64-byte Ed25519 keypair (i.e. public + private)

@param keypair [String] 64-byte keypair value containing both seed + public key

# File lib/ed25519/signing_key.rb, line 18
def self.from_keypair(keypair)
  raise TypeError, "expected String, got #{keypair.class}" unless keypair.is_a?(String)
  raise ArgumentError, "expected 64-byte String, got #{keypair.bytesize}" unless keypair.bytesize == 64

  new(keypair[0, KEY_SIZE]).tap do |key|
    raise ArgumentError, "corrupt keypair" unless keypair[KEY_SIZE, KEY_SIZE] == key.verify_key.to_bytes
  end
end
generate() click to toggle source

Generate a random Ed25519 signing key (i.e. private scalar)

# File lib/ed25519/signing_key.rb, line 11
def self.generate
  new SecureRandom.random_bytes(Ed25519::KEY_SIZE)
end
new(seed) click to toggle source

Create a new Ed25519::SigningKey from the given seed value

@param seed [String] 32-byte seed value from which the key should be derived

# File lib/ed25519/signing_key.rb, line 30
def initialize(seed)
  Ed25519.validate_key_bytes(seed)

  @seed = seed
  @keypair = Ed25519.provider.create_keypair(seed)
  @verify_key = VerifyKey.new(@keypair[32, 32])
end

Public Instance Methods

inspect() click to toggle source

String inspection that does not leak secret values

# File lib/ed25519/signing_key.rb, line 48
def inspect
  to_s
end
sign(message) click to toggle source

Sign the given message, returning an Ed25519 signature

@param message [String] message to be signed

@return [String] 64-byte Ed25519 signature

# File lib/ed25519/signing_key.rb, line 43
def sign(message)
  Ed25519.provider.sign(@keypair, message)
end
to_bytes() click to toggle source

Return a bytestring representation of this signing key

@return [String] signing key converted to a bytestring

# File lib/ed25519/signing_key.rb, line 55
def to_bytes
  seed
end
Also aliased as: to_str
to_str()
Alias for: to_bytes