我想从ukey获取证书,并签署数据。现在我可以得到它,并成功完成了一个控制台应用程序。但是当我将它作为Internet Explorer的OCX控件时,它就无法工作。
当我使用以下功能时:
CryptAcquireContext(&hProvder, NULL, my_provder_name, PROV_RSA_FULL, 0)
失败,返回nte_bad_keyset
。
当我使用CRYPT_NEWKEYSET
或CRYPT_MACHINE_KEYSET
代替0
时,签名数据失败。
如何使用ukey创建签名?
答案 0 :(得分:0)
CryptAcquireContext(&hProvder,NULL,my_provder_name,PROV_RSA_FULL,0);
您想获得对签名文件很有帮助的csp。在桌面应用程序中,可以使用带有这种情况的参数来使用该函数。但是在浏览器中却不能。 我们想要获取与当前用户关联的默认密钥容器。但是,创建证书时,可以将它们放置在默认容器之外的其他密钥容器中,因此默认容器不存在。 为什么? 该问题似乎源于第二个参数。 因此,我们必须指定密钥容器的名称作为第二个参数。 像这样: CryptAcquireContext(&hProvder,container_name,my_provder_name,PROV_RSA_FULL,0);