jose v1.8.0 Release Notes

Release Date: 2017-03-15 // about 7 years ago

    ✨ Enhancements

    - ChaCha20/Poly1305 encryption and one-time message authentication functions are experimentally supported based on RFC 7539.

    🛠 Fixes

    • Handling invalid token without raising Exception #22
    • JOSE.JWT.verify uses CPU intensively when signed is nil #23

    Examples of new functionality:

    iex\> # Encryptiex\> jwe = %{"alg" =\> "dir", "enc" =\> "ChaCha20/Poly1305"} iex\> jwk = JOSE.JWE.generate\_key(jwe) |\> JOSE.JWK.to\_map |\> elem(1) %{"alg" =\> "dir", "enc" =\> "ChaCha20/Poly1305", "k" =\> "EffEuY2nbShIVtizmek8AuR7ftSuY2e8XRxGjMc8QAc", "kty" =\> "oct", "use" =\> "enc"} iex\> plain\_text = "message to encrypt"iex\> encrypted = JOSE.JWK.block\_encrypt(plain\_text, jwk) |\> JOSE.JWE.compact |\> elem(1)"eyJhbGciOiJkaXIiLCJlbmMiOiJDaGFDaGEyMC9Qb2x5MTMwNSJ9..lbsERynEgQS8CRXZ.D\_kt8ChsaYWX9gL9tJlJ2n0E.y0o\_TYjGlaB9sEEcA9o12A"iex\> # Decryptiex\> plain\_text == JOSE.JWK.block\_decrypt(encrypted, jwk) |\> elem(0)trueiex\> # Signiex\> jws = %{"alg" =\> "Poly1305"} iex\> jwk = JOSE.JWS.generate\_key(jws) |\> JOSE.JWK.to\_map |\> elem(1) %{"alg" =\> "Poly1305", "k" =\> "2X-OZVLA41Wy7mAjqWRaZyOw8FLyL3O3\_f8d16D\_-tQ", "kty" =\> "oct", "use" =\> "sig"} iex\> message = "message to sign"iex\> signed = JOSE.JWK.sign(message, jwk) |\> JOSE.JWS.compact |\> elem(1)"eyJhbGciOiJQb2x5MTMwNSIsIm5vbmNlIjoicGExU1dlQzJVQzhwZlQ1NCJ9.bWVzc2FnZSB0byBzaWdu.IUI-PvN5bh\_9jX-MeDtetw"iex\> # Verifyiex\> JOSE.JWK.verify\_strict(signed, ["Poly1305"], jwk) |\> elem(0)true