Class: OmniauthOpenidFederation::Jwks::Selector
- Inherits:
-
Object
- Object
- OmniauthOpenidFederation::Jwks::Selector
- Defined in:
- lib/omniauth_openid_federation/jwks/selector.rb,
sig/jwks.rbs
Class Method Summary collapse
-
.all_keys(jwks) ⇒ Hash
Get all keys from JWKS (including previous keys from rotation).
-
.current_keys(jwks) ⇒ Hash
Get current keys from JWKS (first signing and encryption keys) This is useful for operations that only need the current keys, not all keys including previous keys from rotation.
-
.encryption_keys(jwks) ⇒ Array<Hash>
Get encryption keys only.
-
.key_by_kid(jwks, kid) ⇒ Hash?
Get key by kid (key ID).
-
.signing_keys(jwks) ⇒ Array<Hash>
Get signing keys only.
Class Method Details
.all_keys(jwks) ⇒ Hash
Get all keys from JWKS (including previous keys from rotation)
45 46 47 48 |
# File 'lib/omniauth_openid_federation/jwks/selector.rb', line 45 def self.all_keys(jwks) keys = extract_keys_array(jwks) {"keys" => keys} end |
.current_keys(jwks) ⇒ Hash
Get current keys from JWKS (first signing and encryption keys) This is useful for operations that only need the current keys, not all keys including previous keys from rotation.
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/omniauth_openid_federation/jwks/selector.rb', line 20 def self.current_keys(jwks) keys = extract_keys_array(jwks) return {"keys" => []} if keys.empty? taken_uses = [] current_keys = keys.select do |key| use = key[:use] || key["use"] if use == "sig" && !taken_uses.include?("sig") taken_uses << "sig" true elsif use == "enc" && !taken_uses.include?("enc") taken_uses << "enc" true else false end end {"keys" => current_keys} end |
.encryption_keys(jwks) ⇒ Array<Hash>
Get encryption keys only
63 64 65 66 |
# File 'lib/omniauth_openid_federation/jwks/selector.rb', line 63 def self.encryption_keys(jwks) keys = extract_keys_array(jwks) keys.select { |key| (key[:use] || key["use"]) == "enc" } end |
.key_by_kid(jwks, kid) ⇒ Hash?
Get key by kid (key ID)
73 74 75 76 |
# File 'lib/omniauth_openid_federation/jwks/selector.rb', line 73 def self.key_by_kid(jwks, kid) keys = extract_keys_array(jwks) keys.find { |key| (key[:kid] || key["kid"]) == kid } end |
.signing_keys(jwks) ⇒ Array<Hash>
Get signing keys only
54 55 56 57 |
# File 'lib/omniauth_openid_federation/jwks/selector.rb', line 54 def self.signing_keys(jwks) keys = extract_keys_array(jwks) keys.select { |key| (key[:use] || key["use"]) == "sig" } end |