【问题标题】:Smartcard Digital Signature - Document has been altered or corrupted since it was signed智能卡数字签名 - 文档自签名以来已被更改或损坏
【发布时间】:2020-02-21 17:59:24
【问题描述】:

我看到一个关于签名数据被哈希两次的 C# 问题的类似回复,但不知道为什么我的签名数据在这里。

C# PKCS7 Smartchard Digital Signature corrupted

       String provider = sdk.getProviderName();
        List certList = new ArrayList();
        certList.add(signerCert);
        Store certs = new JcaCertStore(certList);
        CMSSignedDataGenerator cmsSignedDataGenerator = new CMSSignedDataGenerator();
        DigestCalculatorProvider digProvider = new JcaDigestCalculatorProviderBuilder().setProvider(provider).build();
        JcaSignerInfoGeneratorBuilder signerInfoGeneratorBuilder = new JcaSignerInfoGeneratorBuilder(digProvider);
        ContentSigner sha256Signer = new JcaContentSignerBuilder("SHA256withRSA").setProvider(provider).build(signerKey);
        cmsSignedDataGenerator.addSignerInfoGenerator(signerInfoGeneratorBuilder.build(sha256Signer, signerCert));
        cmsSignedDataGenerator.addCertificates(certs);
        CMSTypedData msg = new CMSProcessableByteArray(digest); 
        CMSSignedData cmsSignedData = cmsSignedDataGenerator.generate(msg);
        Map hashes = new HashMap();
        hashes.put(CMSAlgorithm.SHA256, digest);
        CMSSignedData finalCMSSignedData = new CMSSignedData(hashes, cmsSignedData.getEncoded());

        return finalCMSSignedData.getEncoded();`

【问题讨论】:

  • 您的代码未显示您最初散列的内容或您如何将 CMS 容器嵌入到您的 pdf 中。
  • 我们是在谈论分离签名(.pkcs7 签名文件旁边的 .pdf 文件)还是 PDF 集成签名 - 嵌入在 PDF 中可见或不可见(因为它可以使用创建以 Acrobat 为例)?

标签: pdf digital-signature bouncycastle


【解决方案1】:

事实证明,数据被双重消化。如果我们传递原始数据与摘要,则写入的签名是有效且不变的

【讨论】:

    猜你喜欢
    • 2018-12-04
    • 2023-04-03
    • 2021-06-20
    • 2016-09-16
    • 1970-01-01
    • 2021-05-11
    • 2021-11-06
    • 2021-02-22
    • 1970-01-01
    相关资源
    最近更新 更多