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