KittenBlue.JWK (kitten_blue v0.9.1)
Structure containing kid
, alg
, JOSE.JWK
and handling functions
Link to this section Summary
Functions
Convert compact storable format to KittenBlue.JWK
.
Fetch jwks uri and return jwk list.
Convert config format to KittenBlue.JWK
for main issuerance.
Convert compact storable format to KittenBlue.JWK
.
Convert JSON Web Key Sets
format public key to KittenBlue.JWK
.
Convert KittenBlue.JWK
List to compact storable format for configration.
Convert KittenBlue.JWK
list to JSON Web Key Sets
format public keys.
kid = "sample_201804"
alg = "RS256"
key = JOSE.JWK.from_pem_file("rsa-2048.pem")
kb_jwk = KittenBlue.JWK.new([kid, alg, key])
kb_jwk = KittenBlue.JWK.new([kid: kid, alg: alg, key: key])
kb_jwk = KittenBlue.JWK.new(%{kid: kid, alg: alg, key: key})
Convert JSON Web Key Sets
format public keys to KittenBlue.JWK
list.
Convert KittenBlue.JWK
to compact storable format for configration.
Convert KittenBlue.JWK
to JSON Web Key Sets
format public key.
Function to return JWK Thumbprint
Link to this section Types
Specs
t() :: %KittenBlue.JWK{ alg: String.t(), key: JOSE.JWK.t(), kid: String.t(), x509: KittenBlue.JWK.X509.t() }
Link to this section Functions
compact_to_list(jwk_compact_list)
Specs
Convert compact storable format to KittenBlue.JWK
.
kb_jwk_list = KittenBlue.JWK.compact_to_list(kb_jwk_list_config)
fetch!(jwks_uri)
Specs
Fetch jwks uri and return jwk list.
kb_jwk_list = KittenBlue.JWK.fetch!(jwks_uri)
NOTE: The HTTP client must be implemented using Scratcher.HttpClient as the Behavior.
find_key_to_issue(config)
Specs
Convert config format to KittenBlue.JWK
for main issuerance.
For JWT (JWS) signatures, there are cases where a single key is used to issue a signature and multiple keys are used for verification. You can easily get the issuing key from the config with the following description.
config :your_app, Your.Module,
kid: "kid20200914",
keys: [["kid20200914", "HS256", "AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow"]]
The key specified by :kid
must be included in :keys
.
@config Application.fetch_env!(:your_app, Your.Module)
kb_jwk_to_issue = find_key_to_issue(@config)
from_compact(jwk_compact)
Specs
Convert compact storable format to KittenBlue.JWK
.
kb_jwk = KittenBlue.JWK.from_compact(kb_jwk_config)
from_public_jwk_set(jwk_map)
Specs
Convert JSON Web Key Sets
format public key to KittenBlue.JWK
.
kb_jwk = KittenBlue.JWK.from_public_jwk_set(public_jwk_set)
list_to_compact(jwk_list, opts \\ [])
Specs
list_to_compact(jwk_list :: List.t(), opts :: Keyword.t()) :: List.t()
Convert KittenBlue.JWK
List to compact storable format for configration.
kb_jwk_list = [kb_jwk]
kb_jwk_list_config = KittenBlue.JWK.list_to_compact(kb_jwk_list)
list_to_public_jwk_sets(jwk_list)
Specs
list_to_public_jwk_sets(jwk_list :: List.t()) :: map() | nil
Convert KittenBlue.JWK
list to JSON Web Key Sets
format public keys.
kb_jwk_list = [kb_jwk]
public_jwk_sets = KittenBlue.JWK.list_to_public_jwk_sets(kb_jwk_list)
new(params)
Specs
kid = "sample_201804"
alg = "RS256"
key = JOSE.JWK.from_pem_file("rsa-2048.pem")
kb_jwk = KittenBlue.JWK.new([kid, alg, key])
kb_jwk = KittenBlue.JWK.new([kid: kid, alg: alg, key: key])
kb_jwk = KittenBlue.JWK.new(%{kid: kid, alg: alg, key: key})
public_jwk_sets_to_list(public_json_web_key_sets)
Specs
public_jwk_sets_to_list(public_json_web_key_sets :: map()) :: List.t()
Convert JSON Web Key Sets
format public keys to KittenBlue.JWK
list.
kb_jwk_list = KittenBlue.JWK.public_jwk_sets_to_list(public_jwk_sets)
to_compact(jwk, opts \\ [])
Specs
Convert KittenBlue.JWK
to compact storable format for configration.
kb_jwk_config = KittenBlue.JWK.to_compact(kb_jwk)
to_public_jwk_set(jwk)
Specs
Convert KittenBlue.JWK
to JSON Web Key Sets
format public key.
public_jwk_set = KittenBlue.JWK.to_public_jwk_set(kb_jwk)
to_thumbprint(jwk)
Specs
Function to return JWK Thumbprint