Discuss this help topic in SecureBlackbox Forum
Sign document
To sign an OpenXML document using XML digital signature handler you need to
C#:
void SignOpenXML(string sourceFilename, TElX509Certificate certificate)
{
using (TElOfficeDocument Document = new TElOfficeDocument())
{
Document.Open(sourceFilename);
if ((Document.DocumentFormat != TSBOfficeDocumentFormat.OpenXML) || !Document.Signable)
throw new Exception("Cannot sign document using XML signature handler");
TElOfficeOpenXMLSignatureHandler OpenXMLSigHandler = new TElOfficeOpenXMLSignatureHandler();
Document.AddSignature(OpenXMLSigHandler, true);
OpenXMLSigHandler.AddDocument();
OpenXMLSigHandler.Sign(certificate);
}
}
Delphi:
procedure SignOpenXML(const SourceFilename : string; Certificate : TElX509Certificate);
var
Document : TElOfficeDocument;
OpenXMLSigHandler : TElOfficeOpenXMLSignatureHandler;
begin
Document := TElOfficeDocument.Create(nil);
try
Document.Open(SourceFilename);
if (Document.DocumentFormat <> dfOpenXML) or not Document.Signable then
raise Exception.Create('Cannot sign document using XML signature handler');
OpenXMLSigHandler := TElOfficeOpenXMLSignatureHandler.Create(nil);
Document.AddSignature(OpenXMLSigHandler, True);
OpenXMLSigHandler.AddDocument();
OpenXMLSigHandler.Sign(Certificate);
finally
FreeAndNil(Document);
end;
end;