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