使用ukey上的密钥/证书对数据进行签名

时间:2018-06-11 10:01:24

标签: c++ cryptography digital-signature cryptoapi ocx

我想从ukey获取证书,并签署数据。现在我可以得到它,并成功完成了一个控制台应用程序。但是当我将它作为Internet Explorer的OCX控件时,它就无法工作。

当我使用以下功能时:

CryptAcquireContext(&hProvder, NULL, my_provder_name, PROV_RSA_FULL, 0)

失败,返回nte_bad_keyset

当我使用CRYPT_NEWKEYSETCRYPT_MACHINE_KEYSET代替0时,签名数据失败。

如何使用ukey创建签名?

1 个答案:

答案 0 :(得分:0)

CryptAcquireContext(&hProvder,NULL,my_provder_name,PROV_RSA_FULL,0);

您想获得对签名文件很有帮助的csp。在桌面应用程序中,可以使用带有这种情况的参数来使用该函数。但是在浏览器中却不能。 我们想要获取与当前用户关联的默认密钥容器。但是,创建证书时,可以将它们放置在默认容器之外的其他密钥容器中,因此默认容器不存在。 为什么? 该问题似乎源于第二个参数。 因此,我们必须指定密钥容器的名称作为第二个参数。 像这样: CryptAcquireContext(&hProvder,container_name,my_provder_name,PROV_RSA_FULL,0);