Visual FoxPro
Visual FoxPro
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 Visual FoxPro Downloads
LOCAL lnSuccess
LOCAL loSbEccJwk
LOCAL loEccKey
LOCAL loJwsProtHdr
LOCAL loJwsUnprotHdr
LOCAL loJws
LOCAL lnBIncludeBom
LOCAL lcPayloadStr
LOCAL lcJwsStr
LOCAL loJson
lnSuccess = 0
* 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.
loSbEccJwk = CreateObject('Chilkat.StringBuilder')
loSbEccJwk.Append('{"kty":"EC",')
loSbEccJwk.Append('"crv":"P-256",')
loSbEccJwk.Append('"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",')
loSbEccJwk.Append('"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",')
loSbEccJwk.Append('"d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI"')
loSbEccJwk.Append("}")
loEccKey = CreateObject('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..)
lnSuccess = loEccKey.LoadJwk(loSbEccJwk.GetAsString())
IF (lnSuccess <> 1) THEN
? loEccKey.LastErrorText
RELEASE loSbEccJwk
RELEASE loEccKey
CANCEL
ENDIF
* ---------------------------------------------------
* Prepare both a protected and unprotected header.
loJwsProtHdr = CreateObject('Chilkat.JsonObject')
loJwsProtHdr.AppendString("alg","ES256")
loJwsUnprotHdr = CreateObject('Chilkat.JsonObject')
loJwsUnprotHdr.AppendString("kid","myEcKey")
* ---------------------------------------------------
loJws = CreateObject('Chilkat.Jws')
loJws.SetProtectedHeader(0,loJwsProtHdr)
loJws.SetUnprotectedHeader(0,loJwsUnprotHdr)
loJws.SetPrivateKey(0,loEccKey)
lnBIncludeBom = 0
lcPayloadStr = "In our village, folks say God crumbles up the old moon into stars."
loJws.SetPayload(lcPayloadStr,"utf-8",lnBIncludeBom)
* ---------------------------------------------------
* Create the JWS.
* Indicate we prefer the non-compact, flattened serialization.
loJws.PreferCompact = 0
loJws.PreferFlattened = 1
lcJwsStr = loJws.CreateJws()
IF (loJws.LastMethodSuccess <> 1) THEN
? loJws.LastErrorText
RELEASE loSbEccJwk
RELEASE loEccKey
RELEASE loJwsProtHdr
RELEASE loJwsUnprotHdr
RELEASE loJws
CANCEL
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..
loJson = CreateObject('Chilkat.JsonObject')
loJson.Load(lcJwsStr)
loJson.EmitCompact = 0
? loJson.Emit()
* Sample output:
* {
* "payload": "SW4gb3VyIHZpbGxhZ2UsIGZvbGtzIHNheSBHb2QgY3J1bWJsZXMgdXAgdGhlIG9sZCBtb29uIGludG8gc3RhcnMu",
* "protected": "eyJhbGciOiJFUzI1NiJ9",
* "header": {
* "kid": "myEcKey"
* },
* "signature": "b7V2UpDPytr-kMnM_YjiQ3E0J2ucOI9LYA7mt57vccrK1rb84j9areqgQcJwOA00aWGoz4hf6sMTBfobdcJEGg"
* }
RELEASE loSbEccJwk
RELEASE loEccKey
RELEASE loJwsProtHdr
RELEASE loJwsUnprotHdr
RELEASE loJws
RELEASE loJson