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
PKCS7 SignedData Signature (embeds Signed Data)How to create a PKCS7 signature. The resulting PKCS7 structure is encoded to a printable string using hex or base64 encoding. The data being signed is embedded within the PKCS#7 structure. Demonstrates how to verify the signature and recover the original data.
uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, CHILKATCRYPT2Lib_TLB, CHILKATCERTIFICATELib_TLB, OleCtrls; ... procedure TForm1.Button1Click(Sender: TObject); var crypt: TChilkatCrypt2; success: Integer; cert: TChilkatCert; bHasPrivateKey: Integer; strData: String; strSignatureWithData: String; originalData: String; begin crypt := TChilkatCrypt2.Create(Self); // Any string argument automatically begins the 30-day trial. success := crypt.UnlockComponent('30-day trial'); if (success <> 1) then begin ShowMessage('Crypt component unlock failed'); Exit; end; cert := TChilkatCert.Create(Self); success := cert.LoadByCommonName('Chilkat Software'); if (success <> 1) then begin ShowMessage(cert.LastErrorText); Exit; end; // Make sure this certificate has a private key available: bHasPrivateKey := cert.HasPrivateKey(); if (bHasPrivateKey <> 1) then begin ShowMessage('No private key available for signing.'); Exit; end; // Tell the encryption component to use this cert. crypt.SetSigningCert(cert.ControlInterface As CHILKATCRYPT2Lib_TLB.IChilkatCert); strData := 'This is the data to be signed.'; // Indicate that the PKCS7 signature should be returned // as a base64 encoded string: crypt.EncodingMode := 'base64'; // The EncodingMode may be set to other values such as // "hex", "url", "quoted-printable", etc. strSignatureWithData := crypt.OpaqueSignStringENC(strData); Memo1.Lines.Add(strSignatureWithData); // Now verify the signature against the original data. // Tell the component what certificate to use for verification. crypt.SetVerifyCert(cert.ControlInterface As CHILKATCRYPT2Lib_TLB.IChilkatCert); originalData := crypt.OpaqueVerifyStringENC(strSignatureWithData); if (Length(originalData) = 0 ) then begin // The signature verification failed. ShowMessage(crypt.LastErrorText); end else begin Memo1.Lines.Add(originalData); ShowMessage('Signature verified!'); end; end; |
© 2000-2010 Chilkat Software, Inc. All Rights Reserved.