独立的PKCS#7 CMS具有强大的私钥保护

时间:2013-03-11 18:36:45

标签: c# cryptography digital-signature

我需要生成一个PKCS#7 / CMS分离签名,我知道我可以通过这种方式轻松完成:

byte[] data = GetBytesFromFile(cheminFichier);

        X509Certificate2 certificate = null;
        X509Store my = new X509Store(StoreName.My,StoreLocation.CurrentUser);
        my.Open(OpenFlags.ReadOnly);
        X509Certificate2Collection certColl = X509Certificate2UI.SelectFromCollection(my.Certificates, "Test" , "Choose a certificate" , X509SelectionFlag.SingleSelection);
        certificate = certColl[0];

        if (certificate == null) throw new Exception("No certificates found.");

        //byte [] pfxFile = certificate.Export(X509ContentType.Pfx);
        //X509Certificate2 certPfx = new X509Certificate2(pfxFile);

        ContentInfo content = new ContentInfo(new Oid("1.2.840.113549.1.7.1"),data);
        SignedCms signedCms = new SignedCms(content, true);

        CmsSigner signer = new CmsSigner(certificate);
        signer.DigestAlgorithm = new Oid("SHA1"); // sha1

        // create the signature
        signedCms.ComputeSignature(signer);
        return signedCms.Encode();

但!此应用程序的用户使用强私钥保护导入其证书。我发现了一些关于这方面的信息,有些人说这种类型的案例在.NET框架中不起作用,这让我感到惊讶。我想知道是否有人有解决方法,或者有解决方案。

基本上我的用户给我一个文件名(PDF或RTF),然后我在My store中搜索他们的证书,我使用与之关联的私钥来生成签名。我想在此时要求用户输入他的私钥密码,这样应用程序就不会收到密码。

0 个答案:

没有答案