summaryrefslogtreecommitdiffhomepage
path: root/lib/dispatch/adapter/claude/pkce.rb
blob: 5068f6fcea697ff36c9a83c000bdc1f91fdba85b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
# frozen_string_literal: true

module Dispatch
  module Adapter
    class Claude < Base
      module PKCE
        module_function

        def generate
          verifier = base64url(SecureRandom.bytes(32))
          challenge = base64url(Digest::SHA256.digest(verifier))
          { verifier:, challenge: }
        end

        def base64url(bytes)
          Base64.urlsafe_encode64(bytes).delete("=")
        end
      end
    end
  end
end