Xbase++
Xbase++
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".Note: This example requires Chilkat v9.5.0.95 or greater.
Chilkat Xbase++ Downloads
LOCAL nSuccess
LOCAL oPrivKey
LOCAL oJwt
LOCAL oJose
LOCAL oClaims
LOCAL nCurDateTime
LOCAL cToken
nSuccess := 0
// 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.
oPrivKey := CreateObject("Chilkat.PrivateKey")
// Load an Ed25519 (EdDSA) private key from a PEM file.
nSuccess := oPrivKey:LoadPemFile("qa_data/eddsa/ed25519.pem")
IF (nSuccess != 1)
? oPrivKey:LastErrorText
oPrivKey:destroy()
RETURN
ENDIF
oJwt := CreateObject("Chilkat.Jwt")
// Build the JOSE header
oJose := CreateObject("Chilkat.JsonObject")
// -----------------------------------------------------------------
// Note: This example requires Chilkat v9.5.0.95 or greater.
// -----------------------------------------------------------------
nSuccess := oJose:AppendString("alg", "EdDSA")
nSuccess := oJose:AppendString("typ", "JWT")
// Now build the JWT claims (also known as the payload)
oClaims := CreateObject("Chilkat.JsonObject")
nSuccess := oClaims:AppendString("iss", "http://example.org")
nSuccess := oClaims:AppendString("sub", "John")
nSuccess := oClaims:AppendString("aud", "http://example.com")
// (optional) Set the timestamp of when the JWT was created to now.
nCurDateTime := oJwt:GenNumericDate(0)
nSuccess := oClaims:AddIntAt(-1, "iat", nCurDateTime)
// (optional) Set the "not process before" timestamp to now.
nSuccess := oClaims:AddIntAt(-1, "nbf", nCurDateTime)
// (optional) Set the timestamp defining an expiration time (end time) for the token
// to be now + 1 hour (3600 seconds)
nSuccess := oClaims:AddIntAt(-1, "exp", nCurDateTime + 3600)
// Produce the smallest possible JWT:
oJwt:AutoCompact := 1
// Create the JWT token.
cToken := oJwt:CreateJwtPk(oJose:Emit(), oClaims:Emit(), oPrivKey)
? cToken
// Example output:
// eyJhbGciOiJFZERTQSIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJodHRwOi8vZXhhbXBsZS5vcmciLCJzdWIiOiJKb2huIiwiYXVkIjoiaHR0cDovL2V4YW1wbGUuY29tIiwiaWF0IjoxNjg3OTcwNjgyLCJuYmYiOjE2ODc5NzA2ODIsImV4cCI6MTY4Nzk3NDI4Mn0.eyfrDJfuWJSJVJPfAUYb_p_c-LF_YULHGRaZx82MLLjMLCCFEEGckp8icuayf5bLW9ah20LzYYt0JgOBIB0RDg
oPrivKey:destroy()
oJwt:destroy()
oJose:destroy()
oClaims:destroy()