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
(AutoIt) JWE using A256GCMKWThis example demonstrates creating a JCE with AES GCM key wrap.
; This requires the Chilkat API to have been previously unlocked. ; See Global Unlock Sample for sample code. Local $bSuccess Local $sPlaintext = "My text to enrypt" $oJwe = ObjCreate("Chilkat.Jwe") ; First build the JWE Protected Header: ; { ; "alg": "A256GCMKW", ; "kid": "18ec08e1-bfa9-4d95-b205-2b4dd1d4321d", ; "tag": "kfPduVQ3T3H6vnewt--ksw", ; "iv": "KkYT0GX_2jHlfqN_", ; "enc": "A128CBC-HS256" ; } $oJweProtHdr = ObjCreate("Chilkat.JsonObject") $oJweProtHdr.AppendString("alg","A256GCMKW") ; kid is optional $oJweProtHdr.AppendString("kid","18ec08e1-bfa9-4d95-b205-2b4dd1d4321d") ; tag is optional $oJweProtHdr.AppendString("tag","kfPduVQ3T3H6vnewt--ksw") $oJweProtHdr.AppendString("enc","A256GCM") ; the iv should be 16 random chars. $oPrng = ObjCreate("Chilkat.Prng") $oJweProtHdr.AppendString("iv",$oPrng.RandomString(16,True,True,True)) $oJwe.SetProtectedHeader($oJweProtHdr) ConsoleWrite("JWE Protected Header: " & $oJweProtHdr.Emit() & @CRLF) ConsoleWrite("--" & @CRLF) ; Given that we have 256-bit AES, our key should be 32 bytes. ; The ascii string here is 32 bytes, therefore the 2nd arg is "ascii" to use these ; ascii chars directly as the key. Local $sAesWrappingKey = "2baf4f730f5e4542b428593ef9cceb0e" $oJwe.SetWrappingKey(0,$sAesWrappingKey,"ascii") ; Encrypt and return the JWE: Local $strJwe = $oJwe.Encrypt($sPlaintext,"utf-8") If ($oJwe.LastMethodSuccess <> True) Then ConsoleWrite($oJwe.LastErrorText & @CRLF) Exit EndIf ; Show the JWE we just created: ConsoleWrite($strJwe & @CRLF) ; Decrypt the JWE that was just produced. ; 1) Load the JWE. ; 2) Set the AES wrapping key. ; 3) Decrypt. $oJwe2 = ObjCreate("Chilkat.Jwe") $bSuccess = $oJwe2.LoadJwe($strJwe) If ($bSuccess <> True) Then ConsoleWrite($oJwe2.LastErrorText & @CRLF) Exit EndIf ; Set the AES wrap key. Important to use "ascii" $oJwe2.SetWrappingKey(0,$sAesWrappingKey,"ascii") ; Decrypt. Local $sOriginalPlaintext = $oJwe2.Decrypt(0,"utf-8") If ($oJwe2.LastMethodSuccess <> True) Then ConsoleWrite($oJwe2.LastErrorText & @CRLF) Exit EndIf ConsoleWrite("original text: " & @CRLF) ConsoleWrite($sOriginalPlaintext & @CRLF) |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.