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"
; }