2012-11-10 43 views
2

我有一个公司给出的safenet认证usb令牌,他们告诉我他们有数字公钥证书里面。他们给了我一个密码和一个软件,我可以看到它可以检测到内部的证书。现在我需要访问这个令牌的证书,然后我需要使用我的开发代码来使用签名,加密和解密。但该公司没有给我任何SDK,所以我必须通过C++ Microsoft CryptoAPI来做所有事情。我搜索的谷歌,但我不知道如果我在正确的方向如何使用Microsoft加密API与USB加密狗以下PKCS#11

这个代码不给我正确的手柄为USB存储的证书

 // Attempt to acquire a handle to the default key container. 
     bResult = CryptAcquireContext(
        &hProv,   // Variable to hold returned handle. 
        NULL,    // Use default key container. 
        MS_DEF_PROV,  // Use default CSP. 
        PROV_RSA_FULL,  // Type of provider to acquire. 
     0);    

我认为应该给任何默认连接或者证书它的智能卡或令牌。我试过MS_SCARD_PROV,如果它能让我通过USB令牌访问,但它看起来像它只是为智能卡而不是令牌。

我非常渴望完成这项任务,请指导我或如果你的专家知道任何正确的教程。或者建议我应该为这类任务做些什么..

回答

1

您将同时使用PKCS#11和CryptoAPI功能。

PKCS#11将主要用于与硬件令牌进行通话。每个硬件供应商都会为其硬件令牌实施PKCS#11接口。如果你的意思是说,那么safenet就有一个。此外,safenet将有他们的CryptoAPI CSP,您可以使用它与令牌进行对话。

CryptoAPI提供丰富的功能来处理令牌中存在的证书。

+0

感谢raj,所以为了图书馆或有关pkcs#11的接口信息,我必须联系safenet? – wolvorinePk

+0

Safenet将为您提供其令牌的SDK。 Safenet必须在其SDK中使用PKCS#11接口。 PKCS#11是一个通用接口,您必须使用它来编写代码。查看RSA网站以了解有关PKCS#11的更多信息。如果你已经安装了他们的SDK,你会找到可以帮助你入门的示例源代码。 – Raj

+0

感谢raj它帮助了很多... – wolvorinePk