![]() |
Chilkat HOME Android™ AutoIt C C# C++ Chilkat2-Python CkPython Classic ASP DataFlex Delphi DLL Go Java Node.js Objective-C PHP Extension Perl PowerBuilder PowerShell PureBasic Ruby SQL Server Swift Tcl Unicode C Unicode C++ VB.NET VBScript Visual Basic 6.0 Visual FoxPro Xojo Plugin
(DataFlex) Create PEM-encoded PKCS#7 Detached SignatureSee more Digital Signatures ExamplesDemonstrates how to create a PKCS7 PEM-encoded object containing a detached signature.
Use ChilkatAx-win32.pkg Procedure Test Variant vCert Handle hoCert Boolean iSuccess Handle hoCrypt String sTextToSign String sSigBase64 Handle hoSb Boolean iCrlf String sTemp1 Boolean bTemp1 // This example requires the Chilkat API to have been previously unlocked. // See Global Unlock Sample for sample code. Get Create (RefClass(cComChilkatCert)) To hoCert If (Not(IsComObjectCreated(hoCert))) Begin Send CreateComObject of hoCert End // Load the cert and private key. Get ComLoadPfxFile Of hoCert "qa_data/pfx/myCertAndKey.p12" "password" To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoCert To sTemp1 Showln sTemp1 Procedure_Return End Get Create (RefClass(cComChilkatCrypt2)) To hoCrypt If (Not(IsComObjectCreated(hoCrypt))) Begin Send CreateComObject of hoCrypt End Get pvComObject of hoCert to vCert Get ComSetSigningCert Of hoCrypt vCert To iSuccess If (iSuccess <> True) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End // Use SHA-256 Set ComHashAlgorithm Of hoCrypt To "sha256" // Hash the utf-8 byte representation of the string Set ComCharset Of hoCrypt To "utf-8" // Return the result in base64 Set ComEncodingMode Of hoCrypt To "base64Mime" // Sign some text to create a detached signature (i.e. a signature that does not include the signed data) Move "This is the text to be hashed and signed." To sTextToSign Get ComSignStringENC Of hoCrypt sTextToSign To sSigBase64 Get ComLastMethodSuccess Of hoCrypt To bTemp1 If (bTemp1 <> True) Begin Get ComLastErrorText Of hoCrypt To sTemp1 Showln sTemp1 Procedure_Return End Showln sSigBase64 // The result: // MIIWbgYJKoZIhvcNAQcCoIIWXzCCFlsCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg // ghMXMIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQx // ... // ... // If we want it in PEM format with just LF line-endings: Get Create (RefClass(cComChilkatStringBuilder)) To hoSb If (Not(IsComObjectCreated(hoSb))) Begin Send CreateComObject of hoSb End // Just LF line endings, not CRLF. Move False To iCrlf Get ComAppendLine Of hoSb "-----BEGIN PKCS7-----" iCrlf To iSuccess Get ComAppend Of hoSb sSigBase64 To iSuccess Get ComAppendLine Of hoSb "-----END PKCS7-----" iCrlf To iSuccess Get ComToLF Of hoSb To iSuccess // Save to a file. Get ComWriteFile Of hoSb "c:/temp/qa_output/sig.pem" "utf-8" False To iSuccess // Examine.. Get ComGetAsString Of hoSb To sTemp1 Showln sTemp1 // Result is: // -----BEGIN PKCS7----- // MIIWbgYJKoZIhvcNAQcCoIIWXzCCFlsCAQExDzANBglghkgBZQMEAgEFADALBgkqhkiG9w0BBwGg // ghMXMIIFuzCCA6OgAwIBAgIIVwoRl0LE48wwDQYJKoZIhvcNAQELBQAwazELMAkGA1UEBhMCSVQx // DjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3RhbGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUG // A1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBSb290IENBMB4XDTExMDkyMjExMjIwMloXDTMw // MDkyMjExMjIwMlowazELMAkGA1UEBhMCSVQxDjAMBgNVBAcMBU1pbGFuMSMwIQYDVQQKDBpBY3Rh // bGlzIFMucC5BLi8wMzM1ODUyMDk2NzEnMCUGA1UEAwweQWN0YWxpcyBBdXRoZW50aWNhdGlvbiBS // b290IENBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAp8bEpSmkLO/lGMWwUKNvUTuf // ClrJwkg4CsIcoBh/kbWHuUA/3R1oHwiD1S0eiKD4j1aPbZkCkpAW1V8IbInX4ay8IMKx4INRimlN // AJZaby/ARH6jDuSRzVju3PvHHkVH3Se5CAGfpiEd9UEtL0z9KK3giq0itFZljoZUj5NDKd45Rnij // MCO6zfB9E1fAXdKDa0hMxKufgFpbOr3JpyI/gCczWw63igxdBzcIy2zSekciRDXFzMwujt0q7bd9 // ... // ... // -----END PKCS7----- End_Procedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.