Sha256: 7ed4a3e5e4e308983b05af253a374f6416999657734347d897d1b0c075bf29b0

Contents?: true

Size: 645 Bytes

Versions: 18

Compression:

Stored size: 645 Bytes

Contents

# frozen_string_literal: true

require "dry/monads"
require "securerandom"

module PKCE
  # Handles Proof Key for Code Exchange (PKCE) verification.
  class Verifier
    include Dry::Monads[:result]

    RANGE = 32..96
    MAX = RANGE.max

    def initialize range: RANGE, randomizer: SecureRandom
      @range = range
      @randomizer = randomizer
    end

    def call length: MAX
      if range.cover? length
        Success randomizer.urlsafe_base64(length)
      else
        Failure "Invalid PKCE verifier length: #{length}. Must be between #{range.inspect}."
      end
    end

    private

    attr_reader :range, :randomizer
  end
end

Version data entries

18 entries across 18 versions & 1 rubygems

Version Path
pkce-3.1.0 lib/pkce/verifier.rb
pkce-3.0.0 lib/pkce/verifier.rb
pkce-2.8.0 lib/pkce/verifier.rb
pkce-2.7.0 lib/pkce/verifier.rb
pkce-2.6.0 lib/pkce/verifier.rb
pkce-2.5.0 lib/pkce/verifier.rb
pkce-2.4.0 lib/pkce/verifier.rb
pkce-2.3.1 lib/pkce/verifier.rb
pkce-2.2.0 lib/pkce/verifier.rb
pkce-2.1.0 lib/pkce/verifier.rb
pkce-2.0.0 lib/pkce/verifier.rb
pkce-1.0.6 lib/pkce/verifier.rb
pkce-1.0.5 lib/pkce/verifier.rb
pkce-1.0.4 lib/pkce/verifier.rb
pkce-1.0.3 lib/pkce/verifier.rb
pkce-1.0.2 lib/pkce/verifier.rb
pkce-1.0.1 lib/pkce/verifier.rb
pkce-1.0.0 lib/pkce/verifier.rb