RFR: 8298420: PEM API: Implementation (Preview) [v15]

Sean Mullan mullan at openjdk.org
Tue May 6 18:11:36 UTC 2025


On Fri, 2 May 2025 06:09:52 GMT, Anthony Scarpino <ascarpino at openjdk.org> wrote:

>> Hi all,
>> 
>> I need a code review of the PEM API.  Privacy-Enhanced Mail (PEM) is a format for encoding and decoding cryptographic keys and certificates.  It will be integrated into JDK24 as a Preview Feature.  Preview features does not permanently define the API and it is subject to change in future releases until it is finalized.
>> 
>> Details about this change can be seen at [PEM API JEP](https://bugs.openjdk.org/browse/JDK-8300911).
>> 
>> Thanks
>> 
>> Tony
>
> Anthony Scarpino has updated the pull request with a new target base due to a merge or a rebase. The pull request now contains 66 commits:
> 
>  - major code review comments update
>  - Merge branch 'master' into pem
>  - Merge branch 'master' into pem
>  - javadoc updates
>  - code review comments
>  - merge with master
>  - better comment and remove commented out code
>  - Merge branch 'master' into pem
>  - Merge branch 'pem-merge' into pem
>  - merge
>  - ... and 56 more: https://git.openjdk.org/jdk/compare/e2ae50d8...0c540327

src/java.base/share/classes/sun/security/pkcs/PKCS8Key.java line 79:

> 77: 
> 78:     /* PKCS8 version of the PEM */
> 79:     protected int version;

Do these need to be protected? It doesn't seem like any subclasses need them.

src/java.base/share/classes/sun/security/pkcs/PKCS8Key.java line 193:

> 191:      *
> 192:      * @param encoded the DER-encoded SubjectPublicKeyInfo value
> 193:      * @exception IOException on data format errors

Change to `InvalidKeyException`.

src/java.base/share/classes/sun/security/pkcs/PKCS8Key.java line 243:

> 241:     }
> 242: 
> 243:     public byte[] getPrivKeyMaterial() {

Do we really need this method, esp since it is the private key? I can't find any code that calls this.

src/java.base/share/classes/sun/security/pkcs/PKCS8Key.java line 305:

> 303:             } catch (IOException e) {
> 304:                 // encodedKey is still null
> 305:                 throw new SecurityException(e);

Should return null instead since that is what `getEncoded()` specifies.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/17543#discussion_r2075978714
PR Review Comment: https://git.openjdk.org/jdk/pull/17543#discussion_r2075985424
PR Review Comment: https://git.openjdk.org/jdk/pull/17543#discussion_r2075990253
PR Review Comment: https://git.openjdk.org/jdk/pull/17543#discussion_r2075998393


More information about the security-dev mailing list