/** * Updates this {@code MessageDigestSpi} using the given {@code input}. * * @param input * the {@code ByteBuffer}. */ protected internal virtual void engineUpdate(java.nio.ByteBuffer input) { if (!input.hasRemaining()) { return; } byte[] tmp; if (input.hasArray()) { tmp = (byte[])input.array(); int offset = input.arrayOffset(); int position = input.position(); int limit = input.limit(); engineUpdate(tmp, offset + position, limit - position); input.position(limit); } else { tmp = new byte[input.limit() - input.position()]; input.get(tmp); engineUpdate(tmp, 0, tmp.Length); } }