Hi
When I use
PdfSaveOptions.DigitalSignatureDetails = New Words.Saving.PdfDigitalSignatureDetails(MyCertHolder, String.Empty, String.Empty, Date.Now)
PdfSaveOptions.DigitalSignatureDetails.HashAlgorithm = Words.Saving.PdfDigitalSignatureHashAlgorithm.Sha256
My pdf will sign, but if I add timestamping, I will get nullrefexception:
PdfSaveOptions.DigitalSignatureDetails.TimestampSettings = New Words.Saving.PdfDigitalSignatureTimestampSettings("http://timestamp.actalis.com", Nothing, Nothing)
Also tried:
PdfSaveOptions.DigitalSignatureDetails.TimestampSettings.ServerUrl = "http://timestamp.actalis.com"
Now although throw nullrefexception but it will sign and save but without timestamp!
No proper error!
When adding PdfDigitalSignatureTimestampSettings, what are username and password? Never heard of auth for timestamping server, anyway, it should be set to null or empty string?
Thanks.
@australian.dev.nerds Unfortunately, I cannot reproduce the problem on my side. I used the following code for testing:
Document doc = new Document(@"C:\Temp\in.docx");
PdfSaveOptions saveOptions = new PdfSaveOptions();
saveOptions.DigitalSignatureDetails = new PdfDigitalSignatureDetails(GetCertificateHolder(), "Sing please", "Kharkiv", DateTime.Now);
saveOptions.DigitalSignatureDetails.TimestampSettings =
new PdfDigitalSignatureTimestampSettings("https://freetsa.org/tsr", null, null);
doc.Save(@"C:\Temp\out.pdf", saveOptions);
1 Like
Thanks, easy to reproduce:
usage:
Dim MyDocument As Words.Document = New Words.Document("D:\0.txt", New Aspose.Words.Loading.LoadOptions(Words.LoadFormat.Text))
If MyDocument IsNot Nothing Then
MyDocument.Save("D:\0.pdf", psaveOptions)
End If
SaveOptions:
Friend Function psaveOptions() As Words.Saving.PdfSaveOptions
psaveOptions = New Words.Saving.PdfSaveOptions()
psaveOptions.SaveFormat = Words.SaveFormat.Pdf
psaveOptions.AttachmentsEmbeddingMode = Words.Saving.PdfAttachmentsEmbeddingMode.Annotations
psaveOptions.Compliance = Words.Saving.PdfCompliance.Pdf17
psaveOptions.ColorMode = Words.Saving.ColorMode.Normal
psaveOptions.ExportDocumentStructure = True
psaveOptions.ExportGeneratorName = False
psaveOptions.JpegQuality = 85
psaveOptions.MemoryOptimization = False
psaveOptions.DisplayDocTitle = True
psaveOptions.PrettyFormat = False
psaveOptions.TempFolder = Nothing
psaveOptions.UseAntiAliasing = False
psaveOptions.UseHighQualityRendering = False
psaveOptions.OpenHyperlinksInNewWindow = True
Dim MyCertHolder As CertificateHolder = CertificateHolder.Create(File.ReadAllBytes("D:\c.p12"), "pwd")
If MyCertHolder IsNot Nothing Then
psaveOptions.DigitalSignatureDetails = New Words.Saving.PdfDigitalSignatureDetails(MyCertHolder, String.Empty, String.Empty, Date.Now)
psaveOptions.DigitalSignatureDetails.HashAlgorithm = Words.Saving.PdfDigitalSignatureHashAlgorithm.Sha256
psaveOptions.DigitalSignatureDetails.TimestampSettings.ServerUrl = "http://timestamp.digicert.com"
'psaveOptions.DigitalSignatureDetails.TimestampSettings = New Words.Saving.PdfDigitalSignatureTimestampSettings("http://timestamp.digicert.com", Nothing, Nothing)
End If
End Function
@australian.dev.nerds DigitalSignatureDetails.TimestampSettings is not created in your code, so it is expected that DigitalSignatureDetails.TimestampSettings.ServerUrl throws null reference exception.
1 Like
Thanks, is this correct?
psaveOptions.DigitalSignatureDetails = New Words.Saving.PdfDigitalSignatureDetails(MyCertHolder, String.Empty, String.Empty, Date.Now)
psaveOptions.DigitalSignatureDetails.HashAlgorithm = Words.Saving.PdfDigitalSignatureHashAlgorithm.Sha256
Dim s As New Words.Saving.PdfDigitalSignatureTimestampSettings
s.ServerUrl = "http://timestamp.digicert.com"
psaveOptions.DigitalSignatureDetails.TimestampSettings = s
If so, now null exception happens here:
@australian.dev.nerds Thank you for additional information. On my side the problem occurs only when http://timestamp.digicert.com is used. Internally the following exception is thrown:
Org.BouncyCastle.Tsp.TspValidationException : conflicting signing certificate attributes present.
The exception occurs on timestamp response validation. So it looks like it returns incorrect/unexpected response.
If use https://freetsa.org/tsr or http://timestamp.actalis.com the problem does not occur.