<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body bgcolor="#FFFFFF" text="#000000">
<p>Round 6.</p>
<p>This brings ChaCha20/ChaCha20-Poly1305 into conformance with
Cipher's specification when forms of init that take
AlgorithmParameters or AlgorithmParameterSpec are used.
Previously, a non-null AP or APS object was required. In order to
better conform to the specification, if a null AP or APS is
provided for these ciphers, a random nonce will be generated and
the counter will be set to 1, just as is currently done with valid
forms of init that don't take an AP or APS object (e.g.
Cipher.init(int, Key, SecureRandom) ). Per the spec in Cipher,
this is only true for ENCRYPT_MODE and will throw
InvalidKeyException when done in DECRYPT_MODE.</p>
<p>I also added a few test cases that exercise these code paths in
the ChaCha20Poly1305Parameters.java test case.<br>
</p>
<p><a class="moz-txt-link-freetext" href="http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.06/">http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.06/</a></p>
<p>Thanks,</p>
<p>--Jamil<br>
</p>
<br>
<div class="moz-cite-prefix">On 05/04/2018 07:06 AM, Jamil Nimeh
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:d50c2610-42d9-64f0-8a91-796c2588fcf9@oracle.com">
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<p>Round 5.</p>
<p>This adds Sean's comments. Sean, I was never able to execute a
case on init where a half-baked object would fail. In most
cases it would fail in checks in javax.crypto.Cipher before it
ever made it down to my code. I'm pretty confident the init
sequence is OK. I did move the setting of a few data members
toward the end of the init sequence but setting the key and
nonce is necessary before creating the initial state, which is
then used for generating an authentication key for AEAD mode and
generating keystream.<br>
</p>
<a class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Ejnimeh/reviews/8153028/webrev.04/"
moz-do-not-send="true">http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.05</a><br>
<br>
Also the CSR has been finalized and can be found here:<br>
<a class="moz-txt-link-freetext"
href="https://bugs.openjdk.java.net/browse/JDK-8198925"
moz-do-not-send="true">https://bugs.openjdk.java.net/browse/JDK-8198925</a><br>
<br>
--Jamil<br>
<br>
<div class="moz-cite-prefix">On 04/27/2018 02:21 PM, Jamil Nimeh
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:e1877cbe-c013-d7ab-a4c3-8c1bc6a4edd4@oracle.com">
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8">
<p>Round 4 of updates for ChaCha20 and ChaCha20-Poly1305, minor
stuff mostly:</p>
<ul>
<li>Added words in the description of javax.crypto.Cipher
recommending callers reinitialize the Cipher to use
different nonces after each complete encryption or
decryption (similar language to what exists already for
AES-GCM encryption).</li>
<li>Added an additional test case for ChaCha20NoReuse</li>
<li>Made accessor methods for ChaCha20ParameterSpec final and
cleaned up the code a bit based on comments from the field.</li>
</ul>
<p><a class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Ejnimeh/reviews/8153028/webrev.04/"
moz-do-not-send="true">http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.04/</a></p>
<p>Thanks!</p>
<p>--Jamil<br>
</p>
<br>
<div class="moz-cite-prefix">On 04/13/2018 11:59 AM, Jamil Nimeh
wrote:<br>
</div>
<blockquote type="cite"
cite="mid:4cdfa771-b222-2986-b1fa-2a67a89b9212@oracle.com">Round
3 of updates for ChaCha20 and ChaCha20-Poly1305: <br>
<br>
* Removed the key field in ChaCha20 and Poly1305
implementations and only retain the key bytes as an object
field (thanks Thomas for catching this) <br>
<br>
* Added additional protections against key/nonce reuse. This
is a behavioral change to ChaCha20 and ChaCha20-Poly1305.
Instances of these ciphers will no longer allow you to do
subsequent doUpdate/doFinal calls after the first doFinal
without re-initializing the cipher with either a new key or
nonce. Attempting to reuse the cipher without a new
initialization will throw an IllegalStateException. This is
similar to the behavior of AES-GCM in encrypt mode, but for
ChaCha20 it needs to be done for both encrypt and decrypt. <br>
<br>
<a class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Ejnimeh/reviews/8153028/webrev.03/"
moz-do-not-send="true">http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.03/</a>
<br>
<br>
Thanks, <br>
--Jamil <br>
<br>
On 04/10/2018 03:34 PM, Jamil Nimeh wrote: <br>
<blockquote type="cite">Hello everyone, <br>
<br>
This is a quick update to the previous webrev: <br>
<br>
* When using the form of engineInit that does only takes op,
key and random, the nonce will always be random even if the
random parameter is null. A default instance of
SecureRandom will be used to create the nonce in this case,
instead of all zeroes. <br>
<br>
* Unused debug code was removed from the ChaCha20Cipher.java
file <br>
<br>
* ChaCha20Parameters.engineToString no longer obtains the
line separator from a System property directly. It calls
System.lineSeparator() similar to how other
AlgorithmParameter classes in com.sun.crypto.provider do it.
<br>
<br>
<a class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Ejnimeh/reviews/8153028/webrev.02/"
moz-do-not-send="true">http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.02/</a>
<br>
<br>
Thanks, <br>
<br>
--Jamil <br>
<br>
<br>
On 03/26/2018 12:08 PM, Jamil Nimeh wrote: <br>
<blockquote type="cite">Hello all, <br>
<br>
This is a request for review for the ChaCha20 and
ChaCha20-Poly1305 cipher implementations. Links to the
webrev and the JEP which outlines the characteristics and
behavior of the ciphers are listed below. <br>
<br>
<a class="moz-txt-link-freetext"
href="http://cr.openjdk.java.net/%7Ejnimeh/reviews/8153028/webrev.01/"
moz-do-not-send="true">http://cr.openjdk.java.net/~jnimeh/reviews/8153028/webrev.01/</a>
<br>
<a class="moz-txt-link-freetext"
href="http://openjdk.java.net/jeps/329"
moz-do-not-send="true">http://openjdk.java.net/jeps/329</a>
<br>
<br>
Thanks, <br>
--Jamil <br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</blockquote>
<br>
</body>
</html>