On Sat, 14 Nov 2020 00:29:41 GMT, Anthony Scarpino <[email protected]>
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