That's correct. I'll make that change to PBEParameters.java.
Thanks.

On 7 Nov 2012, at 02:51, Valerie (Yu-Ching) Peng wrote:

> Vinnie,
> 
> I noticed the following after you putback, if you agree w/ my comments, 
> please include them in the follow up TBD bug fixes for JEP-121.
> 
> <PBEParameters.java>
> - I believe this class is used solely for the older PBE algorithms? If yes, 
> its engineInit(...) should check that the PBEParameterSpec.getParameterSpec() 
> (line 72) is null and error out if this is not the case. No need for the 
> field "cipherParam" since it should be null.
> 
> Thanks,
> Valerie
> 
> On 11/02/12 11:19, Vincent Ryan wrote:
>> Thanks for all your comments so far. Here's my latest webrev:
>>   http://cr.openjdk.java.net/~vinnie/6383200/webrev.05/
>> 
>> There are 2 TBD's remaining that involve code re-factoring (in 
>> PKCS12PBECipherCore&  PBES2Core)
>> which I'd like to handle separately, later.
>> 
>> Thanks.
>> 
>> 
>> On 27 Oct 2012, at 00:18, Valerie (Yu-Ching) Peng wrote:
>> 
>>> Vinnie,
>>> 
>>> The last mile is the hardest...sorry for the delay.
>>> 
>>> <PBES2Core>
>>> 1. I am not sure about having the ivSpec field. It seems that this can be 
>>> done without since it should be same as what's returned by cipher.getIV() 
>>> since that's what you use for engineGetIV() call.
>>> 2. in getParameters(), since we are generating default value for salt and 
>>> ic, perhaps we should also handle iv as well.
>>> 3. Hmm, I don't quite understand why do we have to require the key must be 
>>> an instance of PBEKey. Well, the current types for PBE keys can be way more 
>>> complex than other cipher algorithms such as AES, so we may want to make 
>>> sure we cover as much usage scenarios as possible. For older PBE 
>>> algorithms, it will take any Key objects with "PBEXXX" algorithm and 
>>> PBEParameterSpec (or the corresponding parameters). For this newer PBE 
>>> algorithms, at a minimum, it needs Key object w/ "PBEXXX" algorithm and 
>>> (new) PBEParameterSpec (or the corresponding parameters). If no parameters 
>>> are supplied and the specified key object is of type PBEKey, then we may 
>>> use the salt and ic count from the PBEKey object as default values.
>>> 4. The engineInit code starting at line171 seems quite complicated. If 
>>> possible, can we consolidate the validity checking on salt, ic, to one 
>>> place? Currently they are separated into many if-then-else blocks. Same 
>>> goes for the part about generating default iv for encryption/wrap mode, 
>>> i.e. line 207-213 + line 244-250, can be done if none are found in the 
>>> supplied values.
>>> 
>>> <PBEKey>
>>> 1. Well, changing this class to implementing the 
>>> javax.crypto.interfaces.PBEKey which contains additional salt, ic info 
>>> which aren't used in hashCode(). equals(..) seem confusing to me. Since PBE 
>>> ciphers can get salt, ic, and iv from the PBEParameterSpec (and its 
>>> corresponding parameters), I feel it's probably simpler to just leave it 
>>> unchanged.
>>> 
>>> Thanks,
>>> Valerie
>>> 
>>> On 10/11/12 05:07, Vincent Ryan wrote:
>>>> Thanks for this latest review. Comments below.
>>>> 
>>>> 
>>>> On 11/10/2012 04:16, Valerie (Yu-Ching) Peng wrote:
>>>>> Hi, Vinnie,
>>>>> 
>>>>> Here are my comments on the latest webrev 04.
>>>>> 
>>>>> <PBEParameterSpec>
>>>>> <PBEWithMD5AndDESCipher>
>>>>> <PBEWithMD5AndTripleDESCipher>
>>>>> <PBES1Core>
>>>>> <PBKDF2Core>
>>>>> <PBEKeyFactory>
>>>>> =>  looks fine.
>>>>> 
>>>>> <PBEParameters.java>
>>>>> =>  Well, the fields contains the new cipherParam field needed for PBES2
>>>>> cipher, but the encoding is still for the older PBES1 cipher.
>>>>> =>  Perhaps it's cleaner to use a separate class for parameters for PBES2
>>>>> cipher. The ASN.1 syntax is defined in PCKS#5v2.1 Appendix A.2 and B.2
>>>> Right. I've overlooked the ASN.1 encoding issue. I'll create a new
>>>> PBES2Parameters class as you suggest.
>>>> 
>>>> 
>>>>> <PKCS12PBECipherCore>
>>>>> =>  fine, although as I previously mentioned that it'll be easier to
>>>>> maintain and understand if we can refactor the code with a
>>>>> non-CipherCore object, so that no special handling needed for RC4. Can
>>>>> we file a separate bug/rfe to keep track of this refactoring?
>>>> I'll file a bug on that.
>>>> 
>>>> 
>>>>> <PBMAC1Core>
>>>>> =>  Well, the HmacPKCS12PBESHA1 class (which you renamed to "PBMAC1Core")
>>>>> implements the PKCS#12 v1 standard and is different from the PBMAC1
>>>>> algorithms defined in PKCS#5 v2.1. So, the new comments at line 39-40
>>>>> aren't correct. The two standards, i.e. PKCS#12 and PKCS#5, aren't
>>>>> consistent and have different ways on how the keys are derived. If you
>>>>> look at PKCS#5v2.1, it explicitly specified that the key shall be
>>>>> derived using PBKDF2 and the impl inside HmacPKCS12PBESHA1 relies on the
>>>>> PKCS12PBECipherCore.derive(...) method for deriving the keys. If the
>>>>> goal is about supporting "PBMAC1" function defined in PKCS#5v2.1, then
>>>>> we need to have separate classes which use PBKDF2.
>>>>> =>  The HmacPKCS12PBESHA1 class is used by PKCS12 keystore class. So, we
>>>>> still need to keep it and can't shift it to the impl defined by
>>>>> PKCS#5v2.1. Currently, PKCS#12 only uses SHA1. Well, but things are
>>>>> confusing as is already...
>>>>> 
>>>> I'll re-instate HmacPKCS12PBESHA1 and define a separate implementation
>>>> class for PBMAC1.
>>>> 
>>>> 
>>>>> <SunJCE>
>>>>> =>  Given the above on PBMAC1Core, the "// PBMAC1" comment on line 678
>>>>> isn't correct.
>>>>> 
>>>>> I am still thinking about the changes on PBEKey and PBES2Core classes,
>>>>> but thought that I should send you above comments first while I sort my
>>>>> thoughts out.
>>>>> 
>>>>> Thanks,
>>>>> Valerie
>>>>> 
>>>>> On 10/04/12 03:50, Vincent Ryan wrote:
>>>>>> I've made further modifications including adding support to
>>>>>> PBEParameterSpec
>>>>>> for an AlgorithmParameterSpec object. This is used to convey parameters
>>>>>> (in addition to salt and iteration count) to the underlying cipher.
>>>>>> 
>>>>>> For example, AES requires an initialization vector so PBE algorithms
>>>>>> that use
>>>>>> AES need a mechanism to supply an IV parameter.
>>>>>> 
>>>>>> The latest webrev is at:
>>>>>>    http://cr.openjdk.java.net/~vinnie/6383200/webrev.04/
>>>>>> 
>>>>>> 
>>>>>> 
>>>>>> On 4 Sep 2012, at 18:04, Vincent Ryan wrote:
>>>>>> 
>>>>>>> Thanks Valerie.
>>>>>>> 
>>>>>>> I'd addressed your comments except the first one.
>>>>>>> 
>>>>>>> Since RC4 is a stream cipher and RC2 is a block cipher they are handled
>>>>>>> slightly differently. It would be possible to re-factor this code to
>>>>>>> simplify it but I'd like to leave that for later as I'm under pressure
>>>>>>> to meet the next promotion date.
>>>>>>> 
>>>>>>> The latest webrev is at:
>>>>>>>  http://cr.openjdk.java.net/~vinnie/6383200/webrev.03/
>>>>>>> 
>>>>>>> 
>>>>>>> 
>>>>>>> On 08/31/12 03:05 AM, Valerie (Yu-Ching) Peng wrote:
>>>>>>>> Vinnie,
>>>>>>>> 
>>>>>>>> <PKCS12PBECipherCore.java>
>>>>>>>> 1. Is it possible to replace the CipherCore object w/ CipherSpi object
>>>>>>>> so to maximize the code re-use? The new code uses CipherSpi object for
>>>>>>>> RC4 and CipherCore for RC2. Perhaps by using CipherSpi for both RC4 and
>>>>>>>> RC2, we can have less code which would be easier to maintain...
>>>>>>>> 
>>>>>>>> <PBEKeyFactory>
>>>>>>>> 1. line 57, change the initial set size to 17 from 4?
>>>>>>>> 
>>>>>>>> <PBES2Core.java>
>>>>>>>> 1. the impls of the two following engineInit() methods are
>>>>>>>> inconsistent,
>>>>>>>> i.e.
>>>>>>>> engineInit(int, Key, AlgorithmParameterSpec, SecureRandom) - expects
>>>>>>>> IvParameterSpec
>>>>>>>> engineInit(int, Key, AlgorithmParameters, SecureRandom) - expects
>>>>>>>> objects created from PBEParameterSpec
>>>>>>>> 2. The impl of engineGetParameters() currently returns objects created
>>>>>>>> from PBEParameterSpec. It should return whatever is expected in the
>>>>>>>> engineInit(...) calls, I'd think.
>>>>>>>> 
>>>>>>>> Will send you the rest of comments later,
>>>>>>>> Valerie
>>>>>>>> 
>>>>>>>> On 08/29/12 08:20, Vincent Ryan wrote:
>>>>>>>>> On 06/ 1/12 07:18 PM, Vincent Ryan wrote:
>>>>>>>>>> Hello Valerie,
>>>>>>>>>> 
>>>>>>>>>> Could you please review these changes for JEP-121:
>>>>>>>>>> http://cr.openjdk.java.net/~vinnie/6383200/webrev.00/
>>>>>>>>>> 
>>>>>>>>>> Thanks.
>>>>>>>>>> 
>>>>>>>>> The latest webrev is now available at:
>>>>>>>>> 
>>>>>>>>> http://cr.openjdk.java.net/~vinnie/6383200/webrev.02/
>>>>>>>>> 
>>>>>>>>> I've incorporated review comments and made some fixes
>>>>>>>>> to the implementation of AES-based PBE algorithms.
>>>>>>>>> 
>>>>>>>>> Thanks.
> 

Reply via email to