jose v1.7.2 Release Notes
Release Date: 2016-03-16 // about 8 years ago-
- ✨ Enhancements
- Better support for lists of terms.
- Added merge functions:
JOSE.JWE.merge/2
JOSE.JWK.merge/2
JOSE.JWS.merge/2
JOSE.JWT.merge/2
- Added signer, verifier, and block_encryptor functions:
JOSE.JWK.signer/1
JOSE.JWK.verifier/1
JOSE.JWK.block_encryptor/1
- Support for
"alg"
,"enc"
, and"use"
on keys.
Examples of new functionality:
iex> # Let's generate a 64 byte octet key iex> jwk = JOSE.JWK.generate_key({:oct, 64}) |> JOSE.JWK.to_map |> elem(1) %{"k" => "FXSy7PufOayusvfyKQzdxCegm7yWIMp1b0LD13v57Nq2wF_B-fcr7LDOkufDikmFFsVYWLgrA2zEB--_qqDn3g", "kty" => "oct"} iex> # Based on the key's size and type, a default signer (JWS) can be determined iex> JOSE.JWK.signer(jwk) %{"alg" => "HS512"} iex> # A list of algorithms for which this key type can be verified against can also be determined iex> JOSE.JWK.verifier(jwk) ["HS256", "HS384", "HS512"] iex> # Based on the key's size and type, a default enctypro (JWE) can be determined iex> JOSE.JWK.block_encryptor(jwk) %{"alg" => "dir", "enc" => "A256CBC-HS512"} iex> # Keys can be generated based on the signing algorithm (JWS) iex> JOSE.JWS.generate_key(%{"alg" => "HS256"}) |> JOSE.JWK.to_map |> elem(1) %{"alg" => "HS256", "k" => "UuP3Tw2xbGV5N3BGh34cJNzzC2R1zU7i4rOnF9A8nqY", "kty" => "oct", "use" => "sig"} iex> # Keys can be generated based on the encryption algorithm (JWE) iex> JOSE.JWE.generate_key(%{"alg" => "dir", "enc" => "A128GCM"}) |> JOSE.JWK.to_map |> elem(1) %{"alg" => "dir", "enc" => "A128GCM", "k" => "8WNdBjXXwg6QTwrrOnvEPw", "kty" => "oct", "use" => "enc"} iex> # Example of merging a map into an existing JWS (also works with JWE, JWK, and JWT) iex> jws = JOSE.JWS.from(%{"alg" => "HS256"}) iex> JOSE.JWS.merge(jws, %{"typ" => "JWT"}) |> JOSE.JWS.to_map |> elem(1) %{"alg" => "HS256", "typ" => "JWT"}
- ✨ Enhancements