我正在将用户存储中的智能卡证书发送到CmsSigner的构造函数中,以使用智能卡对PKCS加密进行签名。 我得到一个错误说“提供商无法执行操作,因为上下文被获取为无声。”在IIS 7.5中的Web应用程序中。 这是正常工作IIS 6.0与模拟。 我在IIS 7.5中使用了Impersonation但结果是相同的。
这适用于同一台机器上的Windows表单应用程序和相同的e-Tocken。我正在使用Aladin E-token。
ContentInfo contentInfo = new ContentInfo(msg);
SignedCms signedCms = new SignedCms(contentInfo, false);
CmsSigner cmsSigner = new CmsSigner(signerCert);
cmsSigner.SignedAttributes.Add(new Pkcs9SigningTime());
signedCms.ComputeSignature(cmsSigner);
在Google之后我发现了同样的问题Here 。 但是没有回答。
任何帮助将不胜感激。
提前致谢
答案 0 :(得分:4)
当我尝试使用智能卡对数据进行签名时,我遇到了同样的错误,此卡受到了PIN的保护。
而不是
<field name="courseid" type="string" indexed="true" stored="true" required="true" multiValued="false" />
<field name="coursetitle" type="string" indexed="true" stored="true" multiValued="false"/>
<field name="durationinseconds" type="int" indexed="true" stored="true" />
<field name="releasedate" type="date" indexed="true" stored="true"/>
我用过
signedCms.ComputeSignature(cmsSigner);
调用此方法后,会显示PIN的提示窗口。我写了PIN并签名成功。
答案 1 :(得分:0)
我的问题是没有给出适当的权利,因此我将应用程序池的更改身份从ApplicationPoolIdentity更改为IIS服务器中的LocalService帐户,一切正常。