lib/jwt/jwa/eddsa.rb in jwt-2.8.2 vs lib/jwt/jwa/eddsa.rb in jwt-2.9.0

- old
+ new

@@ -1,42 +1,34 @@ # frozen_string_literal: true module JWT module JWA - module Eddsa - SUPPORTED = %w[ED25519 EdDSA].freeze - SUPPORTED_DOWNCASED = SUPPORTED.map(&:downcase).freeze + class Eddsa + include JWT::JWA::SigningAlgorithm - class << self - 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 + def initialize(alg) + @alg = alg + end - validate_algorithm!(algorithm) - - key.sign(msg) + def sign(data:, signing_key:) + unless signing_key.is_a?(RbNaCl::Signatures::Ed25519::SigningKey) + raise_encode_error!("Key given is a #{signing_key.class} but has to be an RbNaCl::Signatures::Ed25519::SigningKey") end - 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 + signing_key.sign(data) + end - validate_algorithm!(algorithm) - - public_key.verify(signature, signing_input) - rescue RbNaCl::CryptoError - false + def verify(data:, signature:, verification_key:) + unless verification_key.is_a?(RbNaCl::Signatures::Ed25519::VerifyKey) + raise_decode_error!("key given is a #{verification_key.class} but has to be a RbNaCl::Signatures::Ed25519::VerifyKey") end - private - - def validate_algorithm!(algorithm) - return if SUPPORTED_DOWNCASED.include?(algorithm.downcase) - - raise IncorrectAlgorithm, "Algorithm #{algorithm} not supported. Supported algoritms are #{SUPPORTED.join(', ')}" - end + verification_key.verify(signature, data) + rescue RbNaCl::CryptoError + false end + + register_algorithm(new('ED25519')) + register_algorithm(new('EdDSA')) end end end