Package net.i2p.crypto
Class CryptixRijndael_Algorithm
- java.lang.Object
-
- net.i2p.crypto.CryptixRijndael_Algorithm
-
public final class CryptixRijndael_Algorithm extends Object
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
Constructors Constructor Description CryptixRijndael_Algorithm()
-
Method Summary
All Methods Static Methods Concrete Methods Modifier and Type Method Description static voidblockDecrypt(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 voidblockDecrypt(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey, int blockSize)Decrypt exactly one block of ciphertext.static voidblockEncrypt(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 voidblockEncrypt(byte[] in, byte[] result, int inOffset, int outOffset, Object sessionKey, int blockSize)Encrypt exactly one block of plaintext.static intblockSize()static intgetRounds(int keySize, int blockSize)Return The number of rounds for a given Rijndael's key and block sizes.static ObjectmakeKey(byte[] k)Convenience method to expand a user-supplied key material into a session key, assuming Rijndael's default block size (128-bit).static ObjectmakeKey(byte[] k, int blockSize)Expand a user-supplied key material into a session key.static ObjectmakeKey(byte[] k, int blockSize, CryptixAESKeyCache.KeyCacheEntry keyData)Expand a user-supplied key material into a session key.
-
-
-
Method Detail
-
makeKey
public static final Object makeKey(byte[] k) throws InvalidKeyException
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
public static final Object makeKey(byte[] k, int blockSize) throws InvalidKeyException
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.
-
-