public static List readPemBundle()

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);
    }