Hi,
My use case it's my app must sign pdf files with no previous signatures or with previous sigantures (from other applications like Adobe).
And this signed files with syncfusion maybe could be signed with other applictions after my signature with syncfusion.
Think about that like an application to sing contracts with other parties (sometimes they sing before, sometimes they sign after, and with their favorite applications).
I've tested creating 12 files (with combinations of signatures with Syncfusion, Adobe & Xolido) and then validated this files with Syncfusion, Adobe, Xolido & Ascertia (online).
The results are on this table:
| 1st signature |
2nd signature |
filename |
Syncfusion validation |
Adobe Validation |
Xolido validation |
ascertia (online verification) |
| ADOBE |
only one signature |
1AD |
1 valid |
rev1 valid |
1ok |
1 valid |
| ADOBE |
ADOBE |
1AD 2AD |
1 valid, 2 valid |
rev1 valid, cambios varios, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| ADOBE |
SYNCFUSION |
1AD 2SY |
1 valid, 2 valid |
rev1 valid, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| ADOBE |
XOLIDO |
1AD 2XO |
1 INVALID, 2 valid |
rev1 valid, cambios varios, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| SYNCFUSION |
only one signature |
1SY |
1 valid |
rev1 valid |
1ok |
1 valid |
| SYNCFUSION |
ADOBE |
1SY 2AD |
1 INVALID, 2 valid |
rev1 valid, cambios varios, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| SYNCFUSION |
SYNCFUSION |
1SY 2SY |
1 valid, 2 valid |
rev1 valid, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| SYNCFUSION |
XOLIDO |
1SY 2XO |
1 valid, 2 valid |
rev1 error, cambios varios, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| XOLIDO |
only one signature |
1XO |
1 valid |
rev1 valid |
1ok |
1 valid |
| XOLIDO |
ADOBE |
1XO 2AD |
1 INVALID, 2 valid |
rev1 valid, cambios varios, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| XOLIDO |
SYNCFUSION |
1XO 2SY |
1 valid, 2 valid |
rev1 valid, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
| XOLIDO |
XOLIDO |
1XO 2XO |
1 valid, 2 valid |
rev1 valid, rev2 valid |
1ok 2ok |
1 valid, 2 valid |
As you can see, the results are different in three cases (ADXO, SYAD, XOAD)
The validation code is like that:
private void cargaListaFirmas()
{
try
{
lsvFirmas.Items.Clear();
X509CertificateCollection collection = new X509CertificateCollection();
PdfLoadedDocument document = new PdfLoadedDocument(pdfFileName);
if (document.Form != null && document.Form.Fields != null)
foreach (PdfLoadedField field in document.Form.Fields)
{
if (field is PdfLoadedSignatureField)
{
try
{
PdfLoadedSignatureField signatureField = field as PdfLoadedSignatureField;
PdfSignatureValidationResult result = signatureField.ValidateSignature(collection);
SignatureStatus status = result.SignatureStatus;
string subjectName = signatureField.Signature.Certificate.SubjectName;
string issuerName = signatureField.Signature.Certificate.IssuerName;
bool isSignatureValid = result.IsSignatureValid;
string[] subitems = new string[] { subjectName, issuerName,
signatureField.Signature.SignedDate.ToString(),
isSignatureValid.ToString()};
ListViewItem firma = new ListViewItem(subitems, "",
isSignatureValid ? Color.Green : Color.Red, Color.White,
lsvFirmas.Font);
lsvFirmas.Items.Add(firma);
}
catch (Exception excp)
{
// do something
}
}
}
document.Close(true);
}
catch (Exception excp)
{
// do something
return;
}
}
For the cases 1AD2XO, 1SY2AD, 1XO2AD; isSignatureValid is false for the first signature and the reason is {"The document has been altered or corrupted since the signature was applied"}
But the validation with Adobe, Xolido and Ascertia says it's ok.
Attached you can find the 12 files created for test.
Can you help me, please.
Thanks in advance.
Saludos,
Antonio
Attachment:
validation_syncfusion_a3f6a5ac.zip