@Override
public void write(final byte[] b, final int off, final int len) throws IOException {
try {
for(int chunkOffset = off; chunkOffset < len; chunkOffset += chunksize) {
int chunkLen = Math.min(chunksize, len - chunkOffset);
final ByteBuffer encryptedChunk = cryptor.fileContentCryptor().encryptChunk(
ByteBuffer.wrap(Arrays.copyOfRange(b, chunkOffset, chunkOffset + chunkLen)),
chunkIndexOffset++, header, nonces.next());
super.write(encryptedChunk.array());
}
}
catch(CryptoException e) {
throw new IOException(e.getMessage(), new CryptoAuthenticationException(e.getMessage(), e));
}
}
}