PureBasic
PureBasic
Create a JWS into a StringBuilder
See more JSON Web Signatures (JWS) Examples
Demonstrates Jws.CreateJwsSb, which creates a JWS and writes it into a StringBuilder.
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 PureBasic Downloads
IncludeFile "CkJws.pb"
IncludeFile "CkStringBuilder.pb"
IncludeFile "CkJsonObject.pb"
Procedure ChilkatExample()
success.i = 0
jws.i = CkJws::ckCreate()
If jws.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
; Set the protected header for signer 0, specifying the signature algorithm (alg).
header.i = CkJsonObject::ckCreate()
If header.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
CkJsonObject::ckUpdateString(header,"alg","HS256")
success = CkJws::ckSetProtectedHeader(jws,0,header)
If success = 0
Debug CkJws::ckLastErrorText(jws)
CkJws::ckDispose(jws)
CkJsonObject::ckDispose(header)
ProcedureReturn
EndIf
; Set the payload to be signed.
bIncludeBom.i = 0
success = CkJws::ckSetPayload(jws,"This is the content to sign.","utf-8",bIncludeBom)
If success = 0
Debug CkJws::ckLastErrorText(jws)
CkJws::ckDispose(jws)
CkJsonObject::ckDispose(header)
ProcedureReturn
EndIf
; Provide the HMAC key (base64) for signer 0. In production, obtain the key from a secure source
; rather than hard-coding it.
base64Key.s = "YWJjZGVmZ2hpamtsbW5vcHFyc3R1dnd4eXowMTIzNDU="
success = CkJws::ckSetMacKey(jws,0,base64Key,"base64")
If success = 0
Debug CkJws::ckLastErrorText(jws)
CkJws::ckDispose(jws)
CkJsonObject::ckDispose(header)
ProcedureReturn
EndIf
; Create the JWS and write it into a StringBuilder.
sbJws.i = CkStringBuilder::ckCreate()
If sbJws.i = 0
Debug "Failed to create object."
ProcedureReturn
EndIf
success = CkJws::ckCreateJwsSb(jws,sbJws)
If success = 0
Debug CkJws::ckLastErrorText(jws)
CkJws::ckDispose(jws)
CkJsonObject::ckDispose(header)
CkStringBuilder::ckDispose(sbJws)
ProcedureReturn
EndIf
Debug CkStringBuilder::ckGetAsString(sbJws)
CkJws::ckDispose(jws)
CkJsonObject::ckDispose(header)
CkStringBuilder::ckDispose(sbJws)
ProcedureReturn
EndProcedure