in src/main/java/org/jetbrains/nativecerts/linux/PemReaderUtil.java [21:64]
public static List<X509Certificate> readPemBundle(@NotNull InputStream inputStream, @NotNull String moniker) throws IOException {
List<X509Certificate> result = new ArrayList<>();
try (LineNumberReader reader = new LineNumberReader(new InputStreamReader(inputStream, StandardCharsets.US_ASCII))) {
String line;
while ((line = reader.readLine()) != null) {
String outerTrimmed = line.trim();
if (outerTrimmed.isEmpty()) {
continue;
}
if (outerTrimmed.equals(BEGIN_CERT)) {
StringBuilder base64encoded = new StringBuilder();
while (true) {
line = reader.readLine();
if (line == null) {
throw new IllegalStateException("Non-closed '" + BEGIN_CERT + "' block at line " +
reader.getLineNumber() +
" : " + moniker);
}
String innerTrimmed = line.trim();
if (innerTrimmed.isEmpty()) {
continue;
}
if (innerTrimmed.equals(END_CERT)) {
break;
}
base64encoded.append(line.trim());
}
byte[] derEncoding = Base64.getDecoder().decode(base64encoded.toString());
X509Certificate certificate = NativeTrustedRootsInternalUtils.parseCertificate(derEncoding);
result.add(certificate);
}
// skip all non-certificate lines
}
}
return Collections.unmodifiableList(result);
}