После сертификационной подписи LTV в PDF-файле отображается «Документ изменен» - PullRequest
0 голосов
/ 14 мая 2018

Я работал с iText и GlobalSign, чтобы делать цифровые подписи и сертификацию файлов PDF в течение последних нескольких месяцев, и столкнулся с одной проблемой.

Когда я просто делаю подпись в pdf, а затем пытаюсь включить LTV, она работает без проблем, но когда я делаю сертификационную подпись, а затем пытаюсь включить LTV, она включает LTV и показывает «В этот документ внесены изменения, которые разрешены удостоверяющей стороной ".

Окончательный вывод после знака и включение LTV:

Final Output after sign and ltv enabling

Я хочу, чтобы после включения 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);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...