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

C++ 使用ukey上的密钥/证书对数据进行签名,c++,cryptography,digital-signature,cryptoapi,ocx,C++,Cryptography,Digital Signature,Cryptoapi,Ocx,我想从ukey获得证书,并签署数据。现在我可以得到它,并成功地在一个控制台应用程序。但当我把它作为Internet Explorer的OCX控件时,它就不起作用了 当我使用以下功能时: CryptAcquireContext(&hProvder, NULL, my_provder_name, PROV_RSA_FULL, 0) 它失败,返回nte\u bad\u键集 当我使用CRYPT\u NEWKEYSET或CRYPT\u MACHINE\u KEYSET而不是0时,数据签名失败 如

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

当我使用以下功能时:

CryptAcquireContext(&hProvder, NULL, my_provder_name, PROV_RSA_FULL, 0)
它失败,返回
nte\u bad\u键集

当我使用
CRYPT\u NEWKEYSET
CRYPT\u MACHINE\u KEYSET
而不是
0
时,数据签名失败

如何使用ukey创建签名?

CryptAcquireContext(&hProvder,NULL,我的验证人姓名,验证RSA\U FULL,0)

您希望获得csp,该csp可能有助于对文件进行签名。在桌面应用程序中,您可以将该函数与类似情况的参数一起使用。但在浏览器中,您不能。 我们希望获得与当前用户关联的默认密钥容器。然而,当证书被创建时,它们可能被放置在默认容器之外的密钥容器中,因此默认容器不存在。 为什么? 问题似乎源于第二个参数。 因此,我们必须指定密钥容器的名称作为第二个参数。 这样地:
CryptAcquireContext(&hProvder,容器名称,我的验证者名称,验证RSA完整,0)

欢迎来到StackOverflow!你能链接到你说的“ukey”吗?请注意,您的问题包含的代码量非常少,在问题底部添加更多代码可能会更好地说明您所面临的问题。请始终为您的平台使用至少一个标签(我猜C++,请调整不正确),并使用高度可见的标签(如除了更具体的,如)\。