问题描述
我正在 C# 中使用加密服务提供程序 (CSP) 为智能卡工作,我有以下代码:
const int PROV_RSA_FULL = 1;
// looks in the Windows certificate store and fetches the right certificate
X509Certificate2 authCert = GetAuthenticationCertificate();
// Personal CSP is installed on PC
CspParameters cspParams = new CspParameters(PROV_RSA_FULL,"Personal CSP",authCert.Thumbprint);
cspParams.Flags = CspProviderFlags.UseExistingKey;
RSACryptoServiceProvider rsaKey = new RSACryptoServiceProvider(cspParams)
//so Now I'm able to sign and verify,like in Microsoft example code:
byte[] data = new byte[] { 0,1,2,3,4,5,6,7 };
// Sign the data using the Smart Card CryptoGraphic Provider.
byte[] sig = rsaKey.SignData(data,"SHA1");
//Verify the data using the Smart Card CryptoGraphic Provider.
bool verified = rsaKey.VerifyData(data,"SHA1",sig);
CSP 正在通过“个人 CSP”对话框请求智能卡的 PIN,一切正常!
之后我有一个 SOAP 请求,其中需要客户端证书,即“authCert”,此 SOAP 请求需要链接到 CSP 的证书。所以我可以进入 SOAP 请求:
//SOAP client,class created from WSDL
m_soapClient = new SoapServiceClient();
//assign client certificate to soap-client
m_soapClient.ClientCredentials.ClientCertificate.Certificate = authCert;
为此,智能卡需要一个 PIN 对话框,但我没有看到“个人 CSP”PIN 弹出窗口,而是看到了常见的 Windows PIN 对话框。输入PIN后,结果是一条错误信息: “无法为具有权限的 SSL/TLS 建立安全通道 ... url”
所以我不知道在哪里可以为这个 SOAP 请求设置 CSP,以获得正确的 PIN 对话框?
有人可以帮我吗?
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)