in src/main/java/org/apache/commons/crypto/stream/CryptoInputStream.java [543:571]
public int read(final ByteBuffer dst) throws IOException {
checkStream();
int remaining = outBuffer.remaining();
if (remaining <= 0) {
// Decrypt more data
// we loop for new data
int nd = 0;
while (nd == 0) {
nd = decryptMore();
}
if (nd < 0) {
return EOS;
}
}
// Copy decrypted data from outBuffer to dst
remaining = outBuffer.remaining();
final int toRead = dst.remaining();
if (toRead <= remaining) {
final int limit = outBuffer.limit();
outBuffer.limit(outBuffer.position() + toRead);
dst.put(outBuffer);
outBuffer.limit(limit);
return toRead;
}
dst.put(outBuffer);
return remaining;
}