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
(Perl) JWE using "dir" Direct use of Shared Symmetric KeyDemonstrates how to create a JWE using the "dir" alg -- which is to directly use a shared symmetric key. Note: This example requires Chilkat v9.5.0.66 or greater.
use chilkat(); # 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. $plaintext = "Live long and prosper."; $jwe = chilkat::CkJwe->new(); # First build the JWE Protected Header.. $jweProtHdr = chilkat::CkJsonObject->new(); $jweProtHdr->AppendString("alg","dir"); $jweProtHdr->AppendString("enc","A128GCM"); # Don't forget to actually provide the protected header to the JWE object: $jwe->SetProtectedHeader($jweProtHdr); # The JWE is to use 128-bit AES GCM encryption as specified by the "enc" parameter. # Given that the "alg" = "dir", we are to directly specify the AES GCM key. # (It is assumed that the decrypting side also has knowledge of the direct key to be used..) # Our key will be these 16 hex bytes: 000102030405060708090A0B0C0D0E0F # The SetWrappingKey method is also used for "dir" direct keys. # However, if there are multiple recipients, they must all share the same CEK (Content Encryption Key), # which is specified by calling SetWrappingKey with an index of 0. $recipientIndex = 0; $jwe->SetWrappingKey($recipientIndex,"000102030405060708090A0B0C0D0E0F","hex"); # Encrypt and return the JWE: $strJwe = $jwe->encrypt($plaintext,"utf-8"); if ($jwe->get_LastMethodSuccess() != 1) { print $jwe->lastErrorText() . "\r\n"; exit; } # Show the JWE we just created: print $strJwe . "\r\n"; # Decrypt the JWE. $jwe2 = chilkat::CkJwe->new(); $success = $jwe2->LoadJwe($strJwe); if ($success != 1) { print $jwe2->lastErrorText() . "\r\n"; exit; } $jwe2->SetWrappingKey(0,"000102030405060708090A0B0C0D0E0F","hex"); # Decrypt. $originalPlaintext = $jwe2->decrypt(0,"utf-8"); if ($jwe2->get_LastMethodSuccess() != 1) { print $jwe2->lastErrorText() . "\r\n"; exit; } print "original text: " . "\r\n"; print $originalPlaintext . "\r\n"; # Sample output: # eyJhbGciOiJkaXIiLCJlbmMiOiJBMTI4R0NNIn0..20HX5Huc7f1nQC4pBUtiCQ.axFZIxtZy5j0ifJQUzGXLKIpsBuxJA.eBrOC-NrsreN6JeGuOPk1g # original text: # Live long and prosper. |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.