On Thu, 17 Apr 2025 23:52:56 GMT, Valerie Peng <valer...@openjdk.org> wrote:

>> Martin Balao has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   Inform key sizes in the exception when failing check.
>
> src/jdk.crypto.cryptoki/share/classes/sun/security/pkcs11/P11HKDF.java line 
> 252:
> 
>> 250:             throw new InvalidAlgorithmParameterException("A key of 
>> algorithm " +
>> 251:                     "'" + alg + "' is not valid for derivation.");
>> 252:         }
> 
> So, essentially, we only allow HKDF to derive keys when ki is either 
> `TLSKeyInfo` or `KeyInfo` w/ the key types in `canDeriveKeyInfoType(long)` 
> method? Are you checking each key algorithm just to rule out `RC2` and 
> `IDEA`? Not sure if it's worth the extra checking. Besides, if more `CKK_xxx` 
> is added to `KeyInfo`, it'd need to be added to `canDeriveKeyInfoType(long)` 
> which can be easily missed.

That's right: only `TLSKeyInfo` and selected `KeyInfo` keys allowed for HKDF 
derivation. If something is added to the map, it's not implicitly allowed. Same 
is true for `P11SecretKeyFactory::createKey` (`C_CreateObject`). Even 
`P11KeyGenerator` may need adjustments depending on the key type. I think that 
adding something should require to think what's the impact on different 
services, and not rely on a default/implicit behavior. I don't expect new 
symmetric key updates to be that frequent, though. If this becomes a problem, 
we can implement what @franferrax suggested and move the "uses" information to 
the map.

I was not thinking of `RC2` or `IDEA` but of key algorithms that are not the 
result of a HKDF derivation and did not go through the checks that we would 
enforce otherwise. For example, a key of algorithm 
`PBEWithHmacSHA512AndAES_256` should be the result of a PBE derivation and 
should have a specific key size. It would be inconsistent to obtain a key of 
this algorithm with a different size through a HKDF derivation. When we check 
or convert keys to be used in services, we rely on this information.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/24526#discussion_r2051070244

Reply via email to