Package net.i2p.crypto
Class CryptixRijndael_Algorithm
java.lang.Object
net.i2p.crypto.CryptixRijndael_Algorithm
Rijndael --pronounced Reindaal-- is a variable block-size (128-, 192- and
256-bit), variable key-size (128-, 192- and 256-bit) symmetric cipher.
Rijndael was written by Vincent Rijmen and Joan Daemen.
Portions of this code are Copyright © 1997, 1998
Systemics Ltd on behalf of the
Cryptix Development Team.
All rights reserved.
- Author:
- Raif S. Naffah, Paulo S. L. M. Barreto License is apparently available from http://www.cryptix.org/docs/license.html
-
Constructor Summary
-
Method Summary
Modifier and TypeMethodDescriptionstatic final void
blockDecrypt
(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey) Convenience method to decrypt exactly one block of plaintext, assuming Rijndael's default block size (128-bit).static final void
blockDecrypt
(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey, int blockSize) Decrypt exactly one block of ciphertext.static final void
blockEncrypt
(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey) Convenience method to encrypt exactly one block of plaintext, assuming Rijndael's default block size (128-bit).static final void
blockEncrypt
(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey, int blockSize) Encrypt exactly one block of plaintext.static final int
static final int
getRounds
(int keySize, int blockSize) Return The number of rounds for a given Rijndael's key and block sizes.static final Object
makeKey
(byte[] k) Convenience method to expand a user-supplied key material into a session key, assuming Rijndael's default block size (128-bit).static final Object
makeKey
(byte[] k, int blockSize) Expand a user-supplied key material into a session key.static final Object
makeKey
(byte[] k, int blockSize, CryptixAESKeyCache.KeyCacheEntry keyData) Expand a user-supplied key material into a session key.
-
Constructor Details
-
CryptixRijndael_Algorithm
public CryptixRijndael_Algorithm()
-
-
Method Details
-
makeKey
Convenience method to expand a user-supplied key material into a session key, assuming Rijndael's default block size (128-bit).- Parameters:
k
- The 128/192/256-bit user-key to use.- Returns:
- an array of two int[][] containing { Ke, Kd }
- Throws:
InvalidKeyException
- If the key is invalid.
-
blockEncrypt
public static final void blockEncrypt(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey) Convenience method to encrypt exactly one block of plaintext, assuming Rijndael's default block size (128-bit).- Parameters:
in
- The plaintext.result
- The resulting ciphertext.inOffset
- Index of in from which to start considering data.sessionKey
- The session key to use for encryption. This is a CryptixAESKeyCache.KeyCacheEntry. We use the Ke field for encryption. The actual parameter type is opaque, changed in 0.9.31, and is subject to change again.
-
blockDecrypt
public static final void blockDecrypt(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey) Convenience method to decrypt exactly one block of plaintext, assuming Rijndael's default block size (128-bit).- Parameters:
in
- The ciphertext.result
- The resulting ciphertextinOffset
- Index of in from which to start considering data.sessionKey
- The session key to use for decryption. This is a CryptixAESKeyCache.KeyCacheEntry. We use the Kd field, for decryption. The actual parameter type is opaque, changed in 0.9.31, and is subject to change again.
-
blockSize
public static final int blockSize()- Returns:
- The default length in bytes of the Algorithm input block.
-
makeKey
Expand a user-supplied key material into a session key.- Parameters:
k
- The 128/192/256-bit user-key to use.blockSize
- The block size in bytes of this Rijndael, must be 16, 24, or 32.- Returns:
- a CryptixAESKeyCache.KeyCacheEntry containing { Ke, Kd }. The actual return type is opaque, changed in 0.9.31, and is subject to change again.
- Throws:
InvalidKeyException
- If the key is invalid.
-
makeKey
public static final Object makeKey(byte[] k, int blockSize, CryptixAESKeyCache.KeyCacheEntry keyData) throws InvalidKeyException Expand a user-supplied key material into a session key. Not for external use, not a public API.- Parameters:
k
- The 128/192/256-bit user-key to use.blockSize
- The block size in bytes of this Rijndael, must be 16, 24, or 32.keyData
- a cached data structure to fill in, or null.- Returns:
- a CryptixAESKeyCache.KeyCacheEntry containing { Ke, Kd }. If keyData is non-null, this is keyData. If keyData is null, this is newly allocated.
- Throws:
InvalidKeyException
- If the key is invalid.
-
blockEncrypt
public static final void blockEncrypt(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey, int blockSize) Encrypt exactly one block of plaintext.- Parameters:
in
- The plaintext.result
- The resulting ciphertext.inOffset
- Index of in from which to start considering data.sessionKey
- The session key to use for encryption. This is a CryptixAESKeyCache.KeyCacheEntry. We use the Ke field for encryption. The actual parameter type is opaque, changed in 0.9.31, and is subject to change again.blockSize
- The block size in bytes of this Rijndael.
-
blockDecrypt
public static final void blockDecrypt(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey, int blockSize) Decrypt exactly one block of ciphertext.- Parameters:
in
- The ciphertext.result
- The resulting ciphertext.inOffset
- Index of in from which to start considering data.sessionKey
- The session key to use for decryption. This is a CryptixAESKeyCache.KeyCacheEntry. We use the Kd field, for decryption. The actual parameter type is opaque, changed in 0.9.31, and is subject to change again.blockSize
- The block size in bytes of this Rijndael.
-
getRounds
public static final int getRounds(int keySize, int blockSize) Return The number of rounds for a given Rijndael's key and block sizes.- Parameters:
keySize
- The size of the user key material in bytes.blockSize
- The desired block size in bytes.- Returns:
- The number of rounds for a given Rijndael's key and block sizes.
-