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