首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何找到给定私钥的首选签名算法

如何找到给定私钥的首选签名算法
EN

Stack Overflow用户
提问于 2022-06-08 20:53:33
回答 1查看 259关注 0票数 0

我正在使用BouncyCastle颁发X509证书。我发现了许多代码示例,其中签名算法名是固定的,比如"SHA256WithRSAEncryption“这里

代码语言:javascript
运行
复制
ContentSigner sigGen = new JcaContentSignerBuilder("SHA256WithRSAEncryption")
        .setProvider(BC).build(privKey);

在BouncyCastle或JDK中是否有为给定的PrivateKey查找首选签名算法名称的方法?就像这里的getPreferredSignatureAlgorithm()

代码语言:javascript
运行
复制
// is there method like this?
String signatureAlgorithm = getPreferredSignatureAlgorithm(issuerPrivKey);

JcaX509v3CertificateBuilder builder = new JcaX509v3CertificateBuilder(...);
ContentSigner signer = new JcaContentSignerBuilder(signatureAlgorithm)
        .build(issuerPrivKey);
X509Certificate certificate = new JcaX509CertificateConverter()
        .setProvider(new BouncyCastleProvider())
        .getCertificate(builder.build(signer));
EN

回答 1

Stack Overflow用户

发布于 2022-06-29 18:38:36

在回答我自己的问题时,我最后只是像这样实现了我自己的方法

代码语言:javascript
运行
复制
private static String signatureAlgorithm(PublicKey pub) {
    switch (pub.getAlgorithm()) {
        case "EC":
            EllipticCurve curve = ((ECPublicKey) pub).getParams().getCurve();
            switch (curve.getField().getFieldSize()) {
                case 224:
                case 256:
                    return "SHA256withECDSA";
                case 384:
                    return "SHA384withECDSA";
                case 521:
                    return "SHA512withECDSA";
                default:
                    throw new IllegalArgumentException("unknown elliptic curve: " + curve);
            }
        case "RSA":
            return "SHA256WithRSAEncryption";
        default:
            throw new UnsupportedOperationException("unsupported private key algorithm: " + pub.getAlgorithm());
    }
}

推荐的EC曲线的消息摘要算法在RFC5480中在第9页(errata)的表格中给出。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72552074

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档