如何修复 X509Certificate 中的空 getPublicKey

How to fix empty getPublicKey in X509Certificate

我创建了一个 java 方法,它等于 X509Certificate#certificate.getPublicKey().getAlgorithm()
用我的字符串。但是当我调用 getPublicKey() 时我有错误,它是 null 并且我有 ArrayIndexOutOfBoundsException。如何解决这个问题。条件 (getPublicKey != null) 对我不起作用。

    public boolean supports(X509Certificate certificate) {
            try {
                final String algorithm = certificate.getPublicKey().getAlgorithm();
                if ("RSA".equals(algorithm)) {
                    return certificate.getSignature().length * 8 == keySize;
                }
            } catch (ArrayIndexOutOfBoundsException ex) {
                log.warn(" can't get the public key from certificate ", ex);
            }
        return false;
    }
}

也许使用一些条件?

我希望我的应用程序不会崩溃。

我用这个条件修复了它

boolean[] withKeys = certificate.getKeyUsage();
if (withKeys != null && withKeys[5]) 

您还可以检查您的 public 密钥是否可用

java.security.cert.X509Certificate#getKeyUsage()