Chilkat HOME .NET Core C# Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi ActiveX Delphi DLL Go Java Lianja Mono C# Node.js Objective-C PHP ActiveX PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift 2 Swift 3,4,5... Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Create JWS using the Flattened JSON Serialization FormatCreates 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.
Use ChilkatAx-win32.pkg Procedure Test Handle hoSbEccJwk Boolean iSuccess Variant vEccKey Handle hoEccKey Boolean iSuccess ProtHdr Handle hoJwsProtHdr Variant vJwsUnprotHdr Handle hoJwsUnprotHdr Handle hoJws Boolean iBIncludeBom String sPayloadStr String sJwsStr Handle hoJson String sTemp1 Boolean bTemp1 // 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. Get Create (RefClass(cComChilkatStringBuilder)) To hoSbEccJwk If (Not(IsComObjectCreated(hoSbEccJwk))) Begin Send CreateComObject of hoSbEccJwk End Get ComAppend Of hoSbEccJwk '{"kty":"EC",' To iSuccess Get ComAppend Of hoSbEccJwk '"crv":"P-256",' To iSuccess Get ComAppend Of hoSbEccJwk '"x":"f83OJ3D2xF1Bg8vub9tLe1gHMzV76e8Tus9uPHvRVEU",' To iSuccess Get ComAppend Of hoSbEccJwk '"y":"x_FEzRu9m36HLN_tue659LNpXW6pCyStikYjKIWI5a0",' To iSuccess Get ComAppend Of hoSbEccJwk '"d":"jpsQnnGQmL-YBIffH1136cspYG6-0iY7X1fCE9-E9LI"' To iSuccess Get ComAppend Of hoSbEccJwk "}" To iSuccess Get Create (RefClass(cComChilkatPrivateKey)) To hoEccKey If (Not(IsComObjectCreated(hoEccKey))) Begin Send CreateComObject of hoEccKey End // 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..) Get ComGetAsString Of hoSbEccJwk To sTemp1 Get ComLoadJwk Of hoEccKey sTemp1 To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoEccKey To sTemp1 Showln sTemp1 Procedure_Return End // --------------------------------------------------- // Prepare both a protected and unprotected header. Get Create (RefClass(cComChilkatJsonObject)) To hoJwsProtHdr If (Not(IsComObjectCreated(hoJwsProtHdr))) Begin Send CreateComObject of hoJwsProtHdr End Get ComAppendString Of hoJwsProtHdr "alg" "ES256" To iSuccess Get Create (RefClass(cComChilkatJsonObject)) To hoJwsUnprotHdr If (Not(IsComObjectCreated(hoJwsUnprotHdr))) Begin Send CreateComObject of hoJwsUnprotHdr End Get ComAppendString Of hoJwsUnprotHdr "kid" "myEcKey" To iSuccess // --------------------------------------------------- Get Create (RefClass(cComChilkatJws)) To hoJws If (Not(IsComObjectCreated(hoJws))) Begin Send CreateComObject of hoJws End Get pvComObject of hoJwsProtHdr to vJwsProtHdr Get ComSetProtectedHeader Of hoJws 0 vJwsProtHdr To iSuccess Get pvComObject of hoJwsUnprotHdr to vJwsUnprotHdr Get ComSetUnprotectedHeader Of hoJws 0 vJwsUnprotHdr To iSuccess Get pvComObject of hoEccKey to vEccKey Get ComSetPrivateKey Of hoJws 0 vEccKey To iSuccess Move False To iBIncludeBom Move "In our village, folks say God crumbles up the old moon into stars." To sPayloadStr Get ComSetPayload Of hoJws sPayloadStr "utf-8" iBIncludeBom To iSuccess // --------------------------------------------------- // Create the JWS. // Indicate we prefer the non-compact, flattened serialization. Set ComPreferCompact Of hoJws To False Set ComPreferFlattened Of hoJws To True Get ComCreateJws Of hoJws To sJwsStr Get ComLastMethodSuccess Of hoJws To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoJws To sTemp1 Showln sTemp1 Procedure_Return End // 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.. Get Create (RefClass(cComChilkatJsonObject)) To hoJson If (Not(IsComObjectCreated(hoJson))) Begin Send CreateComObject of hoJson End Get ComLoad Of hoJson sJwsStr To iSuccess Set ComEmitCompact Of hoJson To False Get ComEmit Of hoJson To sTemp1 Showln sTemp1 // Sample output: // { // "payload": "SW4gb3VyIHZpbGxhZ2UsIGZvbGtzIHNheSBHb2QgY3J1bWJsZXMgdXAgdGhlIG9sZCBtb29uIGludG8gc3RhcnMu", // "protected": "eyJhbGciOiJFUzI1NiJ9", // "header": { // "kid": "myEcKey" // }, // "signature": "b7V2UpDPytr-kMnM_YjiQ3E0J2ucOI9LYA7mt57vccrK1rb84j9areqgQcJwOA00aWGoz4hf6sMTBfobdcJEGg" // } End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.