Rust NIF for JWT signing
In its current state, this library only supports signing JWTs using the RS512
algo with a DER or PEM encoded RSA private key.
def deps do
[
{:no_way_jose, "~> 0.2.0"}
]
end
In order to sign a JWT an RSA private key must be provided.
NoWayJose allows generating an RSA private key directly in code by specifying the number of bits and an encoding format (PEM or DER):
# PEM encoded RSA private key
NoWayJose.generate_rsa(4096, :pem)
# DER encoded RSA private key
NoWayJose.generate_rsa(4096, :der)
# Read a private signing key from a file
{:ok, key} = File.read("private.der")
# Or generate a new one in code
key = NoWayJose.generate_rsa(4096, :der)
# Build your claims
claims = %{
"exp" => 1571065163,
"iat" => 1571061563,
"iss" => "example.com",
"jti" => "a3a31258-2450-490b-86ed-2b8e67f91e20",
"nbf" => 1571061563,
"scopes" => [
"posts.r+w",
"comments.r+w"
],
"sub" => "4d3796ca-19e0-40e6-97fe-060c0b7e3ce3"
}
# Sign the claims into a JWT
{:ok, token} = NoWayJose.sign(claims, alg: :rs512, format: :der, key: key)
Documentation can be be found at https://hexdocs.pm/no_way_jose.
Please check the Roadmap if you're curious about the future of this project.
A rhyming play on words to indicate that this library does not depend on JOSE.
Apache 2.0