RFR: JDK-8338587 - Internal XOF Methods for SHAKE128 and SHAKE256 [v4]

Ferenc Rakoczi duke at openjdk.org
Wed Aug 28 16:54:26 UTC 2024


On Wed, 28 Aug 2024 13:24:04 GMT, Weijun Wang <weijun at openjdk.org> wrote:

>> Ferenc Rakoczi has updated the pull request incrementally with one additional commit since the last revision:
>> 
>>   Code style changes suggested by Andrey Turbanov
>
> src/java.base/share/classes/sun/security/provider/SHA3.java line 74:
> 
>> 72:     private final byte suffix;
>> 73: 
>> 74:     // the stae matrix flattened into an array
> 
> Typo: `stat` should be `state`.

Fixed.

> src/java.base/share/classes/sun/security/provider/SHA3.java line 84:
> 
>> 82:     // calls) will set it to 0 at its start.
>> 83:     // When a squeeze() call uses up all available bytes from this state
>> 84:     // and so a new keccak() call is made, squeezeOffset is reset to 0.
> 
> The paragraph only mentions `set to 0` and `reset to 0`, and has not talked about other values. Maybe you can say when the squeeze call returns, it's set to a position that states before it have been used.

Well, the comment starts with "The byte offset in the state where the next squeeze() will start."

> src/java.base/share/classes/sun/security/provider/SHA3.java line 136:
> 
>> 134:      */
>> 135:     void implDigest(byte[] out, int ofs) {
>> 136:         // Moving this allocation to the block where t is used causes a little
> 
> Typo, `t` should be `it`.

Fixed.

> src/java.base/share/classes/sun/security/provider/SHA3.java line 170:
> 
>> 168: 
>> 169:     void implSqueeze(byte[]output, int offset, int numBytes) {
>> 170:         // Moving this allocation to the block where t is used causes a little
> 
> Typo. `t` should be `it`.

Fixed.

> src/java.base/share/classes/sun/security/provider/SHA3.java line 225:
> 
>> 223:                 ((squeezeOffset + numBytes - longOffset * 8) + 7) / 8;
>> 224: 
>> 225:         int limit = longOffset + longsToConvert - (numBytes % 8 == 0 ? 0 : 1);
> 
> Can we also do the same simplification here as in `implDigest`?
> 
>         int numLongs = numBytes / 8;
>         for (int i = longOffset; i < longOffset + numLongs; i++) {
> 
> After the `if` block above, `squeezeOffset` should be exactly `longOffset * 8`.

Fixed as suggested.

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

PR Review Comment: https://git.openjdk.org/jdk/pull/20631#discussion_r1735008603
PR Review Comment: https://git.openjdk.org/jdk/pull/20631#discussion_r1735008691
PR Review Comment: https://git.openjdk.org/jdk/pull/20631#discussion_r1735008796
PR Review Comment: https://git.openjdk.org/jdk/pull/20631#discussion_r1735008980
PR Review Comment: https://git.openjdk.org/jdk/pull/20631#discussion_r1735009153


More information about the security-dev mailing list