Discuss this help topic in SecureBlackbox Forum

Add XAdES information to XML signature

To add XAdES information into the signature you would need either to call GenerateXAdES() method of one of TElOfficeBinaryXMLSignatureHandler, TElOfficeOpenXMLSignatureHandler, TElOfficeOpenXPSSignatureHandler, or TElOpenOfficeSignatureHandler classes. Alternatively you can create an instance of TElXAdESSigner class, setup its options and assign it to XAdESProcessor property of the handler prior to signing.

The sample code below creates XAdES-BES form and sets SigningTime and SigningCertificates properties:

C#:


Handler.GenerateXAdES(SBXMLAdES.Unit.XAdES_BES, SigningCertificate);
...
Handler.Sign(...);
Delphi:

Handler.GenerateXAdES(XAdES_BES, SigningCertificate);
...
Handler.Sign(...);

the call to GenerateXAdES() method above is equivalent to this code:

C#:


TElXAdESSigner XAdESSigner = new TElXAdESSigner();
Handler.XAdESProcessor = XAdESSigner;
Handler.OwnXAdESProcessor = true;
// set XAdES options, for example:
XAdESSigner.XAdESVersion = SBXMLAdES.Unit.XAdES_v1_3_2;
XAdESSigner.SigningTime = DateTime.UtcNow;
XAdESSigner.SigningCertificates = new TElMemoryCertStorage();
XAdESSigner.OwnSigningCertificates = true;
XAdESSigner.SigningCertificates.Add(certificate);
...
XAdESSigner.Generate(SBXMLAdES.Unit.XAdES_BES);
...
Handler.Sign(...);
Delphi:

XAdESSigner := TElXAdESSigner.Create(nil);
Handler.XAdESProcessor := XAdESSigner;
Handler.OwnXAdESProcessor := true;
// set XAdES options, for example:
XAdESSigner.XAdESVersion := XAdES_v1_3_2;
XAdESSigner.SigningTime := UtcNow;
XAdESSigner.SigningCertificates := TElMemoryCertStorage.Create();
XAdESSigner.OwnSigningCertificates := true;
XAdESSigner.SigningCertificates.Add(Certificate);
...
XAdESSigner.Generate(XAdES_BES);
...
Handler.Sign(...);

To create a signature with timestamp (XAdES-T form) you need to pass an instance of the timestamping client (TElHTTPTSPClient or TElFileTSPClient or other descendant of TElCustomTSPClient class) to GenerateXAdES() method, for example:

C#:


Handler.GenerateXAdES(SBXMLAdES.Unit.XAdES_BES, SigningCertificate, TSPClient);
Delphi:

Handler.GenerateXAdES(XAdES_BES, SigningCertificate, TSPClient);

How To articles about XML-based signature handlers

Discuss this help topic in SecureBlackbox Forum