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

Reply via email to