Я работал с iText и GlobalSign, чтобы делать цифровые подписи и сертификацию файлов PDF в течение последних нескольких месяцев, и столкнулся с одной проблемой.
Когда я просто делаю подпись в pdf, а затем пытаюсь включить LTV, она работает без проблем, но когда я делаю сертификационную подпись, а затем пытаюсь включить LTV, она включает LTV и показывает «В этот документ внесены изменения, которые разрешены удостоверяющей стороной ".
Окончательный вывод после знака и включение LTV:
Я хочу, чтобы после включения LTV с сертификацией в PDF-файле отображалось «Документ не был изменен с момента применения этой подписи».
Я пытался добавить crlbytes в подпись, но это не работает
Код, используемый для добавления подписи в документ:
using (FileStream os = new FileStream(dest, FileMode.CreateNew))
{
PdfReader reader = new PdfReader(src);
IExternalSignatureContainer external = new MyExternalSignatureContainer(sig);
MakeSignature.SignDeferred(reader, fieldname, os, external);
}
Код, используемый для добавления LTV в документ:
using (FileStream fos = new FileStream(dest, FileMode.CreateNew))
{
PdfReader r = new PdfReader(src);
PdfStamper stp = new PdfStamper(r, fos, '\0', true);
LtvVerification v = stp.LtvVerification;
AcroFields fields = stp.AcroFields;
List<String> names = fields.GetSignatureNames();
String sigName = names[names.Count - 1];
PdfPKCS7 pkcs7 = fields.VerifySignature(sigName);
if (pkcs7.IsTsp)
{
v.AddVerification(sigName, ocsp, crl,
LtvVerification.CertificateOption.SIGNING_CERTIFICATE,
LtvVerification.Level.OCSP_CRL,
LtvVerification.CertificateInclusion.YES);
}
else
{
foreach (string name in names)
{
v.AddVerification(name, ocsp, crl,
LtvVerification.CertificateOption.WHOLE_CHAIN,
LtvVerification.Level.OCSP_CRL,
LtvVerification.CertificateInclusion.NO);
}
}
stp.Close();
r.Close();
}
Есть ли способ включить сертифицирующую подпись LTV и иметь сообщение, отображаемое в формате PDF как «Документ не был изменен с момента применения этой подписи»
Отредактировано:
Я тоже попробовал приведенный ниже код, но он не работает
X509Certificate[] mObjX509CertChain = GlobalSignAPI.CreateChain(mStrSigningCertificate, mStrCACertificate);
ICollection<byte[]> crlBytes = new List<byte[]>
{
mObjX509CertChain[0].GetEncoded(),
mObjX509CertChain[1].GetEncoded()
};
byte[] mObjBEncodedPKCS7 = mObjPKCS7.GetEncodedPKCS7(mObjByteHash, mObjTSAClient, mObjByteOC, crlBytes, CryptoStandard.CADES);