【问题标题】:how to find paired ECDSA private key PKCS11 having public key如何找到具有公钥的配对 ECDSA 私钥 PKCS11
【发布时间】:2021-05-04 04:13:16
【问题描述】:

我有一个应用程序可以使用带有 RSA 证书的智能卡 出于某种原因,制造商没有在它们上填写 CKA_LABEL,所以我为 RSA 定义了私钥对象,如下所示:

RsaKeyParameters rsaPubKeyParams = (RsaKeyParameters)pubKeyParams;
                    privKeySearchTemplate.Add(session.Factories.ObjectAttributeFactory.Create(CKA.CKA_KEY_TYPE, CKK.CKK_RSA));
                    privKeySearchTemplate.Add(session.Factories.ObjectAttributeFactory.Create(CKA.CKA_MODULUS, rsaPubKeyParams.Modulus.ToByteArrayUnsigned()));
                    privKeySearchTemplate.Add(session.Factories.ObjectAttributeFactory.Create(CKA.CKA_PUBLIC_EXPONENT, rsaPubKeyParams.Exponent.ToByteArrayUnsigned()));

现在我必须支持具有 ECDSA 证书的智能卡,也没有 CKA_LABEL 所以问题是我怎样才能找到像 RSA 这样的私钥?

注意:所有智能卡都有 2 个随机顺序的证书(身份验证、签名),所以我不能只取第一个或最后一个找到的对象:

ECPublicKeyParameters ecdsaPubKeyParams = (ECPublicKeyParameters)pubKeyParams;
                    privKeySearchTemplate.Add(session.Factories.ObjectAttributeFactory.Create(CKA.CKA_KEY_TYPE, CKK.CKK_ECDSA));

-----需要更多参数来识别所需的私钥

【问题讨论】:

    标签: c# rsa bouncycastle ecdsa pkcs11interop


    【解决方案1】:

    如果是同一条曲线,则不能。 一种解决方法是测试签名/验证,然后如果匹配,则分配 CLA_LABEL 以进行下次优化。

    【讨论】:

      猜你喜欢
      • 2018-07-19
      • 1970-01-01
      • 2017-04-02
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2012-09-10
      • 1970-01-01
      相关资源
      最近更新 更多