On Fri, 15 May 2026 22:31:27 GMT, Anthony Scarpino <[email protected]> wrote:
>> Please review the finalized PEM API at https://openjdk.org/jeps/8376991. The >> most significant changes from the second preview, JEP 524 >> (https://openjdk.org/jeps/524), include: >> >> - The `PEM` class is now an ordinary class rather than a record. It adds >> Binary-encoded content constructors and data is defensively copied. >> - The `DEREncodable` interface is renamed to `BinaryEncodable` to more >> accurately reflect the binary data stored in PEM text. >> - In `EncryptedPrivateKeyInfo`, the `encrypt` methods now accept >> `BinaryEncodable`, and the `getKey()` and `getKeyPair()` methods no longer >> include a `Provider` parameter. >> - A new `CryptoException` class indicates failures in cryptographic >> processing at runtime. >> >> thanks >> >> --------- >> - [x] I confirm that I make this contribution in accordance with the >> [OpenJDK Interim AI Policy](https://openjdk.org/legal/ai). > > Anthony Scarpino has updated the pull request incrementally with one > additional commit since the last revision: > > comments src/java.base/share/classes/java/security/PEMDecoder.java line 326: > 324: * @param is {@code InputStream} containing PEM data > 325: * @return a {@code BinaryEncodable} > 326: * @throws IOException if an I/O error occurs or PEM syntax is > invalid “PEMDecoder.decode(InputStream) and decode(InputStream, Class): clarify which errors are reported as IllegalArgumentException vs. IOException when PEM syntax is invalid, since both phrases (‘decoding fails’ and ‘PEM syntax is invalid’) currently overlap.” For example @TestCase @TestedStatement(source = "decode(InputStream, Class)", value = "Throws: IOException - if an I/O error occurs or PEM syntax is invalid") public void decodeWithType_InputStream_invalidSyntax_IOEx() throws IOException { String invalidSyntax = "-----BEGIN PUBLIC KEY-----\n" + "!!!NOT-BASE64!!!\n" + "-----END PUBLIC KEY-----\n"; try (ByteArrayInputStream bais = new ByteArrayInputStream(invalidSyntax.getBytes(ISO_8859_1))) { Assert.assertThrows(() -> PEMDecoder.of().decode(bais, PublicKey.class), IOException.class); } } ------------- PR Review Comment: https://git.openjdk.org/jdk/pull/29640#discussion_r3280403090
