![]() |
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
(PureBasic) Decrypt PKCS7 (CMS) EnvelopedDataThis example receives a PKCS7 (CMS) EnvelopedData message that was encrypted to me. To decrypt it:
Summary:
Only the intended recipient, who possesses the correct private key, can successfully decrypt the EnvelopedData. Note: This example requires Chilkat v11.0.0 or greater.
IncludeFile "CkCert.pb" IncludeFile "CkStringBuilder.pb" IncludeFile "CkCrypt2.pb" Procedure ChilkatExample() ; Here's the PKCS7 (CMS) EnvelopedData we received. ; It was created using this example: Create PKCS7 CMS EnvelopedData ; MIICSgYJKoZIhvcNAQcDoIICOzCCAjcCAQAxggHiMIIB3gIBADCBljCBgTELMAkGA1UEBhMCSVQx ; EDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFj ; dGFsaXMgUy5wLkEuMSwwKgYDVQQDDCNBY3RhbGlzIENsaWVudCBBdXRoZW50aWNhdGlvbiBDQSBH ; MwIQPCWvkSv8oQ7xRmEHJ6TzEDA8BgkqhkiG9w0BAQcwL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJ ; KoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUABIIBAKqHAPQNSsQoX7B2NH7QyEOWQRsSVs8oCHXmy8f4 ; MVZD2er3bvYUCIomxpwbLEAl14qjUIMynahooYGgqip7+4FqL301G+BVjZVfEhHWj+VI1dAWnWuL ; VHlvc/pbQNBWqV8rKVJsNIsuAZkdj4WSwLVKxYkYX43B8fh/g71XN2DTJu7Z/824v48KBmgpQBOT ; 2q7IcDGxNPAFN2p6eavIVGn2LvhEbf/Fszyj+GR5tMcnQP1BOLJ3s3JzUBbvj8hcZrF1Vhl9HnTU ; YQx8G/KdW1mR+Wlhl3BWoK0LYKRTbnTx2BXOs0CY1SXOAdhKr01ZYjA+xW4nGzY0lfXS9QZjh9gw ; TAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBKgQQw0xTbfmnt0zjWHo5SaQIp4AgxTVY9E/Ncqy6t+RM ; 8y4c3Av62/wB8IpPUEmtM2OeuZo= sb.i = CkStringBuilder::ckCreate() If sb.i = 0 Debug "Failed to create object." ProcedureReturn EndIf bCrlf.i = 1 CkStringBuilder::ckAppendLine(sb,"MIICSgYJKoZIhvcNAQcDoIICOzCCAjcCAQAxggHiMIIB3gIBADCBljCBgTELMAkGA1UEBhMCSVQx",bCrlf) CkStringBuilder::ckAppendLine(sb,"EDAOBgNVBAgMB0JlcmdhbW8xGTAXBgNVBAcMEFBvbnRlIFNhbiBQaWV0cm8xFzAVBgNVBAoMDkFj",bCrlf) CkStringBuilder::ckAppendLine(sb,"dGFsaXMgUy5wLkEuMSwwKgYDVQQDDCNBY3RhbGlzIENsaWVudCBBdXRoZW50aWNhdGlvbiBDQSBH",bCrlf) CkStringBuilder::ckAppendLine(sb,"MwIQPCWvkSv8oQ7xRmEHJ6TzEDA8BgkqhkiG9w0BAQcwL6APMA0GCWCGSAFlAwQCAQUAoRwwGgYJ",bCrlf) CkStringBuilder::ckAppendLine(sb,"KoZIhvcNAQEIMA0GCWCGSAFlAwQCAQUABIIBAKqHAPQNSsQoX7B2NH7QyEOWQRsSVs8oCHXmy8f4",bCrlf) CkStringBuilder::ckAppendLine(sb,"MVZD2er3bvYUCIomxpwbLEAl14qjUIMynahooYGgqip7+4FqL301G+BVjZVfEhHWj+VI1dAWnWuL",bCrlf) CkStringBuilder::ckAppendLine(sb,"VHlvc/pbQNBWqV8rKVJsNIsuAZkdj4WSwLVKxYkYX43B8fh/g71XN2DTJu7Z/824v48KBmgpQBOT",bCrlf) CkStringBuilder::ckAppendLine(sb,"2q7IcDGxNPAFN2p6eavIVGn2LvhEbf/Fszyj+GR5tMcnQP1BOLJ3s3JzUBbvj8hcZrF1Vhl9HnTU",bCrlf) CkStringBuilder::ckAppendLine(sb,"YQx8G/KdW1mR+Wlhl3BWoK0LYKRTbnTx2BXOs0CY1SXOAdhKr01ZYjA+xW4nGzY0lfXS9QZjh9gw",bCrlf) CkStringBuilder::ckAppendLine(sb,"TAYJKoZIhvcNAQcBMB0GCWCGSAFlAwQBKgQQw0xTbfmnt0zjWHo5SaQIp4AgxTVY9E/Ncqy6t+RM",bCrlf) CkStringBuilder::ckAppendLine(sb,"8y4c3Av62/wB8IpPUEmtM2OeuZo=",bCrlf) crypt.i = CkCrypt2::ckCreate() If crypt.i = 0 Debug "Failed to create object." ProcedureReturn EndIf CkCrypt2::setCkCryptAlgorithm(crypt, "pki") ; The CMS message contains information about the digital certificate that was used to encrypt. ; Assuming the certificate is installed in a Windows certificate store, or macOS keychain, ; Chilkat will automatically locate and use the certificate + private key for decryption. CkCrypt2::setCkEncodingMode(crypt, "base64") CkCrypt2::setCkCharset(crypt, "utf-8") decryptedText.s = CkCrypt2::ckDecryptStringENC(crypt,CkStringBuilder::ckGetAsString(sb)) If CkCrypt2::ckLastMethodSuccess(crypt) = 0 Debug CkCrypt2::ckLastErrorText(crypt) CkStringBuilder::ckDispose(sb) CkCrypt2::ckDispose(crypt) ProcedureReturn EndIf Debug decryptedText ; We can get the digital certificate used for decryption by calling LastDecryptCert cert.i = CkCert::ckCreate() If cert.i = 0 Debug "Failed to create object." ProcedureReturn EndIf success.i = CkCrypt2::ckLastDecryptCert(crypt,cert) If CkCrypt2::ckLastMethodSuccess(crypt) = 0 Debug CkCrypt2::ckLastErrorText(crypt) CkStringBuilder::ckDispose(sb) CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) ProcedureReturn EndIf Debug "Cert used to decrypt: " + CkCert::ckSubjectCN(cert) CkStringBuilder::ckDispose(sb) CkCrypt2::ckDispose(crypt) CkCert::ckDispose(cert) ProcedureReturn EndProcedure |
© 2000-2025 Chilkat Software, Inc. All Rights Reserved.