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) JWE with Binary DataDemonstrates how to create a JWE that contains a binary payload (such as a JPG image). Note: This example requires Chilkat v9.5.0.66 or greater.
Use ChilkatAx-win32.pkg Procedure Test Boolean iSuccess Variant vJpgBytes Handle hoJpgBytes Handle hoJwe ProtHdr Handle hoJweProtHdr String sAesWrappingKey Variant vSbJwe Handle hoSbJwe 2 Handle hoJwe2 Variant vJpgOriginal Handle hoJpgOriginal String sTemp1 Integer iTemp1 // 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. // Load a JPG file that will be the JWE payload. Get Create (RefClass(cComChilkatBinData)) To hoJpgBytes If (Not(IsComObjectCreated(hoJpgBytes))) Begin Send CreateComObject of hoJpgBytes End Get ComLoadFile Of hoJpgBytes "qa_data/jpg/starfish.jpg" To iSuccess // Make sure your app checks the success/failure of the call to LoadFile.. Get ComNumBytes Of hoJpgBytes To iTemp1 Showln "Original JPG size = " iTemp1 Get Create (RefClass(cComChilkatJwe)) To hoJwe If (Not(IsComObjectCreated(hoJwe))) Begin Send CreateComObject of hoJwe End Get Create (RefClass(cComChilkatJsonObject)) To hoJweProtHdr If (Not(IsComObjectCreated(hoJweProtHdr))) Begin Send CreateComObject of hoJweProtHdr End Get ComAppendString Of hoJweProtHdr "alg" "A128KW" To iSuccess Get ComAppendString Of hoJweProtHdr "enc" "A128CBC-HS256" To iSuccess Get pvComObject of hoJweProtHdr to vJweProtHdr Get ComSetProtectedHeader Of hoJwe vJweProtHdr To iSuccess Move "GawgguFyGrWKav7AX4VKUg" To sAesWrappingKey Get ComSetWrappingKey Of hoJwe 0 sAesWrappingKey "base64url" To iSuccess // Encrypt and return the JWE in sbJwe: Get Create (RefClass(cComChilkatStringBuilder)) To hoSbJwe If (Not(IsComObjectCreated(hoSbJwe))) Begin Send CreateComObject of hoSbJwe End Get pvComObject of hoJpgBytes to vJpgBytes Get pvComObject of hoSbJwe to vSbJwe Get ComEncryptBd Of hoJwe vJpgBytes vSbJwe To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoJwe To sTemp1 Showln sTemp1 Procedure_Return End // Show the JWE: Get ComGetAsString Of hoSbJwe To sTemp1 Showln sTemp1 Get ComLength Of hoSbJwe To iTemp1 Showln "size of JWE: " iTemp1 // --------------------------------------------------------- // Decrypt to get the original JPG file.. Get Create (RefClass(cComChilkatJwe)) To hoJwe2 If (Not(IsComObjectCreated(hoJwe2))) Begin Send CreateComObject of hoJwe2 End Get pvComObject of hoSbJwe to vSbJwe Get ComLoadJweSb Of hoJwe2 vSbJwe To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoJwe2 To sTemp1 Showln sTemp1 Procedure_Return End // Set the AES wrap key. Get ComSetWrappingKey Of hoJwe2 0 sAesWrappingKey "base64url" To iSuccess // Decrypt. Get Create (RefClass(cComChilkatBinData)) To hoJpgOriginal If (Not(IsComObjectCreated(hoJpgOriginal))) Begin Send CreateComObject of hoJpgOriginal End Get pvComObject of hoJpgOriginal to vJpgOriginal Get ComDecryptBd Of hoJwe2 0 vJpgOriginal To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoJwe2 To sTemp1 Showln sTemp1 Procedure_Return End Get ComNumBytes Of hoJpgOriginal To iTemp1 Showln "Decrypted JPG size = " iTemp1 // Save the decrypted JPG to a file. Get ComWriteFile Of hoJpgOriginal "qa_output/jwe_decrypted_starfish.jpg" To iSuccess Showln "success = " iSuccess // The output of this program, when tested, was: // Original JPG size = 6229 // eyJhbGciOiJBMTI4S1ciLCJlbmMiOiJBMTI4Q0JDLUhTMjU2In0.9YFz_wteV ... 7Et3hKhpxnKEXw // size of JWE: 8473 // Decrypted JPG size = 6229 // success = True End_Procedure |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.