net.i2p.crypto

## Class CryptixAESEngine

- java.lang.Object
- - net.i2p.crypto.AESEngine
  - - net.i2p.crypto.CryptixAESEngine

-     public class CryptixAESEngine
      extends AESEngine

  Wrapper for AES cypher operation using Cryptix's Rijndael implementation. Implements CBC with a 16 byte IV. Problems: Only supports data of size mod 16 bytes - no inherent padding.
  Author:
    jrandom, thecrypto

- - ### Field Summary

    - ### Fields inherited from class net.i2p.crypto.AESEngine

      `_context, _log`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `CryptixAESEngine(I2PAppContext context)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `decrypt(byte[] payload, int payloadIndex, byte[] out, int outIndex, SessionKey sessionKey, byte[] iv, int length)` Decrypt the data with the session key
    `void` | `decrypt(byte[] payload, int payloadIndex, byte[] out, int outIndex, SessionKey sessionKey, byte[] iv, int ivOffset, int length)` Decrypt the data with the session key.
    `void` | `decryptBlock(byte[] payload, int inIndex, SessionKey sessionKey, byte[] rv, int outIndex)` decrypt exactly 16 bytes of data with the session key provided
    `void` | `encrypt(byte[] payload, int payloadIndex, byte[] out, int outIndex, SessionKey sessionKey, byte[] iv, int length)` Encrypt the payload with the session key
    `void` | `encrypt(byte[] payload, int payloadIndex, byte[] out, int outIndex, SessionKey sessionKey, byte[] iv, int ivOffset, int length)` Encrypt the payload with the session key.
    `void` | `encryptBlock(byte[] payload, int inIndex, SessionKey sessionKey, byte[] out, int outIndex)` encrypt exactly 16 bytes using the session key

    - ### Methods inherited from class net.i2p.crypto.AESEngine

      `safeDecrypt, safeEncrypt`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### CryptixAESEngine

          public CryptixAESEngine(I2PAppContext context)

  - ### Method Detail

    - #### encrypt

          public void encrypt(byte[] payload,
                     int payloadIndex,
                     byte[] out,
                     int outIndex,
                     SessionKey sessionKey,
                     byte[] iv,
                     int length)

      Description copied from class: `AESEngine`
      Encrypt the payload with the session key
      Overrides:
        `encrypt` in class `AESEngine`
      Parameters:
        `length` - must be a multiple of 16
        `payload` - data to be encrypted
        `payloadIndex` - index into the payload to start encrypting
        `out` - where to store the result
        `outIndex` - where in out to start writing
        `sessionKey` - private esession key to encrypt to
        `iv` - IV for CBC

    - #### encrypt

          public void encrypt(byte[] payload,
                     int payloadIndex,
                     byte[] out,
                     int outIndex,
                     SessionKey sessionKey,
                     byte[] iv,
                     int ivOffset,
                     int length)

      Description copied from class: `AESEngine`
      Encrypt the payload with the session key. This just copies payload to out, see extension for the real thing.
      Overrides:
        `encrypt` in class `AESEngine`
      Parameters:
        `length` - must be a multiple of 16
        `payload` - data to be encrypted
        `payloadIndex` - index into the payload to start encrypting
        `out` - where to store the result
        `outIndex` - where in out to start writing
        `sessionKey` - private esession key to encrypt to
        `iv` - IV for CBC

    - #### decrypt

          public void decrypt(byte[] payload,
                     int payloadIndex,
                     byte[] out,
                     int outIndex,
                     SessionKey sessionKey,
                     byte[] iv,
                     int length)

      Description copied from class: `AESEngine`
      Decrypt the data with the session key
      Overrides:
        `decrypt` in class `AESEngine`
      Parameters:
        `payload` - data to be decrypted
        `payloadIndex` - index into the payload to start decrypting
        `out` - where to store the cleartext
        `outIndex` - where in out to start writing
        `sessionKey` - private session key to decrypt to
        `iv` - IV for CBC
        `length` - how much data to decrypt

    - #### decrypt

          public void decrypt(byte[] payload,
                     int payloadIndex,
                     byte[] out,
                     int outIndex,
                     SessionKey sessionKey,
                     byte[] iv,
                     int ivOffset,
                     int length)

      Description copied from class: `AESEngine`
      Decrypt the data with the session key. This just copies payload to out, see extension for the real thing.
      Overrides:
        `decrypt` in class `AESEngine`
      Parameters:
        `payload` - data to be decrypted
        `payloadIndex` - index into the payload to start decrypting
        `out` - where to store the cleartext
        `outIndex` - where in out to start writing
        `sessionKey` - private session key to decrypt to
        `iv` - IV for CBC
        `length` - how much data to decrypt

    - #### encryptBlock

          public final void encryptBlock(byte[] payload,
                          int inIndex,
                          SessionKey sessionKey,
                          byte[] out,
                          int outIndex)

      encrypt exactly 16 bytes using the session key
      Overrides:
        `encryptBlock` in class `AESEngine`
        `sessionKey` - unused

    - #### decryptBlock

          public final void decryptBlock(byte[] payload,
                          int inIndex,
                          SessionKey sessionKey,
                          byte[] rv,
                          int outIndex)

      decrypt exactly 16 bytes of data with the session key provided
      Overrides:
        `decryptBlock` in class `AESEngine`
      Parameters:
        `payload` - encrypted data
        `sessionKey` - private session key