Sha256: 2cfdb4cfafd1f4c8f895ad8b5515c1651c18020499083d7a70849e639d24550b
Contents?: true
Size: 1.39 KB
Versions: 1
Compression:
Stored size: 1.39 KB
Contents
# frozen_string_literal: true require 'jwt/security_utils' require 'openssl' require 'jwt/algos/hmac' require 'jwt/algos/eddsa' require 'jwt/algos/ecdsa' require 'jwt/algos/rsa' require 'jwt/algos/ps' require 'jwt/algos/unsupported' begin require 'rbnacl' rescue LoadError raise if defined?(RbNaCl) end # JWT::Signature module module JWT # Signature logic for JWT module Signature extend self ALGOS = [ Algos::Hmac, Algos::Ecdsa, Algos::Rsa, Algos::Eddsa, Algos::Ps, Algos::Unsupported ].freeze ToSign = Struct.new(:algorithm, :msg, :key) ToVerify = Struct.new(:algorithm, :public_key, :signing_input, :signature) def sign(algorithm, msg, key) algo = ALGOS.find do |alg| alg.const_get(:SUPPORTED).include? algorithm end algo.sign ToSign.new(algorithm, msg, key) end def verify(algorithm, key, signing_input, signature) raise JWT::DecodeError, 'No verification key available' unless key algo = ALGOS.find do |alg| alg.const_get(:SUPPORTED).include? algorithm end verified = algo.verify(ToVerify.new(algorithm, key, signing_input, signature)) raise(JWT::VerificationError, 'Signature verification raised') unless verified rescue OpenSSL::PKey::PKeyError raise JWT::VerificationError, 'Signature verification raised' ensure OpenSSL.errors.clear end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
jwt-2.2.2 | lib/jwt/signature.rb |