Add Long Term Validation (LTV) data to an existing signature
Add Long Term Validation (LTV) data to an existing signature
Long-term validation refers to the process of verifying the authenticity and integrity of a digitally signed PDF document over an extended period of time. This involves checking the validity of the digital signature, the certificate used to sign the document, and any associated time-stamping or revocation information. Long-term validation is important to ensure that a document remains valid and trustworthy, even if the certificate used to sign it expires or is revoked. This can be accomplished through the use of a trusted third-party validation service or by maintaining a local copy of the certificate’s revocation list.
// Add Long Term Validation (LTV) data to an existing signature
using (FileStream fs = new FileStream("signed_document.pdf", FileMode.Open, FileAccess.Read))
{
Document document = new Document(fs);
SignatureField signatureField = document.Fields["name_of_signature_field"] as SignatureField;
// load the data to fill up the list of certificates, certificate revocation lists, and certificate status protocols
List<byte[]> certificates = new List<byte[]>(new []
{
File.ReadAllBytes("cert_0.dat"),
File.ReadAllBytes("cert_1.dat"),
File.ReadAllBytes("cert_2.dat"),
File.ReadAllBytes("cert_3.dat")
});
List<byte[]> oCSPs = new List<byte[]>(
File.ReadAllBytes("ocsp_1.dat")
);
List<byte[]> cRLs = new List<byte[]>(new []
{
File.ReadAllBytes("CRL_0.dat"),
File.ReadAllBytes("CRL_1.dat"),
File.ReadAllBytes("CRL_2.dat")
});
signatureField.AddValidationInformation(certificates, oCSPs, cRLs); // add the LTV data
using (FileStream outFs = new FileStream("ltv_enabled.pdf", FileMode.Create, FileAccess.Write))
{
document.Write(outFs, DocumentWriteMode.AppendUpdate);
// Note: it is important to use the AppendUpdate mode, otherwise the signature becomes invalid
}
}