我有一个应用程序,上面有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一样的私钥?
注意:所有智能卡都有两个随机顺序的证书(auth,sign),所以我不能只获取找到的第一个或最后一个对象:
ECPublicKeyParameters ecdsaPubKeyParams = (ECPublicKeyParameters)pubKeyParams;
privKeySearchTemplate.Add(session.Factories.ObjectAttributeFactory.Create(CKA.CKA_KEY_TYPE, CKK.CKK_ECDSA));-需要更多的参数来识别所需的私钥
发布于 2021-08-02 10:15:56
如果是同一条曲线,就不能。解决方法是测试签名/验证,如果匹配,则分配CLA_LABEL以供下次优化。
https://stackoverflow.com/questions/67378707
复制相似问题