module JWT::JWK
def classes
def classes @mappings = nil # reset the cached mappings @classes ||= [] end
def create_from(key, params = nil, options = {})
def create_from(key, params = nil, options = {}) if key.is_a?(Hash) jwk_kty = key[:kty] || key['kty'] raise JWT::JWKError, 'Key type (kty) not provided' unless jwk_kty return mappings.fetch(jwk_kty.to_s) do |kty| raise JWT::JWKError, "Key type #{kty} not supported" end.new(key, params, options) end mappings.fetch(key.class) do |klass| raise JWT::JWKError, "Cannot create JWK from a #{klass.name}" end.new(key, params, options) end
def generate_mappings
def generate_mappings classes.each_with_object({}) do |klass, hash| next unless klass.const_defined?('KTYS') Array(klass::KTYS).each do |kty| hash[kty] = klass end end end
def mappings
def mappings @mappings ||= generate_mappings end