Chilkat
HOME
Android™
ASP
Visual Basic
VB.NET
C#
iOS (IPhone)
Objective-C
C++
C
MFC
Delphi
FoxPro
Java
Perl
PHP Extension
PHP ActiveX
Python
PowerShell
Ruby
SQL Server
VBScript
Unwrap S/MIME Security LayersDemonstrates how to unwrap the security layers of a signed and/or encrypted S/MIME message. uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CHILKATMIMELib_TLB, CHILKATCERTIFICATELib_TLB, OleCtrls; ... procedure TForm1.Button1Click(Sender: TObject); var i: Integer; mime: CHILKATMIMELib_TLB.IChilkatMime; success: Integer; cert: CHILKATMIMELib_TLB.IChilkatCert; numSignerCerts: Integer; numEncryptCerts: Integer; begin mime := CoChilkatMime.Create(); success := mime.UnlockComponent('Anything for 30-day trial'); if (success = 0) then begin ShowMessage(mime.LastErrorText); Exit; end; // Note: Your S/MIME file may have a different file extension. success := mime.LoadMimeFile('smime.eml'); if (success = 0) then begin ShowMessage(mime.LastErrorText); Exit; end; // Unwrap any security layers so that the resultant MIME // is the original message before signing and/or encrypting // was applied. UnwrapSecurity returns 1 if // there was nothing to unwrap, or if all signatures were verified, // and all decryptions succeeded. success := mime.UnwrapSecurity(); if (success = 0) then begin ShowMessage(mime.LastErrorText); Exit; end; // Save the unwrapped S/MIME: success := mime.SaveMime('unwrapped.eml'); if (success = 0) then begin ShowMessage(mime.LastErrorText); Exit; end; // Let's see if the MIME was signed, and if so whether // the signature(s) were verified. Also, examine the certificate // used for signing. // Unwrapping the security sets the NumSignerCerts property. // If it is non-zero, then signatures were unwrapped... Memo1.Lines.Add('Signer Certificates: '); numSignerCerts := mime.NumSignerCerts; if (numSignerCerts > 0) then begin for i := 0 to numSignerCerts - 1 do begin cert := mime.GetSignerCert(i) As CHILKATMIMELib_TLB.IChilkatCert; if (not (cert = nil )) then begin // Show the cert's common name. Memo1.Lines.Add(cert.SubjectCN); end; end; end; // Now check to see if anything was decrypted. Memo1.Lines.Add('Encryption Certificates: '); numEncryptCerts := mime.NumEncryptCerts; if (numEncryptCerts > 0) then begin for i := 0 to numEncryptCerts - 1 do begin cert := mime.GetEncryptCert(i) As CHILKATMIMELib_TLB.IChilkatCert; if (not (cert = nil )) then begin // Show the cert's common name. Memo1.Lines.Add(cert.SubjectCN); end; end; end; end; |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.