class PkceChallenge::Challenge

Constants

CHAR_LENGTH

constants definition

Attributes

code_challenge[RW]
code_verifier[RW]

Public Class Methods

new(options = {}) click to toggle source
# File lib/pkce_challenge/challenge.rb, line 10
def initialize(options = {})
  @options = options
  @code_verifier = generate_code_verifier
  @code_challenge = generate_pkce_challenge
end

Private Instance Methods

generate_code_verifier() click to toggle source
# File lib/pkce_challenge/challenge.rb, line 26
def generate_code_verifier
  length = (@options[:char_length] || CHAR_LENGTH[:default]).to_i

  unless length.between?(CHAR_LENGTH[:min], CHAR_LENGTH[:max])
    raise PkceChallenge::LengthOutOfRangeError
  end

  urlsafe_base64(SecureRandom.base64((length * 3) / 4))
end
generate_pkce_challenge() click to toggle source
# File lib/pkce_challenge/challenge.rb, line 36
def generate_pkce_challenge
  urlsafe_base64(Digest::SHA256.base64digest(@code_verifier))
end
urlsafe_base64(base64_str) click to toggle source
# File lib/pkce_challenge/challenge.rb, line 40
def urlsafe_base64(base64_str)
  base64_str.tr("+/", "-_").tr("=", "")
end