Sample code for 30+ languages & platforms
Xbase++

Create a JWS

See more JSON Web Signatures (JWS) Examples

Demonstrates Jws.CreateJws, which creates and returns a JWS from the current payload, headers, and signing key.

Background. JWS (JSON Web Signature) integrity-protects a payload with a signature or MAC. The header alg names the algorithm; this example uses HMAC-SHA256 (HS256) with a symmetric MAC key.

Chilkat Xbase++ Downloads

Xbase++
LOCAL nSuccess
LOCAL oJws
LOCAL oHeader
LOCAL nBIncludeBom
LOCAL cBase64Key
LOCAL cJwsCompact

nSuccess := 0

oJws := CreateObject("Chilkat.Jws")

//  Set the protected header for signer 0, specifying the signature algorithm (alg).
oHeader := CreateObject("Chilkat.JsonObject")
oHeader:UpdateString("alg", "HS256")
nSuccess := oJws:SetProtectedHeader(0, oHeader)
IF (nSuccess == 0)
    ? oJws:LastErrorText
    oJws:destroy()
    oHeader:destroy()
    RETURN
ENDIF

//  Set the payload to be signed.
nBIncludeBom := 0
nSuccess := oJws:SetPayload("This is the content to sign.", "utf-8", nBIncludeBom)
IF (nSuccess == 0)
    ? oJws:LastErrorText
    oJws:destroy()
    oHeader:destroy()
    RETURN
ENDIF

//  Provide the HMAC key (base64) for signer 0.  In production, obtain the key from a secure source
//  rather than hard-coding it.
cBase64Key := "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
nSuccess := oJws:SetMacKey(0, cBase64Key, "base64")
IF (nSuccess == 0)
    ? oJws:LastErrorText
    oJws:destroy()
    oHeader:destroy()
    RETURN
ENDIF

//  Create the JWS from the current payload, headers, and signing key.  The returned string is the
//  JWS (compact serialization by default).
cJwsCompact := oJws:CreateJws()
IF (oJws:LastMethodSuccess == 0)
    ? oJws:LastErrorText
    oJws:destroy()
    oHeader:destroy()
    RETURN
ENDIF

? cJwsCompact

oJws:destroy()
oHeader:destroy()