class AesCtrDrbg implements Drbg {

  @Override
  public void nextBytes(byte[] bytes) {
    if (bytes.length <= UPDATE_LIMIT) {
      nextBytesBounded(new byte[bytes.length], bytes);
    } else {
      int offset = 0;
      byte[] temp = new byte[UPDATE_LIMIT];
      byte[] zeroes = new byte[temp.length];
      while (bytes.length - offset > UPDATE_LIMIT) {
        nextBytesBounded(zeroes, temp);
        System.arraycopy(temp, 0, bytes, offset, temp.length);
        offset += UPDATE_LIMIT;
      }
      temp = new byte[bytes.length - offset];
      zeroes = new byte[bytes.length - offset];
      nextBytesBounded(zeroes, temp);
      System.arraycopy(temp, 0, bytes, offset, temp.length);
    }
  }

  public  AesCtrDrbg();
  public  AesCtrDrbg(byte[] seed);

}