RFR: 8318756 Create better internal buffer for AEADs [v2]
Anthony Scarpino
ascarpino at openjdk.org
Fri Dec 1 22:42:49 UTC 2023
On Tue, 28 Nov 2023 08:34:21 GMT, Daniel Jeliński <djelinski at openjdk.org> wrote:
>> The second sentence says what the optimizations is.
>
> well I was under the impression that the bulk of the optimization comes from using modified `engineGetOutputSize` that does not allocate when isUpdate== true and decrypting. That's not documented anywhere.
It used the `engineGetOutputSize` from ChaCha20Cipher before the change. The biggest gain no doing unnecessary copying for direct bytebuffers. For a decrypt op, it would copy the bytebuffer into and array, then copy the array into the internal buffer. I try to minimize that by doing only one copy, bytebuffer -> internal buffer.
>> I don't see a testing issue there, but that's better memory usage. I probably copied this code over from AES/GCM where it's blocksized data and `in` and `out` could have been different sizes. But CC20 can use this optimization because it's a streaming cipher.
>
> I was talking about the second line:
>
> doUpdate(in, 0, in.length, out, out.length);
>
> this tells the doUpdate operation to start writing to `out` at `out.length`; that should have triggered an exception in testing.
Ah yes.. that's a mistake
-------------
PR Review Comment: https://git.openjdk.org/jdk/pull/16487#discussion_r1412631516
PR Review Comment: https://git.openjdk.org/jdk/pull/16487#discussion_r1412493845
More information about the security-dev
mailing list