RFR: 8255557: Decouple GCM from CipherCore [v5]
Valerie Peng
valeriep at openjdk.java.net
Mon May 24 22:09:51 UTC 2021
On Fri, 21 May 2021 21:18:34 GMT, Anthony Scarpino <ascarpino at openjdk.org> wrote:
>> Hi,
>>
>> I need a review of this rather large change to GCM. GCM will no longer use CipherCore, and AESCrypt to handle it's buffers and other objects. It is also a major code redesign limits the amount of data copies and make some performance-based decisions.
>>
>> Thanks
>>
>> Tony
>
> Anthony Scarpino has updated the pull request incrementally with one additional commit since the last revision:
>
> Review comments update
Here are comments for the test changes.
Thanks,
Valerie
test/jdk/com/sun/crypto/provider/Cipher/AEAD/Encrypt.java line 236:
> 234: HexFormat hex = HexFormat.of().withUpperCase();
> 235: if (!Arrays.equals(output, outputTexts.get(k))) {
> 236: System.out.println("Combination #" + k + 1 + "\nresult " +
nit: Why "+1"? The number should match the exception message, otherwise, very confusing.
test/jdk/com/sun/crypto/provider/Cipher/AEAD/GCMBufferTest.java line 673:
> 671:
> 672: // Test update-update-doFinal with byte arrays and preset data sizes
> 673: t = new GCMBufferTest("AES/GCM/NoPadding",
This change seems un-necessary? Why separating the declaration to line 631?
test/jdk/com/sun/crypto/provider/Cipher/AEAD/GCMShortBuffer.java line 34:
> 32: /*
> 33: * @test
> 34: * @summary Call decrypt doFinal() with different output values to see if the
Missing bug id?
test/jdk/com/sun/crypto/provider/Cipher/AEAD/GCMShortBuffer.java line 56:
> 54: throw e;
> 55: }
> 56: c.doFinal(cipherText, 1, len, pt, 0);
Should check the return value of doFinal() to match the expected output size?
test/jdk/com/sun/crypto/provider/Cipher/AEAD/GCMShortBuffer.java line 78:
> 76: throw e;
> 77: }
> 78: c.doFinal(ByteBuffer.wrap(cipherText, 1, len), out);
Should check the return value of doFinal() to match the expected output size?
test/jdk/com/sun/crypto/provider/Cipher/AES/TestAESCipher.java line 90:
> 88: i++;
> 89: }
> 90: return b;
The generated data seems too similar, all starts with 0 and increment. Maybe use i = len to start with? Or take some additional argument for starting value?
test/jdk/com/sun/crypto/provider/Cipher/AES/TestAESCipher.java line 98:
> 96:
> 97: byte[] iv = makeData(16);
> 98: AlgorithmParameterSpec aps = new GCMParameterSpec(128, new byte[16]);
Use the already generated iv instead of new byte[16]?
test/jdk/com/sun/crypto/provider/Cipher/AES/TestAESCipher.java line 117:
> 115: //int offset = ci.update(plainText, 0, plainText.length, cipherText, 0);
> 116: //ci.doFinal(cipherText, offset);
> 117: ci.doFinal(plainText, 0, plainText.length, cipherText, 0);
This change seems un-necessary? I think it's better to not change it so multi-part enc/dec are tested.
-------------
PR: https://git.openjdk.java.net/jdk/pull/4072
More information about the security-dev
mailing list