Sample code for 30+ languages & platforms
AutoIt

Create JWS using the Flattened JSON Serialization Format

See more JSON Web Signatures (JWS) Examples

Creates a JSON Web Signature (JWS) containing 1 signature and output using the flattened JSON serialization format.

Note: This example requires Chilkat v9.5.0.66 or greater.

Chilkat AutoIt Downloads

AutoIt
Local $bSuccess = False

;  This requires the Chilkat API to have been previously unlocked.
;  See Global Unlock Sample for sample code.

;  Note: This example requires Chilkat v9.5.0.66 or greater.

;  The JWS to be created will contain one signature using an ECDSA key.

$oSbEccJwk = ObjCreate("Chilkat.StringBuilder")
$oSbEccJwk.Append("{""kty"":""EC"",")
$oSbEccJwk.Append("""crv"":""P-256"",")
$oSbEccJwk.Append("""x"":""f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU"",")
$oSbEccJwk.Append("""y"":""x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0"",")
$oSbEccJwk.Append("""d"":""jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI""")
$oSbEccJwk.Append("}")

$oEccKey = ObjCreate("Chilkat.PrivateKey")
;  Note: This example loads the ECDSA key from JWK format.  Any format can be loaded
;  into the private key object. (See the online reference documentation..)
$bSuccess = $oEccKey.LoadJwk($oSbEccJwk.GetAsString())
If ($bSuccess <> True) Then
    ConsoleWrite($oEccKey.LastErrorText & @CRLF)
    Exit
EndIf

;  ---------------------------------------------------
;  Prepare both a protected and unprotected header.

$oJwsProtHdr = ObjCreate("Chilkat.JsonObject")
$oJwsProtHdr.AppendString("alg","ES256")

$oJwsUnprotHdr = ObjCreate("Chilkat.JsonObject")
$oJwsUnprotHdr.AppendString("kid","myEcKey")

;  ---------------------------------------------------
$oJws = ObjCreate("Chilkat.Jws")

$oJws.SetProtectedHeader(0,$oJwsProtHdr)
$oJws.SetUnprotectedHeader(0,$oJwsUnprotHdr)

$oJws.SetPrivateKey(0,$oEccKey)

Local $bIncludeBom = False
Local $sPayloadStr = "In our village, folks say God crumbles up the old moon into stars."
$oJws.SetPayload($sPayloadStr,"utf-8",$bIncludeBom)

;  ---------------------------------------------------
;  Create the JWS.
;  Indicate we prefer the non-compact, flattened serialization.
$oJws.PreferCompact = False
$oJws.PreferFlattened = True

Local $sJwsStr = $oJws.CreateJws()
If ($oJws.LastMethodSuccess <> True) Then
    ConsoleWrite($oJws.LastErrorText & @CRLF)
    Exit
EndIf

;  The jwsStr is contains the flattened JSON in the smallest possible size, which is a single line.
;  To get in human-readable format, load into a Chilkat JSON object and emit..
$oJson = ObjCreate("Chilkat.JsonObject")
$oJson.Load($sJwsStr)
$oJson.EmitCompact = False
ConsoleWrite($oJson.Emit() & @CRLF)

;  Sample output:

;  { 
;    "payload": "SW4gb3VyIHZpbGxhZ2UsIGZvbGtzIHNheSBHb2QgY3J1bWJsZXMgdXAgdGhlIG9sZCBtb29uIGludG8gc3RhcnMu",
;    "protected": "eyJhbGciOiJFUzI1NiJ9",
;    "header": { 
;      "kid": "myEcKey"
;    },
;    "signature": "b7V2UpDPytr-kMnM_YjiQ3E0J2ucOI9LYA7mt57vccrK1rb84j9areqgQcJwOA00aWGoz4hf6sMTBfobdcJEGg"
;  }