Sample code for 30+ languages & platforms
Delphi ActiveX

Verify the Timestamp Server Token (if any) while Validating a CMS Signature

Demonstrates how to also validate the timestamp server token (if any) while validating a CMS signature.

Chilkat Delphi ActiveX Downloads

Delphi ActiveX
uses
    Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
    Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Chilkat_TLB;

...

procedure TForm1.Button1Click(Sender: TObject);
var
success: Integer;
crypt: TChilkatCrypt2;
cmsOptions: TChilkatJsonObject;
outputFile: WideString;
inFile: WideString;

begin
success := 0;

crypt := TChilkatCrypt2.Create(Self);

// Tell Chilkat to also validate the timestamp token if a timestamp exists in the CMS message's unauthenticated attributes.
cmsOptions := TChilkatJsonObject.Create(Self);
cmsOptions.UpdateBool('ValidateTimestampTokens',1);
crypt.CmsOptions := cmsOptions.Emit();

outputFile := 'qa_output/original.xml';
inFile := 'qa_data/p7m/fattura_signature.xml.p7m';

// Verify the signature and extract the contained file, which in this case is XML.
success := crypt.VerifyP7M(inFile,outputFile);
if (success = 0) then
  begin
    Memo1.Lines.Add(crypt.LastErrorText);
    Exit;
  end;

Memo1.Lines.Add('Signature validated.');
end;