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) JWS Using HMAC SHA-256Creates a JSON Web Signatures (JWS) using HMAC SHA-256. Note: This example requires Chilkat v9.5.0.66 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess ProtHdr Handle hoJwsProtHdr Handle hoJws String sHmacKey Integer iSignatureIndex Boolean iBIncludeBom String sPayloadStr String sJwsCompact Handle hoJws2 Integer v Variant vJoseHeader Handle hoJoseHeader 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. // First create the JWS Protected Header Get Create (RefClass(cComChilkatJsonObject)) To hoJwsProtHdr If (Not(IsComObjectCreated(hoJwsProtHdr))) Begin Send CreateComObject of hoJwsProtHdr End Get ComAppendString Of hoJwsProtHdr "typ" "JWT" To iSuccess Get ComAppendString Of hoJwsProtHdr "alg" "HS256" To iSuccess Get ComEmit Of hoJwsProtHdr To sTemp1 Showln "JWS Protected Header: " sTemp1 // Output: // JWS Protected Header: {"typ":"JWT","alg":"HS256"} Get Create (RefClass(cComChilkatJws)) To hoJws If (Not(IsComObjectCreated(hoJws))) Begin Send CreateComObject of hoJws End // Set the HMAC key: Move "AyM1SysPpbyDfgZld3umj1qzKObwVMkoqQ-EstJQLr_T-1qS0gZH75aKtMN3Yj0iPS4hcgUuTwjAzZr1Z9CAow" To sHmacKey Move 0 To iSignatureIndex Get ComSetMacKey Of hoJws iSignatureIndex sHmacKey "base64url" To iSuccess // Set the protected header: Get pvComObject of hoJwsProtHdr to vJwsProtHdr Get ComSetProtectedHeader Of hoJws iSignatureIndex vJwsProtHdr To iSuccess // Set the payload. 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 // By default, the compact serialization is used. Get ComCreateJws Of hoJws To sJwsCompact Get ComLastMethodSuccess Of hoJws To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoJws To sTemp1 Showln sTemp1 Procedure_Return End Showln "JWS: " sJwsCompact // sample output: // JWS: eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.SW4gb3VyIHZpbGxhZ2UsIGZvbGtzIHNheSBHb2QgY3J1bWJsZXMgdXAgdGhlIG9sZCBtb29uIGludG8gc3RhcnMu.bsYsi8HJ0N6OqGI1hKQ9QQRNPxxA5qMpcHLtOvXatk8 // Now load the JWS, validate, and recover the original text. Get Create (RefClass(cComChilkatJws)) To hoJws2 If (Not(IsComObjectCreated(hoJws2))) Begin Send CreateComObject of hoJws2 End // Load the JWS. Get ComLoadJws Of hoJws2 sJwsCompact To iSuccess // Set the MAC key used for validation. Move 0 To iSignatureIndex Get ComSetMacKey Of hoJws2 iSignatureIndex sHmacKey "base64url" To iSuccess // Validate the 1st (and only) signature at index 0.. Get ComValidate Of hoJws2 iSignatureIndex To v If (v < 0) Begin // Perhaps Chilkat was not unlocked or the trial expired.. Showln "Method call failed for some other reason." Get ComLastErrorText Of hoJws2 To sTemp1 Showln sTemp1 Procedure_Return End If (v = 0) Begin Showln "Invalid signature. The MAC key was incorrect, the JWS was invalid, or both." Procedure_Return End // If we get here, the signature was validated.. Showln "Signature validated." // Recover the original content: Get ComGetPayload Of hoJws2 "utf-8" To sTemp1 Showln sTemp1 // Examine the protected header: Get ComGetProtectedHeader Of hoJws2 iSignatureIndex To vJoseHeader If (IsComObject(vJoseHeader)) Begin Get Create (RefClass(cComChilkatJsonObject)) To hoJoseHeader Set pvComObject Of hoJoseHeader To vJoseHeader End Get ComLastMethodSuccess Of hoJws2 To bTemp1 If (bTemp1 <> True) Begin Showln "No protected header found at the given index." Procedure_Return End Set ComEmitCompact Of hoJoseHeader To False Showln "Protected (JOSE) header:" Get ComEmit Of hoJoseHeader To sTemp1 Showln sTemp1 Send Destroy of hoJoseHeader // Output: // Signature validated. // In our village, folks say God crumbles up the old moon into stars. // Protected (JOSE) header: // { // "typ": "JWT", // "alg": "HS256" // } End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.