module Crypto::Sign::Ed25519

Constants

PRIMITIVE
PUBLICKEYBYTES
SECRETKEYBYTES
SEEDBYTES

Public Class Methods

crypto_sign_ed25519_primitive() click to toggle source
# File lib/crypto/sign/ed25519.rb, line 16
def crypto_sign_ed25519_primitive
  PRIMITIVE
end
Also aliased as: primitive
primitive()

Public Instance Methods

pk_to_curve25519(public_key) click to toggle source
# File lib/crypto/sign/ed25519.rb, line 39
def pk_to_curve25519(public_key)
  check_length(public_key, PUBLICKEYBYTES, :PublicKey)

  curve25519_pk = zeros(ScalarMult::BYTES)
  crypto_sign_ed25519_pk_to_curve25519(curve25519_pk, public_key)

  curve25519_pk
end
sk_to_curve25519(secret_key) click to toggle source
# File lib/crypto/sign/ed25519.rb, line 48
def sk_to_curve25519(secret_key)
  check_length(secret_key, SECRETKEYBYTES, :SecretKey)

  curve25519_sk = Sodium::SecretBuffer.new(ScalarMult::BYTES)
  secret_key.readonly if secret_key.is_a?(Sodium::SecretBuffer)
  crypto_sign_ed25519_sk_to_curve25519(curve25519_sk, secret_key)
  curve25519_sk.noaccess

  curve25519_sk
ensure
  secret_key.noaccess if secret_key.is_a?(Sodium::SecretBuffer)
end
sk_to_pk(secret_key) click to toggle source
# File lib/crypto/sign/ed25519.rb, line 73
def sk_to_pk(secret_key)
  check_length(secret_key, SECRETKEYBYTES, :SecretKey)

  public_key = zeros(PUBLICKEYBYTES)
  secret_key.readonly if secret_key.is_a?(Sodium::SecretBuffer)
  crypto_sign_ed25519_sk_to_pk(seed, secret_key)

  public_key
ensure
  secret_key.noaccess if secret_key.is_a?(Sodium::SecretBuffer)
end
sk_to_seed(secret_key) click to toggle source
# File lib/crypto/sign/ed25519.rb, line 61
def sk_to_seed(secret_key)
  check_length(secret_key, SECRETKEYBYTES, :SecretKey)

  seed = zeros(SEEDBYTES)
  secret_key.readonly if secret_key.is_a?(Sodium::SecretBuffer)
  crypto_sign_ed25519_sk_to_seed(seed, secret_key)

  seed
ensure
  secret_key.noaccess if secret_key.is_a?(Sodium::SecretBuffer)
end