module Crypto::ScalarMult

Constants

BYTES
PRIMITIVE
SCALARBYTES

Public Instance Methods

base(secret_key) click to toggle source
# File lib/crypto/scalar_mult.rb, line 25
def base(secret_key)
  check_length(secret_key, SCALARBYTES, :SecretKey)

  public_key = zeros(BYTES)
  secret_key.readonly if secret_key.is_a?(Sodium::SecretBuffer)
  crypto_scalarmult_base(public_key, secret_key)

  public_key
ensure
  secret_key.noaccess if secret_key.is_a?(Sodium::SecretBuffer)
end
scalarmut(secret_key, public_key) click to toggle source
# File lib/crypto/scalar_mult.rb, line 37
def scalarmut(secret_key, public_key)
  check_length(secret_key, SCALARBYTES, :SecretKey)
  check_length(public_key, BYTES, :PublicKey)

  shared_secret = Sodium::SecretBuffer.new(BYTES)
  secret_key.readonly if secret_key.is_a?(Sodium::SecretBuffer)
  crypto_scalarmult(shared_secret, secret_key, public_key)
  shared_secret.noaccess

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