Jamil,
I think it might make sense to change the bug synopsis since it isn't
really ignoring the provider argument.
Maybe "Use SunJCE Mac in SecretKeyFactory PBKDF2 implementation".
Thanks,
Sean
On 3/13/19 12:56 PM, Adam Petcher wrote:
Looks good. I added myself as a reviewer.
On the subject of PBKDF2With<PRF-We-Don't-Have>: your response makes
sense. I was concerned about a situation in which we parse the algorithm
name (similar to Cipher transforms), but it looks like that doesn't
happen here.
On 3/13/2019 11:48 AM, Jamil Nimeh wrote:
Hi Adam, thanks for the feedback. I have some comments below:
On 3/13/2019 6:44 AM, Adam Petcher wrote:
On 3/12/2019 2:33 PM, Jamil Nimeh wrote:
Hello all,
Please review the CSR for the behavioral change to SunJCE's PBKDF2
implementaion. This change will make the underlying Mac also come
from SunJCE. This change only affects the SunJCE implementation of
PBKDF2, not any other implementation from any different provider.
https://bugs.openjdk.java.net/browse/JDK-8220531
Looks pretty straightforward. I just have a couple of questions
related to compatibility:
1) Is it possible that the requested Mac would not be available in
SunJCE, but it would be available in some other provider? If so, then
PBKDF2 would fail after this change. Should we fall back to the
current behavior if we get a NoSuchAlgorithmException from SunJCE?
JN: It seems unlikely that we would make a SunJCE implementation of a
given PBKDF2With<prf> if we also don't support the PRF portion. At
least up to now we have always supported the PRFs (Hmacs mainly) on
SunJCE as well. It would concern me if we were trying to make a
SecretKeyFactory PBKDF2With<PRF-We-Don't-Have> because, short of a 3rd
party provider that has it, it would never work.
2) Do you (or anyone else on the mailing list) have any reason to be
concerned that the Mac in SunJCE won't work as well in some cases
where it could also come from another (higher-priority) provider? If
so, then we should think about adding a system property or other
toggle for this behavior. This is a question---not a suggestion. I
don't think we should include this toggle unless we have some
motivation to do so.
JN: I'd really prefer to not add yet another property to control
something like this if we don't have to. If you're selecting SunJCE
to do PBKDF2 it seems (to me at least) that you're already willing to
accept that the crypto operations happen in SunJCE software and the
PRF is really the core of that operation. Given that a higher
priority 3rd party provider can hamstring (in admittedly rare cases)
SunJCE's implementation, I'd much rather see SunJCE always work
regardless of 3rd party provider configuration than see the underlying
PRF move to another provider.
Also, if there is no change to any spec, then I think that means the
scope is "Implementation" rather than "SE".
JN: I'll make that change.