in src/main/java/org/jetbrains/nativecerts/NativeTrustedRootsInternalUtils.java [63:86]
public static X509Certificate parseCertificate(byte[] bytes) {
try {
// Try to parse with a standard provider (usually the provider bundled with JRE)
return parseCertificate(bytes, CertificateFactory.getInstance("X.509"));
} catch (Throwable e) {
Logger logger = Logger.getLogger(NativeTrustedRootsInternalUtils.class.getName());
if (logger.isLoggable(Level.FINE)) {
logger.fine(renderExceptionMessage("Unable to parse certificate with a standard X509 parser, falling back to BouncyCastle", e));
}
// If it fails, fallback to explicitly specified BouncyCastle provider
// see, e.g., https://youtrack.jetbrains.com/issue/IDEA-318004
CertificateFactory bcProvider;
try {
bcProvider = CertificateFactory.getInstance("X.509", BouncyCastleLazyProvider.INSTANCE);
} catch (CertificateException ex) {
throw new RuntimeException(ex);
}
return parseCertificate(bytes, bcProvider);
}
}