Lua Requires Chilkat v9.5.0.95+
Lua
Create JWT Using Ed25519 Private Key (EdDSA)
See more JSON Web Token (JWT) Examples
Demonstrates how to create a JWT using an Ed25519 private key. If the private key is Ed25519, which is an EdDSA algorithm, the JOSE header's "alg" member should be set to "EdDSA".Chilkat Lua Downloads
local chilkat = require("chilkat")
-- This example requires the Chilkat API to have been previously unlocked.
-- See Global Unlock Sample for sample code.
-- Demonstrates how to create a JWT using an Ed25519 private key.
local privKey = chilkat.PrivateKey.new()
-- Load an Ed25519 (EdDSA) private key from a PEM file.
local success = privKey:load_pem_file("qa_data/eddsa/ed25519.pem")
if not success then
print(privKey.last_error_text)
return
end
local jwt = chilkat.Jwt.new()
-- Build the JOSE header
local jose = chilkat.JsonObject.new()
success = jose:append_string("alg", "EdDSA")
success = jose:append_string("typ", "JWT")
-- Now build the JWT claims (also known as the payload)
local claims = chilkat.JsonObject.new()
success = claims:append_string("iss", "http://example.org")
success = claims:append_string("sub", "John")
success = claims:append_string("aud", "http://example.com")
-- (optional) Set the timestamp of when the JWT was created to now.
local curDateTime = jwt:gen_numeric_date(0)
success = claims:add_int_at(-1, "iat", curDateTime)
-- (optional) Set the "not process before" timestamp to now.
success = claims:add_int_at(-1, "nbf", curDateTime)
-- (optional) Set the timestamp defining an expiration time (end time) for the token
-- to be now + 1 hour (3600 seconds)
success = claims:add_int_at(-1, "exp", curDateTime + 3600)
-- Produce the smallest possible JWT:
jwt.auto_compact = true
-- Create the JWT token.
local token = jwt:create_jwt_pk(jose:emit(), claims:emit(), privKey)
print(token)
-- Example output:
-- eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vZXhhbXBsZS5vcmciLCJzdWIiOiJKb2huIiwiYXVkIjoiaHR0cDovL2V4YW1wbGUuY29tIiwiaWF0IjoxNjg3OTcwNjgyLCJuYmYiOjE2ODc5NzA2ODIsImV4cCI6MTY4Nzk3NDI4Mn0.eyfrDJfuWJSJVJPfAUYb_p_c-LF_YULHGRaZx82MLLjMLCCFEEGckp8icuayf5bLW9ah20LzYYt0JgOBIB0RDg