RFR: 8258915: Temporary buffer cleanup [v8]

Valerie Peng valeriep at openjdk.java.net
Mon Feb 22 06:41:43 UTC 2021


On Thu, 18 Feb 2021 19:18:26 GMT, Weijun Wang <weijun at openjdk.org> wrote:

>> src/java.base/share/classes/com/sun/crypto/provider/TlsKeyMaterialGenerator.java line 261:
>> 
>>> 259:                     md5.update(clientRandom);
>>> 260:                     md5.update(serverRandom);
>>> 261:                     digest = md5.digest();
>> 
>> In other Tls* sources, you call MessageDigest.reset() but not here? Particular reason?
>
> I usually call it when the last updated bytes are sensitive. They will stay in the buffer.

Ok

>> 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.

Ok

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

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


More information about the security-dev mailing list