JOSE (JOSE v1.11.13)

Copy Markdown View Source

JOSE stands for JSON Object Signing and Encryption which is a is a set of standards established by the JOSE Working Group.

JOSE is split into 5 main components:

Additional specifications and drafts implemented:

Summary

Functions

Gets the current ChaCha20/Poly1305 module used by jose_chacha20_poly1305.

Sets the current ChaCha20/Poly1305 module used by jose_chacha20_poly1305.

Gets the current Cryptographic Algorithm Fallback state

Sets the current Cryptographic Algorithm Fallback state.

Gets the current Curve448 module used by jose_curve448

Sets the current Curve448 module used by jose_curve448.

Gets the current Curve25519 module used by jose_curve25519

Sets the current Curve25519 module used by jose_curve25519.

Decodes JSON to a term using the module returned by json_module/0.

Encodes a term to JSON using the module returned by json_module/0.

Gets the current JSON module used by decode/1 and encode/1, see json_module/1 for default.

Sets the current JSON module used by decode/1 and encode/1.

Gets the current SHA3 module used by jose_sha3, see sha3_module/1 for default.

Sets the current SHA3 module used by jose_sha3.

Gets the current Unsecured Signing state, defaults to false.

Sets the current Unsecured Signing state.

Functions

chacha20_poly1305_module()

@spec chacha20_poly1305_module() :: module()

Gets the current ChaCha20/Poly1305 module used by jose_chacha20_poly1305.

See chacha20_poly1305_module/1 for default.

chacha20_poly1305_module(module)

@spec chacha20_poly1305_module(module()) :: :ok

Sets the current ChaCha20/Poly1305 module used by jose_chacha20_poly1305.

Currently supported ChaCha20/Poly1305 modules (first found is used as default):

Additional modules that implement the jose_chacha20_poly1305 behavior may also be used.

crypto_fallback()

@spec crypto_fallback() :: boolean()

Gets the current Cryptographic Algorithm Fallback state

Defaults to false.

crypto_fallback(boolean)

@spec crypto_fallback(boolean()) :: :ok

Sets the current Cryptographic Algorithm Fallback state.

curve448_module()

@spec curve448_module() :: module()

Gets the current Curve448 module used by jose_curve448

See curve448_module/1 for default.

curve448_module(module)

@spec curve448_module(module()) :: :ok

Sets the current Curve448 module used by jose_curve448.

Currently supported Curve448 modules (first found is used as default):

Additional modules that implement the jose_curve448 behavior may also be used.

curve25519_module()

@spec curve25519_module() :: module()

Gets the current Curve25519 module used by jose_curve25519

See curve25519_module/1 for default.

curve25519_module(module)

@spec curve25519_module(module()) :: :ok

Sets the current Curve25519 module used by jose_curve25519.

Currently supported Curve25519 modules (first found is used as default):

Additional modules that implement the jose_curve25519 behavior may also be used.

decode(binary)

@spec decode(binary()) :: term()

Decodes JSON to a term using the module returned by json_module/0.

Returns the decoded term, or raises if binary contains invalid JSON.

encode(term)

@spec encode(term()) :: binary()

Encodes a term to JSON using the module returned by json_module/0.

Returns the encoded JSON, or raises if term cannot be encoded.

json_module()

@spec json_module() :: module()

Gets the current JSON module used by decode/1 and encode/1, see json_module/1 for default.

json_module(module)

@spec json_module(module()) :: :ok

Sets the current JSON module used by decode/1 and encode/1.

Currently supported JSON modules (first found is used as default):

Additional modules that implement the :jose_json behavior may also be used.

sha3_module()

@spec sha3_module() :: module()

Gets the current SHA3 module used by jose_sha3, see sha3_module/1 for default.

sha3_module(module)

@spec sha3_module(module()) :: :ok

Sets the current SHA3 module used by jose_sha3.

Currently supported SHA3 modules (first found is used as default):

Additional modules that implement the jose_sha3 behavior may also be used.

unsecured_signing()

@spec unsecured_signing() :: boolean()

Gets the current Unsecured Signing state, defaults to false.

unsecured_signing(boolean)

@spec unsecured_signing(boolean()) :: :ok

Sets the current Unsecured Signing state.

Enables/disables the "none" algorithm used for signing and verifying.

See Critical vulnerabilities in JSON Web Token libraries for more information.