Thanks Valerie, I fixed with new version, please review it again.
http://cr.openjdk.java.net/~tyan/8048604/webrev.03/ 
<http://cr.openjdk.java.net/~tyan/8048604/webrev.03/>
Tristan

> On Sep 22, 2015, at 4:30 PM, Valerie Peng <valerie.p...@oracle.com> wrote:
> 
> Hi, Tristan,
> 
> The updated webrev addressed most of my previous comments except the few that 
> I noted below:
> 
> <Overall>
> - Can u please make sure that all the Cipher objects are retrieved using 
> "SunJCE" provider? At least the AESPBEWrapper.java, CICOSkipTest.java (there 
> may be more as I didn't check all) didn't     specify a provider when calling 
> Cipher.getInstance().
> 
> <CICO_PBE_SKIP_Test.java>
> - both the proceedSkipTestUsingXXX() methods should check to ensure that 
> "SAVE" number of bytes are read.
> 
> <CICOSkipTest.java>
> - line 217 is redundant
> 
> Thanks,
> Valerie
> 
> On 9/21/2015 10:14 AM, Tristan Yan wrote:
>> 
>> Thank you Valerie. Please review the updated version of it
>> http://cr.openjdk.java.net/~tyan/8048604/webrev.02/ 
>> <http://cr.openjdk.java.net/%7Etyan/8048604/webrev.02/>
>> 
>> Cheers
>> Tristan
>> 
>>> On Sep 16, 2015, at 3:24 PM, Valerie Peng <valerie.p...@oracle.com 
>>> <mailto:valerie.p...@oracle.com>> wrote:
>>> 
>>> 
>>> Can u please make sure that all the Cipher objects are retrieved using 
>>> "SunJCE" provider?
>>> I noticed some inconsistencies here and there.
>>> 
>>> <TextPKCS5PaddingTest.java>
>>> - line 94, 'provider' object should be used here.
>>> - need @library tag to find the TestUtilities class, otherwise, the 
>>> compilation fails.
>>> 
>>> <PbeAlgorithm.java>
>>> - variable "model" should be named "mode".
>>> - nit: rename the class to PBEAlgorithm for consistency.
>>> 
>>> <AbstractPBEWrapper.java>
>>> -  line 98 has a typo, I think u meant "or" instead of "of"
>>> 
>>> <PBKDF2Wrapper.java>
>>> - typo on line51: TANSFORMATION should be TRANSFORMATION
>>> - line 94, why not just init with mode directly as in other Wrapper classes?
>>> 
>>> <CICO_PBE_Test.java>
>>> - line 63, variable name normally starts with lower case. Can u fix it for 
>>> better readability? Same goes for other PBE tests.
>>> 
>>> <CICO_PBE_SKIP_Test.java>
>>> - the test class description is not very readable and contains a few typos. 
>>> Can u please double check?
>>> - typo on lin 132 - decript
>>> - both the proceedSkipTestUsingXXX() methods should check to ensure that 
>>> "SAVE" number of bytes are read.
>>> 
>>> <CICO_PBE_RW_Test.java>
>>> - line 79 doesn't look right at all. The comparison should be made against 
>>> the output written to output stream instead of itself.
>>>  if (!TestUtilities.equalsBlock(plainText, plainText, TEXT_SIZE)) {
>>> That's all.
>>> Valerie
>>> 
>>> On 9/15/2015 8:15 PM, Valerie Peng wrote:
>>>> 
>>>> 
>>>> Most of the tests are DES, DESede, and Blowfish and they are written in a 
>>>> way which won't work with AES due to the larger block size as the block 
>>>> size 8 is dispersed through out the tests instead of as a constant.
>>>> At some point, I think we need to enhance these tests to cover AES instead 
>>>> of the legacy algorithms such as DES, DESede, etc. Can u define a constant 
>>>> for the block size and replace 8 with this constant?
>>>> 
>>>> Some nit - If tests are already placed under CICO directory, their names 
>>>> do not need to contain CICO.
>>>> Also, maybe u can just place the tests under com/sun/crypto/provider/CICO 
>>>> instead of com/sun/crypto/provider/Cipher/CICO.
>>>> 
>>>> <TestUtilities.java>
>>>> - if my reading of the code is right, the equalsBlockSave(byte[] b1, 
>>>> byte[]b2, int bLen, int save) method compares b1 and b2 by chopping up b1 
>>>> into blocks of 'bLen' and b2 into blocks of 'save', and then compare the 
>>>> first 'save' bytes of each block to make sure they are equal. line 59 
>>>> looks incorrect -  the number of blocks should be computed using b1.length 
>>>> instead of b2.length. The term "save" seems confusing too. Maybe "partial" 
>>>> would be more suitable? Or maybe changing "bLen" to "b1Len", and "save" to 
>>>> "b2Len".
>>>> The description on line 50 could use some more words to explain what this 
>>>> method does without reading through the code.
>>>> 
>>>> <CICOChainingTest.java>
>>>> - after line 85, check that there are no further data available after 
>>>> reading "recoveredText".
>>>> 
>>>> <CICODESFuncTest.java>
>>>> - line 63, "is not exist" should be "does not exist" or "not found".
>>>> - the comments on line 67-68 and line 77 seems contradictory to each 
>>>> other. Essentially, NoPadding is tested for all modes vs PKCS5Padding is 
>>>> tested for some modes.
>>>> - the check from line106-110 should be moved up to right after the 
>>>> Cipher.getInstance() calls on line 97 and 98.
>>>> 
>>>> <ReadModel.java>
>>>> - line 74, instead of byte[] plainText, I think it's clearer to just have 
>>>> "int inputLen". The content of the input array is not used in any of the 
>>>> enum values, but rather just the length for output buffer allocation.
>>>> - the variable "ci1" should really be named "ciIn" so that it's clear that 
>>>> this argument is the cipher associated with the CipherInputStream.  
>>>> 
>>>> <CICOSkipTest.java>
>>>> - line 124, "blockLen" should really be "numOfBlocks".
>>>> - Will LengthLimitException ever be thrown for this test? Given that you 
>>>> are only using default key length, I doubt the check on line 163 will be 
>>>> true.
>>>> - line 178-180 seems redundant? I think they can just be removed.
>>>> - line 184, why is the key length check being done here again inside the 
>>>> same method? This one for sure is useless.
>>>> - Instead of 2 constructors with comments indicating what ciphers they are 
>>>> for, it's better to just use static factory method. The implementation 
>>>> isn't that different, they both return a pair of ciphers. U can handle the 
>>>> different parameter type and secret key generation using a switch 
>>>> construct based on the specified algorithm 'algo'.
>>>> - line 217 and 234, 45 should be 'save'
>>>> 
>>>> <TextPKCS5PaddingTest.java>
>>>> - the testPaddingScheme() method doesn't seem too useful as it is testing 
>>>> the PKCS5Padding inside the test class itself. How would this detect any 
>>>> regression in SunJCE provider? I understand that the test may have problem 
>>>> accessing the actual PKCS5Padding class inside the SunJCE provider, but 
>>>> still, copy-n-paste the internal class out into test class is meaningless. 
>>>> This test method and the cut-n-pasted classes should be removed.
>>>> 
>>>> I will send u comments on PBE ones in a separate email.
>>>> Thanks,
>>>> Valerie
>>>> 
>>>> On 8/12/2015 4:06 PM, Tristan Yan wrote:
>>>>> 
>>>>> Please be free review these new tests for strong crypto ciphers.
>>>>> 
>>>>> webrev : http://cr.openjdk.java.net/~tyan/8048604/webrev.01/ 
>>>>> <http://cr.openjdk.java.net/%7Etyan/8048604/webrev.01/>
>>>>> bug    : https://bugs.openjdk.java.net/browse/JDK-8048604 
>>>>> <https://bugs.openjdk.java.net/browse/JDK-8048604>
>>>>> 
>>>>> Thank you very much
>>>>> Tristan
>> 

Reply via email to