RFR: 8255557: Decouple GCM from CipherCore [v3]
Valerie Peng
valeriep at openjdk.java.net
Tue Jun 1 19:47:45 UTC 2021
On Mon, 24 May 2021 16:37:05 GMT, Anthony Scarpino <ascarpino at openjdk.org> wrote:
>> src/java.base/share/classes/com/sun/crypto/provider/GHASH.java line 189:
>>
>>> 187: ct.position(ct.position());
>>> 188: return processed;
>>> 189: } else if (!ct.isReadOnly()) {
>>
>> Maybe you meant "ct.hasArray()" instead of "!ct.isReadOnly()"?
>
> hasArray() checks both isReadonly() and isDirect(). Since I already did isDirect() in the previous if, I just need to check readonly here
I see.
>> src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java line 259:
>>
>>> 257: @Override
>>> 258: protected void engineInit(int opmode, Key key,
>>> 259: AlgorithmParameterSpec params, SecureRandom random)
>>
>> The specified "random" is not saved to internal "random". Perhaps an oversight?
>
> Yeah, I changed this code long ago, i suspect I didn't realize engineGetParameters() used it
It seems that you still have not saved the specified 'random' into the instance 'random' field? Did I miss something?
>> src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java line 279:
>>
>>> 277: if (iv.length == 0) {
>>> 278: throw new InvalidAlgorithmParameterException("IV is empty");
>>> 279: }
>>
>> Why separating the validation of iv and tag length in separate methods, i.e. engineInit() vs init()? Consider consolidating them?
>
> I think I had a reason for this where I didn't know what the exact error was. I'd rather keep them separate so it throws the right message for the error. It's not a performance critical area.
Ok, it's more for code robustness, not for performance.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4072
More information about the security-dev
mailing list