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
(Delphi DLL) Encrypt using Cert to produce -----BEGIN PKCS7----- ... -----END PKCS7-----Demonstrates how to encrypt using a certificate to produce output such as: -----BEGIN PKCS7----- MIIHPwYJKoZIhvcNAQcEoIIHMDCCBywC ... ... ... -----END PKCS7-----The certificate to be used is not your own, but the certificate of the intended recipient of the message.
uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, StringBuilder, Cert, Crypt2; ... procedure TForm1.Button1Click(Sender: TObject); var crypt: HCkCrypt2; cert: HCkCert; success: Boolean; toBeEncrypted: PWideChar; encryptedStr: PWideChar; sb: HCkStringBuilder; outStr: PWideChar; begin // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. crypt := CkCrypt2_Create(); // Specify the encryption to be used. // "pki" indicates "Public Key Infrastructure" and will create a PKCS7 encrypted (enveloped) message. CkCrypt2_putCryptAlgorithm(crypt,'pki'); CkCrypt2_putPkcs7CryptAlg(crypt,'aes'); CkCrypt2_putKeyLength(crypt,128); CkCrypt2_putOaepHash(crypt,'sha256'); CkCrypt2_putOaepPadding(crypt,True); // A certificate is needed as the encryption key.. cert := CkCert_Create(); success := CkCert_LoadFromFile(cert,'qa_data/certs/testCert.pem'); if (success <> True) then begin Memo1.Lines.Add(CkCert__lastErrorText(cert)); Exit; end; // Tell the crypt object to use the certificate. CkCrypt2_SetEncryptCert(crypt,cert); toBeEncrypted := 'This string is to be encrypted.'; // Get the result in multi-line BASE64 MIME format. CkCrypt2_putEncodingMode(crypt,'base64_mime'); encryptedStr := CkCrypt2__encryptStringENC(crypt,toBeEncrypted); if (success <> True) then begin Memo1.Lines.Add(CkCrypt2__lastErrorText(crypt)); Exit; end; // Make a "-----BEGIN PKCS7-----" ... "-----END PKCS7-----" sandwich... sb := CkStringBuilder_Create(); CkStringBuilder_AppendLine(sb,'-----BEGIN PKCS7-----',True); CkStringBuilder_Append(sb,encryptedStr); CkStringBuilder_AppendLine(sb,'-----END PKCS7-----',True); outStr := CkStringBuilder__getAsString(sb); Memo1.Lines.Add(outStr); // Sample output: // -----BEGIN PKCS7----- // MIICYQYJKoZIhvcNAQcDoIICUjCCAk4CAQAxggH5MIIB9QIBADCBsTCBmzELMAkGA1UEBhMCR0Ix // GzAZBgNVBAgTEkdyZWF0ZXIgTWFuY2hlc3RlcjEQMA4GA1UEBxMHU2FsZm9yZDEaMBgGA1UEChMR // Q09NT0RPIENBIExpbWl0ZWQxQTA/BgNVBAMTOENPTU9ETyBTSEEtMjU2IENsaWVudCBBdXRoZW50 // aWNhdGlvbiBhbmQgU2VjdXJlIEVtYWlsIENBAhEAuBl4qE2MODB05C5h53M5UDA4BgkqhkiG9w0B // AQcwK6APMA0GCWCGSAFlAwQCAQUAoRgwFgYJKoZIhvcNAQEIMAkGBSsOAwIaBQAEggEAyZejlE37 // awl0bCWVbOCqf9yLSN17mZRamG8FHDh3nNu11G0+oyJtsPDEnSKsQig0V67MZ+hcWV+uf4ytcjyx // H0gs5uex+LwkB+c3ZTOt18IYWFtRilg1HFy1ZN3t0D2QbxYy+i1TXOOwp3gAHL45vRCJ0FbKyQ36 // pKl0XLe+lRvp2EiJCKVjxtX8VcZOKT4xkG7yOARaCQceth6pA58Dg0yzAz7w4nD2UgAlNzrXG69X // e+7e7yfBv47RRqFiQqDpCn+fM/PmFbUyqBppMwc64yP+fJek8VyJw2/UaXWWM4iSKSflk90tiHwf // loEU3It4arnSv94fZQo0v129aBqpWzBMBgkqhkiG9w0BBwEwHQYJYIZIAWUDBAECBBCohUgm5qX+ // TE6PxtPCmWi8gCBgbNg39emAB+AqLozm+vSLjZOGfg3M52gccKUJ8tg8XQ== // -----END PKCS7----- CkCrypt2_Dispose(crypt); CkCert_Dispose(cert); CkStringBuilder_Dispose(sb); end; |
© 2000-2024 Chilkat Software, Inc. All Rights Reserved.