尝试生成证书时出现 NPE

NPE when trying to generate a certificate

我在 android

上尝试生成 X509 证书时遇到以下错误

java.lang.NullPointerException: Attempt to invoke virtual method 'java.security.PublicKey java.security.cert.X509Certificate.getPublicKey()' on a null object reference

下面是我用来实现这个的代码:

            AssetFileDescriptor assetFileDescriptor = this.getAssets().openFd("cert.cer");
        FileDescriptor securityCertificate = assetFileDescriptor.getFileDescriptor();

        FileInputStream fin = new FileInputStream(securityCertificate);
        CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
        X509Certificate certificate = (X509Certificate) cf.generateCertificate(fin);

错误似乎发生在 cf.generateCertificate(fin)

通过使用 InputStream 而不是 FileInputStream 设法解决了这个问题,下面的代码对我来说工作正常:

        InputStream inputStream = assetManager.open("cert.cer");
        CertificateFactory cf = CertificateFactory.getInstance("X.509", "BC");
        X509Certificate certificate = (X509Certificate) cf.generateCertificate(inputStream);