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