【问题标题】:How to verify X509Certificate with EC key using Bouncy Castle如何使用 Bouncy Castle 使用 EC 密钥验证 X509Certificate
【发布时间】:2018-05-07 18:32:00
【问题描述】:

将 Bouncy Castle 添加为提供程序后,以下代码:

    private static boolean isSelfSigned(final X509Certificate cert) {

    try {

        final PublicKey key = cert.getPublicKey();

        cert.verify(key);

        return true;

    } catch (final RuntimeException re) {

        LOG.warn(re, "isSelfSigned: error.");
        return false;
    } catch (final GeneralSecurityException gse) {

        LOG.warn(gse, "isSelfSigned: error.");
        return false;
    }

}

根据 cert 的实现类导致以下两个错误:

java.security.InvalidKeyException: Supplied key (org.bouncycastle.jcajce.provider.asymmetric.ec.BCECPublicKey) is not a RSAPublicKey instance

java.security.InvalidKeyException: Supplied key (sun.security.ec.ECPublicKeyImpl) is not a RSAPublicKey instance

Bouncy Castle 不支持验证 EC 签名证书吗?似乎没有任何参数可以指示密钥不是 RSA。如何使用 Bouncy Castle 验证 EC 签名证书?

【问题讨论】:

    标签: java bouncycastle x509certificate elliptic-curve


    【解决方案1】:

    这是我的一个误解。检查失败,因为证书实际上有一个 EC 密钥,但父证书有一个 RSA 密钥。

    【讨论】:

    • 自签名证书(总是)有 subject = issuer;最好在检查签名之前先检查一下。
    猜你喜欢
    • 2018-02-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-05-24
    • 1970-01-01
    相关资源
    最近更新 更多