class JWT::Algos::AlgoWrapper

def initialize(alg, cls)

def initialize(alg, cls)
  @alg = alg
  @cls = cls
end

def sign(data:, signing_key:)

def sign(data:, signing_key:)
  cls.sign(alg, data, signing_key)
end

def valid_alg?(alg_to_check)

def valid_alg?(alg_to_check)
  alg.casecmp(alg_to_check)&.zero? == true
end

def verify(data:, signature:, verification_key:)

def verify(data:, signature:, verification_key:)
  cls.verify(alg, verification_key, data, signature)
rescue OpenSSL::PKey::PKeyError # These should be moved to the algorithms that actually need this, but left here to ensure nothing will break.
  raise JWT::VerificationError, 'Signature verification raised'
ensure
  OpenSSL.errors.clear
end