On Thu, 18 Feb 2021 05:03:58 GMT, Valerie Peng <valer...@openjdk.org> wrote:

>> Weijun Wang has updated the pull request incrementally with one additional 
>> commit since the last revision:
>> 
>>   materials
>
> src/java.base/share/classes/com/sun/crypto/provider/TlsKeyMaterialGenerator.java
>  line 97:
> 
>> 95:         } finally {
>> 96:             Arrays.fill(masterSecret, (byte)0);
>> 97:         }
> 
> It seems that for other Tls* classes, the Arrays.fill(...) call is still 
> inside each method instead of being moved up a level. Just curious why this 
> is done differently?

The `engineGenerateKey0` method is quite long and I don't want to wrap 
everything in a big try-finally block, so I move it a little higher. Now 
`masterSecret` is still created and cleaned in the same method.

> src/java.base/share/classes/com/sun/crypto/provider/TlsKeyMaterialGenerator.java
>  line 186:
> 
>> 184:             serverMacKey = new SecretKeySpec(tmp, "Mac");
>> 185: 
>> 186:             Arrays.fill(tmp, (byte)0);
> 
> It looks like you can use the SecretKeySpec(byte[], int, int, String) to 
> simplify the code at line 175-186. Essentially, the code block does: 
> clientMacKey = new SecretKeySpec(keyBlock, ofs, macLength, "Mac");
> ofs += macLength;
> serverMacKey = new SecretKeySpec(keyBlock, ofs, macLength, "Mac");

Good idea.

> src/java.base/share/classes/com/sun/crypto/provider/TlsKeyMaterialGenerator.java
>  line 220:
> 
>> 218:                     System.arraycopy(keyBlock, ofs, tmp, 0, ivLength);
>> 219:                     ofs += ivLength;
>> 220:                     serverIv = new IvParameterSpec(tmp);
> 
> Seems easier to just use the IvParameterSpec(byte[], int, int) constructor?

Yes.

> src/java.base/share/classes/com/sun/crypto/provider/TlsKeyMaterialGenerator.java
>  line 251:
> 
>> 249:                         clientIv = new IvParameterSpec(tmp);
>> 250:                         System.arraycopy(block, ivLength, tmp, 0, 
>> ivLength);
>> 251:                         serverIv = new IvParameterSpec(tmp);
> 
> Again, consider using IvParameterSpec(byte[], int, int) and get rid of tmp?

Yes.

-------------

PR: https://git.openjdk.java.net/jdk/pull/2070

Reply via email to