RFR: JDK-8209129 :Further improvements to cipher buffer management

Ivan Gerasimov ivan.gerasimov at oracle.com
Wed Aug 22 18:22:49 UTC 2018


Hi Seán!

Just a minor comment.

I don't know if it's even measurable in this context, but I was under 
impression that filling memory with zero *bytes* might be a slightly 
more efficient then filling with any other constant.

Maybe it is better to use Arrays.fill(passwd, '\0') instead of 
Arrays.fill(passwd, '0') to give the JVM a chance to optimize filling if 
it's possible?

With kind regards,

Ivan


On 8/22/18 9:25 AM, Seán Coffey wrote:
> Thanks for reviewing. comments inline..
>
> On 22/08/18 15:50, Weijun Wang wrote:
>> PBES2Core.java:
>>
>>   181         byte[] passwdBytes = key.getEncoded();
>>   182         char[] passwdChars = null;
>>   183         PBEKeySpec pbeSpec;
>>   184         try {
>>   185             if ((passwdBytes == null) ||
>>   186 !(key.getAlgorithm().regionMatches(true, 0, "PBE", 0, 3))) {
>>   187                 throw new InvalidKeyException("Missing password");
>>   188             }
>>   ....
>>   272         } finally {
>>   273             if (passwdChars != null) Arrays.fill(passwdChars, ' 
>> ');
>>   274             Arrays.fill(passwdBytes, (byte)0x00);
>>   275         }
>>
>> If passwdBytes == null, line 274 would throw an NPE.
> Good catch. Corrected.
>>
>> PBKDF2KeyImpl.java:
>>
>>    87         char[] passwd = keySpec.getPassword();
>>    88         if (passwd == null) {
>>    89             // Should allow an empty password.
>>    90             this.passwd = new char[0];
>>    91         } else {
>>    92             this.passwd = passwd.clone();
>>    93         }
>>    94         // Convert the password from char[] to byte[]
>>    95         byte[] passwdBytes = getPasswordBytes(this.passwd);
>>
>>    96         // remove local copy
>>    97         Arrays.fill(passwd, '0');
>>
>> If passwd == null, line 97 would throw an NPE.
> Another good catch!
>
> updated webrev : 
> http://cr.openjdk.java.net/~coffeys/webrev.8209129.v3/webrev/
>
> regards,
> Sean.
>
>>
>> Otherwise fine.
>>
>> Thanks
>> Max
>>
>>
>>> On Aug 17, 2018, at 12:53 AM, Seán Coffey <sean.coffey at oracle.com> 
>>> wrote:
>>>
>>> Find new webrev here Max :
>>>
>>> http://cr.openjdk.java.net/~coffeys/webrev.8209129.v2/webrev/
>>>
>>> regards :
>>>
>
>

-- 
With kind regards,
Ivan Gerasimov




More information about the security-dev mailing list