相关疑难解决方法(0)

"不支持LTV"是什么意思?

我正在使用iText 5.5.3对PDF文档进行签名和加时间戳.它工作得很好.但我最近从Acrobat Pro X切换到XI,现在我看到了这个新行:

the signature is not LTV enabled and will expire after <date>
Run Code Online (Sandbox Code Playgroud)

我想这会警告我,在此日期之后,签名者的签名将被视为无效,对吧?但是签名属性告诉我:

the signature includes an embedded timestamp : <date/time>
signature was validated as of the secure timestamp time : <same date/time>
Run Code Online (Sandbox Code Playgroud)

现在我有点困惑:由于签名在已知且经过认证的日期被宣布有效,为什么它将来会变得无效?

pdf cryptography itext digital-signature

9
推荐指数
1
解决办法
7159
查看次数

iText7 LtvVerification.addVerification 未启用 LTV

我们正在尝试启用已签名的签名 LTV。我正在使用下面的代码来添加验证。当signature.isTsp()为假时,PDF显示Signature is not LTV enabled,但在其他情况下(signature.isTsp()为真)它显示为有效。当我们打开 PDF 并尝试通过右键单击签名来手动添加验证信息时,它会毫无问题地启用 LTV。不确定我们在这里缺少什么。任何输入都会非常有帮助。

// Adds LTV-enabled information to the PDF document.
private ByteArrayOutputStream addLtv(final IOcspClient ocspClient,
                                     final ByteArrayOutputStream docStream)
        throws IOException, GeneralSecurityException {
    final ByteArrayOutputStream outputStream = new ByteArrayOutputStream();
    final InputStream signedStream = new ByteArrayInputStream(docStream.toByteArray());
    final PdfReader reader = new PdfReader(signedStream);
    final PdfDocument document =
            new PdfDocument(reader, new PdfWriter(outputStream), new StampingProperties().useAppendMode());
    final LtvVerification verification = new LtvVerification(document);
    final SignatureUtil signatureUtil = new SignatureUtil(document);

    final List<String> signatureNames = signatureUtil.getSignatureNames();
    final String sigName = …
Run Code Online (Sandbox Code Playgroud)

java pdf digital-signature itext7

3
推荐指数
1
解决办法
2037
查看次数

我想使用 ITextSharp 签署 pdf 文档并返回 ltv pdf 启用文件

该方法接收 pdf 文档作为应签名的字节数组、要签名的证书和 TSA 客户端,并以字节数组形式返回签名文档,如果出现错误,则返回 null。现在它返回签名的 pdf 文档,但未启用 LTV。签署的文档必须启用 LTV。如何使退回的文档启用 LTV?我将非常感谢任何建议。

public byte[] Sign(byte[] document, X509Certificate2 certificate, ITSAClient tsaClient)
    {
    byte[] signedDocument = null;

    IExternalSignature signature = new X509Certificate2Signature(certificate, "SHA-1");
    Org.BouncyCastle.X509.X509CertificateParser cp = new Org.BouncyCastle.X509.X509CertificateParser();
    Org.BouncyCastle.X509.X509Certificate[] chain = new Org.BouncyCastle.X509.X509Certificate[] { cp.ReadCertificate(certificate.RawData) };

    PdfReader reader = new PdfReader(document);
    MemoryStream ms = new MemoryStream();
    PdfStamper st = PdfStamper.CreateSignature(reader, ms, '\0');

    PdfSignatureAppearance sap = st.SignatureAppearance;
    sap.CertificationLevel = PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED;
    sap.SignatureCreator = "NAME";
    sap.Reason = "REASON";
    sap.Contact = "CONTACT";
    sap.Location = "LOCATION";
    sap.SignDate = …
Run Code Online (Sandbox Code Playgroud)

c# pdf itext

1
推荐指数
1
解决办法
3551
查看次数

如何为时间戳签名启用LTV并设置不允许更改pdf?

我正在使用数字证书签署 pdf iText。现在我可以签名并添加 LTV,但证书级别可以是:

signatureAppearance.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_FORM_FILLING_AND_ANNOTATIONS);
Run Code Online (Sandbox Code Playgroud)

我只想设置PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED. 最终结果应如下所示:

在此输入图像描述

sap.setCertificationLevel(PdfSignatureAppearance.CERTIFIED_NO_CHANGES_ALLOWED);
MakeSignature.signDetached(signatureAppearance, privateKey, "SHA-512", chain, null, ocspClient, tsaClient, 0, MakeSignature.CryptoStandard.CADES);
Run Code Online (Sandbox Code Playgroud)

如果我使用上面的代码进行签名,那么使用AdobeLtvEnabling.java添加LTV在使用ACROBAT检查时会提示签名无效,因为添加LTV时该文件正在修改不可修改的PDF文件。那么,我该怎么做才能达到最终的效果呢?

java certificate itext digital-signature

1
推荐指数
1
解决办法
3183
查看次数

标签 统计

digital-signature ×3

itext ×3

pdf ×3

java ×2

c# ×1

certificate ×1

cryptography ×1

itext7 ×1