in encryption/src/main/java/org/apache/solr/encryption/crypto/EncryptingIndexOutput.java [135:153]
public void writeBytes(byte[] b, int offset, int length) throws IOException {
if (offset < 0 || length < 0 || offset + length > b.length) {
throw new IllegalArgumentException("Invalid write buffer parameters (offset=" + offset + ", length=" + length + ", arrayLength=" + b.length + ")");
}
clearChecksum.update(b, offset, length);
filePointer += length;
while (length > 0) {
int remaining = inBuffer.remaining();
if (length < remaining) {
inBuffer.put(b, offset, length);
break;
} else {
inBuffer.put(b, offset, remaining);
offset += remaining;
length -= remaining;
encryptBufferAndWrite();
}
}
}