微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何找到具有公钥的配对 ECDSA 私钥 PKCS11

如何解决如何找到具有公钥的配对 ECDSA 私钥 PKCS11

我有一个应用程序可以处理带有 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));

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

解决方法

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

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。