## net.i2p.crypto
Class AESInputStream

    java.lang.Object
      java.io.InputStream
          java.io.FilterInputStream
              net.i2p.crypto.AESInputStream

All Implemented Interfaces:
  java.io.Closeable

    public class AESInputStream

extends java.io.FilterInputStream

This reads an underlying stream as written by AESOutputStream - AES256 encrypted in CBC mode with PKCS#5 padding, with the padding on each and every block of 16 bytes. This minimizes the overhead when communication is intermittent, rather than when streams of large sets of data are sent (in which case, the padding would be on a larger size - say, 1k, though in the worst case that would have 1023 bytes of padding, while in the worst case here, we only have 15 bytes of padding). So we have an expansion factor of 6.25%. c'est la vie

Field Summary

Fields inherited from class java.io.FilterInputStream
`in`

Constructor Summary
`AESInputStream(I2PAppContext context, java.io.InputStream source, SessionKey key, byte[] iv)`

Method Summary
`int` `available()`
`void` `close()`
`static void` `main(java.lang.String[] args)` Test AESOutputStream/AESInputStream
`void` `mark(int readLimit)`
`boolean` `markSupported()`
`int` `read()`
`int` `read(byte[] dest)`
`int` `read(byte[] dest, int off, int len)`
`(package private) int` `readyBytes()`
`(package private) int` `remainingBytes()`
`void` `reset()`
`long` `skip(long numBytes)`

Methods inherited from class java.lang.Object
`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

Constructor Detail

### AESInputStream

    public AESInputStream(I2PAppContext context,
                          java.io.InputStream source,
                          SessionKey key,
                          byte[] iv)

Method Detail

### read

    public int read()
             throws java.io.IOException

  Overrides:
    `read` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### read

    public int read(byte[] dest)
             throws java.io.IOException

  Overrides:
    `read` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### read

    public int read(byte[] dest,
                    int off,
                    int len)
             throws java.io.IOException

  Overrides:
    `read` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### skip

    public long skip(long numBytes)
              throws java.io.IOException

  Overrides:
    `skip` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### available

    public int available()
                  throws java.io.IOException

  Overrides:
    `available` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### close

    public void close()
               throws java.io.IOException

  Specified by:
    `close` in interface `java.io.Closeable`
  Overrides:
    `close` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### mark

    public void mark(int readLimit)

  Overrides:
    `mark` in class `java.io.FilterInputStream`

### reset

    public void reset()
               throws java.io.IOException

  Overrides:
    `reset` in class `java.io.FilterInputStream`
  Throws:
    `java.io.IOException`

### markSupported

    public boolean markSupported()

  Overrides:
    `markSupported` in class `java.io.FilterInputStream`

### remainingBytes

    int remainingBytes()

### readyBytes

    int readyBytes()

### main

    public static void main(java.lang.String[] args)

  Test AESOutputStream/AESInputStream