RFR: 8253821: Improve ByteBuffer performance with GCM [v4]
Valerie Peng
valeriep at openjdk.java.net
Mon Nov 16 19:16:17 UTC 2020
On Sat, 14 Nov 2020 00:29:41 GMT, Anthony Scarpino <ascarpino at openjdk.org> wrote:
>> src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java line 777:
>>
>>> 775: if ((src.remaining() + ((ibuffer != null) ? ibuffer.size() : 0) -
>>> 776: tagLenBytes) > dst.remaining()) {
>>> 777: throw new RuntimeException("output buffer too small");
>>
>> Shouldn't this be ShortBufferException instead of RuntimeException?
>
> I thought so too, but that isn't what GCTR returns. All the GCTR checks are RuntimeExceptions. This check was original inside of GCTR, but I had to bring it out because of the ibuffer lengths. I don't mind changing, it's just a strange inconsistency.
GaloisCounterMode is the caller class of GCTR and this API is meant to throw ShortBufferException I think (based on the check at lines below at 820-822)...
>> src/java.base/share/classes/com/sun/crypto/provider/GaloisCounterMode.java line 540:
>>
>>> 538: // remainder offset is based on original buffer length
>>> 539: ibuffer.write(in, inOfs + inLen, remainder);
>>> 540: }
>>
>> I wonder if this can be moved down for better readability, i.e. process data in multiple of blocks, and store the remaining into 'ibuffer'?
>
> I tried to, but I don't like how the variable line up doing the remainder afterwards. I put some hopefully better comments above each section
Ok.
-------------
PR: https://git.openjdk.java.net/jdk/pull/411
More information about the security-dev
mailing list