Module: JwkLoader::Test

Defined in:
lib/jwk_loader/test.rb

Instance Method Summary collapse

Instance Method Details

#generate_signing_key(algorithm:) ⇒ Object



5
6
7
8
9
10
11
12
13
14
# File 'lib/jwk_loader/test.rb', line 5

def generate_signing_key(algorithm:)
  case algorithm
  when "RS256", "RS384", "RS512"
    OpenSSL::PKey::RSA.new(2048)
  when "ES256"
    OpenSSL::PKey::EC.generate("prime256v1")
  else
    raise "Unsupported algorithm: #{algorithm}"
  end
end

#sign_test_token(token_payload:, jwk_endpoint:, algorithm: "RS512") ⇒ Object



27
28
29
30
# File 'lib/jwk_loader/test.rb', line 27

def sign_test_token(token_payload:, jwk_endpoint:, algorithm: "RS512")
  key = test_signing_key_for(jwk_endpoint: jwk_endpoint, algorithm: algorithm)
  JWT.encode(token_payload, key.signing_key, algorithm, kid: key[:kid])
end

#test_signing_key_for(jwk_endpoint:, algorithm: "RS512") ⇒ Object



16
17
18
19
20
21
22
23
24
25
# File 'lib/jwk_loader/test.rb', line 16

def test_signing_key_for(jwk_endpoint:, algorithm: "RS512")
  key_set = JwkLoader.memory_store.fetch(jwk_endpoint)

  if key_set.nil?
    key_set = JWT::JWK::Set.new([generate_signing_key(algorithm: algorithm)])
    JwkLoader.memory_store.store(jwk_endpoint, key_set)
  end

  key_set.first
end