RFR: 8343232: PKCS#12 KeyStore support for RFC 9879: Use of Password-Based Message Authentication Code 1 (PBMAC1) [v8]

Mark Powers mpowers at openjdk.org
Mon Sep 29 15:05:26 UTC 2025


On Wed, 24 Sep 2025 19:28:12 GMT, Sean Mullan <mullan at openjdk.org> wrote:

>> Mark Powers has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   fix behavior with keytool
>
> src/java.base/share/classes/sun/security/pkcs12/MacData.java line 94:
> 
>> 92:                 pbeSpec =
>> 93:                         this.digestAlgorithmParams.getParameterSpec(
>> 94:                         PBEParameterSpec.class);
> 
> I think you may already be working on this, so mainly registering this as a comment. This code should be replaced with an internal method that calls `AlgorithmId.getEncodedParams()` and decodes the parameters, reusing much of the code you have already written in `PBMAC1Parameters.engineInit()`. This will avoid having to create an `AlgorithmParameters` implementation as part of this feature, which isn't strictly needed. We can consider adding that on a follow-on Enhancement.

Done.

> src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java line 1953:
> 
>> 1951:     private void processMacData(AlgorithmParameterSpec params,
>> 1952:             MacData macData, char[] password, byte[] data, String macAlgorithm)
>> 1953:             throws  Exception {
> 
> Try just throwing the exceptions that can be thrown by code in this method, rather than `Exception` for everything. I know there is a "try/catch (Exception)" block in `engineLoad` when calling this method, but I think it is cleaner to only declare the exceptions that can be thrown here.

Agreed. I'll fix this.

> src/java.base/share/classes/sun/security/pkcs12/PKCS12KeyStore.java line 2214:
> 
>> 2212:                                 new PBEParameterSpec(salt, ic);
>> 2213:                         processMacData(params, macData, password, authSafeData,
>> 2214:                                 macAlgorithm);
> 
> These 4 lines can be moved below after the if/else block since they are the same for both conditions.

Done.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24429#discussion_r2388311568
PR Review Comment: https://git.openjdk.org/jdk/pull/24429#discussion_r2388312083
PR Review Comment: https://git.openjdk.org/jdk/pull/24429#discussion_r2388312524


More information about the security-dev mailing list