【问题标题】:What is the mechanism of private key for decryption in PKCS11PKCS11中私钥解密的机制是什么
【发布时间】:2017-01-19 07:13:16
【问题描述】:

这是我的代码的一部分

我已经通过 RSACryptoProvider 从另一个应用程序 VB.net 加密了一些文本

但我坚持用 C 解密。

这是我的代码。

static CK_RV usePrivateKeytoDecrypt(CK_SESSION_HANDLE hSession, CK_OBJECT_HANDLE hObject) {
CK_RV rv = CKR_OK;
CK_MECHANISM mechanism = {
    {CKM_RSA_PKCS_OAEP}
};

rv = C_DecryptInit(hSession, &mechanism, hObject);

return rv;

}

代码未完成。我尝试调试并得到错误 CKR_MECHANISM_PARAM_INVALID

请帮忙。谢谢

【问题讨论】:

  • 错误消息正如其名称所暗示的那样:参数(即hObject)无效。怎么回事,我们不知道,因为您没有提供任何相关信息。
  • 粗略检查表明您没有设置机制的pParameterulParameterLen 值来表示CK_RSA_PKCS_OAEP_PARAMS。 OAEP 有选项,这些选项被编码在该结构中。
  • 我也有同样的问题。那么 CKM_RSA_PKCS_OAEP 的正确参数设置是什么?使用 CK_MECHANISM MechEncrypt = { CKM_RSA_PKCS_OAEP, NULL_PTR, 0}; 时出现同样的错误

标签: encryption rsa private-key pkcs#11


【解决方案1】:

这取决于密钥对的算法。

如果密钥对的算法是RSA,则可能是CKM_RSA_PKCS / CKM_RSA_PKCS_OAEP / CKM_RSA_X_509。 p>

如果密钥对的算法是EC,它可能是CKM_ECDSA

如果私钥的属性 CKA_DECRYPT 设置为 true。

您可以在这里参考这个documentation

【讨论】:

    【解决方案2】:

    您没有正确初始化您的机制结构。 CK_MECHANISM 是一个需要定义 3 个参数的结构体:

    typedef struct CK_MECHANISM {
      CK_MECHANISM_TYPE mechanism;
      CK_VOID_PTR       pParameter;
      CK_ULONG          ulParameterLen;  /* in bytes */
    } CK_MECHANISM;
    

    您需要按如下方式初始化您的机制:

    CK_MECHANISM  mechanism = { CKM_RSA_PKCS_OAEP, NULL_PTR, 0 };
    

    如果您将私钥-公钥对生成为 RSA 密钥对(使用 CKM_RSA_PKCS_KEY_PAIR_GEN 机制),例如

    CK_MECHANISM  GenMechanism = { CKM_RSA_PKCS_KEY_PAIR_GEN, NULL_PTR, 0 };
    

    然后你需要初始化你的解密机制如下:

    CK_MECHANISM  mechanism   = { CKM_RSA_PKCS, NULL_PTR, 0};
    

    我假设你已经用你的 hsession 登录并且 hObject 是定位到的用于解密的私钥?

    【讨论】:

      【解决方案3】:

      必须设置机制参数:

      CK_RSA_PKCS_OAEP_PARAMS oaepParams = {CKM_SHA_1, CKG_MGF1_SHA1, 1, NULL_PTR, 0};
      CK_MECHANISM MechEncrypt = {CKM_RSA_PKCS_OAEP, &oaepParams, sizeof(oaepParams)};
      

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2019-08-27
        • 1970-01-01
        • 2011-09-03
        • 2022-10-23
        • 2016-07-17
        • 2010-09-21
        • 2011-11-23
        • 1970-01-01
        相关资源
        最近更新 更多