2

我有一家公司提供的安全网身份验证 USB 令牌,他们告诉我他们里面有数字公钥证书。他们给了我一个密码和一个软件,通过它我可以看到它可以检测到里面的证书。现在我需要访问这个令牌的证书,然后我需要使用我的开发代码进行签名、加密和解密。但是公司没有给我任何 sdk,所以我必须通过 C++ Microsoft CryptoAPI 来做所有事情。我在谷歌上搜索,但我不确定我的方向是否正确

此代码没有为我提供 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 令牌访问,但它似乎只适用于智能卡而不是令牌。

我很想完成这项任务,如果您知道任何专家,请指导我或向我展示正确的教程。或者建议我应该为这种任务做些什么..

4

1 回答 1

1

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

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

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

于 2012-11-30T14:52:46.893 回答