Sha256: 8292c2a426963cd993a3c348d23e6ffb54e7819d133efe3d0a3c717ccd6727a2

Contents?: true

Size: 1.15 KB

Versions: 40

Compression:

Stored size: 1.15 KB

Contents

module Rack
  module OAuth2
    class AccessToken
      class MAC
        class Verifier
          include AttrRequired, AttrOptional
          attr_required :algorithm

          class VerificationFailed < StandardError; end

          def initialize(attributes = {})
            (required_attributes + optional_attributes).each do |key|
              self.send :"#{key}=", attributes[key]
            end
            attr_missing!
          rescue AttrRequired::AttrMissing => e
            raise VerificationFailed.new("#{self.class.name.demodulize} Invalid: #{e.message}")
          end

          def verify!(expected)
            if expected == self.calculate
              :verified
            else
              raise VerificationFailed.new("#{self.class.name.demodulize} Invalid")
            end
          end

          private

          def hash_generator
            case algorithm.to_s
            when 'hmac-sha-1'
              OpenSSL::Digest::SHA1.new
            when 'hmac-sha-256'
              OpenSSL::Digest::SHA256.new
            else
              raise 'Unsupported Algorithm'
            end
          end
        end
      end
    end
  end
end

Version data entries

40 entries across 40 versions & 1 rubygems

Version Path
rack-oauth2-1.21.3 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.21.2 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.21.1 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.21.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.20.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.19.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.18.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.17.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.16.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.15.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.14.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.13.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.13.0.beta lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.12.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.11.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.10.1 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.10.0 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.9.3 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.9.2 lib/rack/oauth2/access_token/mac/verifier.rb
rack-oauth2-1.9.1 lib/rack/oauth2/access_token/mac/verifier.rb