java api 从同一个 pem 文件中读取证书和 CRL

java api to read certificate and CRL from same pem file

我的证书和 CRL 在同一个 PEM 文件中,如下所示

-----开始证书-----

-----证书结束-----

-----开始 X509 CRL-----

-----结束 X509 CRL-----

我正在尝试读取如下数据

 try
  { 
    ByteArrayInputStream temp= new ByteArrayInputStream( cacert_file_data );

        while(temp.available()>0 )
        {
            x509_cacert = (java.security.cert.X509Certificate)cf.generateCertificate(temp);

            if (x509_cacert == null) { return ; }   // paranoid

            cert_list.add( x509_cacert );
        }

    }
    catch (CertificateException e)
    {some code}

在 CRL 的情况下它抛出 CertificateException ,有什么方法可以避免这个异常并优雅地读取 CRL,从同一个文件中没有异常。

    ByteArrayInputStream bis= new ByteArrayInputStream( cacert_file_data );
    int count = bis.available();
    int pos = 0;
    String cacert_str;

    try
    {
        while(bis.available()>0 )
        {

            x509_cacert = (java.security.cert.X509Certificate)cf.generateCertificate(bis);

            if (x509_cacert == null) { return ; }   // paranoid

            cert_list.add( x509_cacert );
            pos = count - bis.available();
            byte[] bytes = new byte[bis.available()];
            bis.read(bytes, 0, bis.available());
            bis.reset();
            bis.skip(pos);
            cacert_str = new String( bytes );
            if(!cacert_str.contains("-----BEGIN CERTIFICATE-----"))
            {
               break;
            }
        }
    }