module JWT::JWA::Eddsa

def sign(algorithm, msg, key)

def sign(algorithm, msg, key)
  unless key.is_a?(RbNaCl::Signatures::Ed25519::SigningKey)
    raise EncodeError, "Key given is a #{key.class} but has to be an RbNaCl::Signatures::Ed25519::SigningKey"
  end
  validate_algorithm!(algorithm)
  key.sign(msg)
end

def validate_algorithm!(algorithm)

def validate_algorithm!(algorithm)
  return if SUPPORTED_DOWNCASED.include?(algorithm.downcase)
  raise IncorrectAlgorithm, "Algorithm #{algorithm} not supported. Supported algoritms are #{SUPPORTED.join(', ')}"
end

def verify(algorithm, public_key, signing_input, signature)

def verify(algorithm, public_key, signing_input, signature)
  unless public_key.is_a?(RbNaCl::Signatures::Ed25519::VerifyKey)
    raise DecodeError, "key given is a #{public_key.class} but has to be a RbNaCl::Signatures::Ed25519::VerifyKey"
  end
  validate_algorithm!(algorithm)
  public_key.verify(signature, signing_input)
rescue RbNaCl::CryptoError
  false
end