|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.rim.device.api.crypto.TripleDESCryptoToken
public abstract class TripleDESCryptoToken
Represents a Triple DES crypto token.
The TripleDES algorithm proposed by NIST utilizes the standard DES algorithm in an alternating encryption then decryption operation. That is, EDE (Encryption/Decryption/Encryption) performing three DES operations and hence its name. This cipher is also commonly referred to as the DESede cipher.
Our implementation provides two types of TripleDES. Namely, two key and three key TripleDES. That is, two key TripleDES uses two different keys -- one for the encryption operations and one for the decryption operation. Three key TripleDES uses a different key for each operation.
The key length is 128 bits or 192 bits depending on whether you are using two key or three key TripleDES. Note that the effective key length is actually 112 bits or 168 bits after removing the parity bits from the DES operations. The block size is 64 bits.
If possible, three key TripleDES should be used instead of two key TripleDES due to the larger keysize and specific attacks against two key TripleDES.
Please refer to FIPS 46-3 for more information.
Details on implementing for smart cards.
Note: This class must be extended in order to override the default implementation.
Note: It is considered good practice to implement the equals and hashCode methods when extending this class. Otherwise, odd behaviour can occur.
Constructor Summary | ||
---|---|---|
|
protected |
TripleDESCryptoToken()
Creates a new TripleDESCryptoToken object. |
Method Summary | ||
---|---|---|
|
CryptoTokenSymmetricKeyData |
createKey()
Creates a new key. |
|
void |
decrypt(CryptoTokenCipherContext context,
byte[] ciphertext,
int ciphertextOffset,
byte[] plaintext,
int plaintextOffset)
Decrypts data given an array of plaintext and a context. |
|
void |
decryptCBC(CryptoTokenCipherContext context,
byte[] ciphertext,
int ciphertextOffset,
byte[] plaintext,
int plaintextOffset,
int numBlocks,
byte[] iv)
Decrypts an array of ciphertext using the crypto token applying CBC mode to the blocks. |
|
void |
deleteKey(CryptoTokenSymmetricKeyData data)
Delete the specified key on the crypto token. |
|
void |
encrypt(CryptoTokenCipherContext context,
byte[] plaintext,
int plaintextOffset,
byte[] ciphertext,
int ciphertextOffset)
Encrypts data given an array of plaintext and a context. |
|
void |
encryptCBC(CryptoTokenCipherContext context,
byte[] plaintext,
int plaintextOffset,
byte[] ciphertext,
int ciphertextOffset,
int numBlocks,
byte[] iv)
Encrypts an array of plaintext using the crypto token applying CBC mode to the blocks. |
|
byte[] |
extractKeyData(CryptoTokenSymmetricKeyData data)
Extracts the key data from the crypto token and returns it in a byte array. |
|
String |
getAlgorithm()
Returns the algorithm supported by this token, ie "TripleDES". |
|
CryptoTokenCipherContext |
initializeDecrypt(CryptoTokenSymmetricKeyData data)
Initializes the crypto token for decryption. |
|
CryptoTokenCipherContext |
initializeEncrypt(CryptoTokenSymmetricKeyData data)
Initializes the token for encryption. |
|
CryptoTokenSymmetricKeyData |
injectKey(byte[] key,
int offset)
Inserts the specified key onto the crypto token. |
|
boolean |
providesUserAuthentication()
Returns true if the token provides its own user authentication checks, eg a smartcard will prompt for a password before allowing access to the keys. |
Methods inherited from class java.lang.Object |
---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
Constructor Detail |
---|
protected TripleDESCryptoToken()
TripleDESCryptoToken
object.
This constructor is not used.
Method Detail |
---|
public final String getAlgorithm()
getAlgorithm
in interface CryptoToken
public boolean providesUserAuthentication()
providesUserAuthentication
in interface CryptoToken
public CryptoTokenCipherContext initializeEncrypt(CryptoTokenSymmetricKeyData data) throws CryptoTokenException, CryptoUnsupportedOperationException
data
- The key data contained on the crypto token.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public void encrypt(CryptoTokenCipherContext context, byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset) throws CryptoTokenException
context
- The cipher context.plaintext
- A byte array containing the plaintext.plaintextOffset
- The offset, or initial position, of the plaintext data
within the array.ciphertext
- A byte array containing the ciphertext.ciphertextOffset
- The offset, or initial position, of the
ciphertext within the array.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.public void encryptCBC(CryptoTokenCipherContext context, byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset, int numBlocks, byte[] iv) throws CryptoTokenException, CryptoUnsupportedOperationException
context
- The crypto token context.plaintext
- An array containing the plaintext to be encrypted.plaintextOffset
- The offset, or start position, of the plaintext
data within the array.ciphertext
- An array to contain the ciphertext.ciphertextOffset
- The offset, or starting bit, of the new cipher text
data within the array.numBlocks
- The number of blocks to encrypt.iv
- The initialization vector.
CryptoTokenException
- Thrown if an error occurs with the crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public CryptoTokenCipherContext initializeDecrypt(CryptoTokenSymmetricKeyData data) throws CryptoTokenException, CryptoUnsupportedOperationException
data
- The symmetric key data used to encrypt the plaintext.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public void decrypt(CryptoTokenCipherContext context, byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset) throws CryptoTokenException
context
- The cipher context.ciphertext
- A byte array containing the ciphertext.ciphertextOffset
- The offset, or initial position, of the
ciphertext within the array.plaintext
- A byte array to contain the plaintext.plaintextOffset
- The offset, or initial position, of the plaintext data
within the array.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.public void decryptCBC(CryptoTokenCipherContext context, byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset, int numBlocks, byte[] iv) throws CryptoTokenException, CryptoUnsupportedOperationException
context
- The crypto token context.ciphertext
- An array containing the ciphertext to decrypt.ciphertextOffset
- The offset, or starting bit, of the ciphertext
data within the array.plaintext
- An array to contain the plaintext.plaintextOffset
- The offset, or start position, of the plaintext
data within the array.numBlocks
- The number of blocks to decrypt.iv
- The initialization vector.
CryptoTokenException
- Thrown if an error occurs with the crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public byte[] extractKeyData(CryptoTokenSymmetricKeyData data) throws CryptoTokenException, CryptoUnsupportedOperationException
data
- The symmetric key data contained within the token.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public CryptoTokenSymmetricKeyData createKey() throws CryptoTokenException, CryptoUnsupportedOperationException
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public CryptoTokenSymmetricKeyData injectKey(byte[] key, int offset) throws CryptoTokenException, CryptoUnsupportedOperationException
key
- A byte array containing the key data to be injected.offset
- The offset, or start position, of the key data within the
array.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public void deleteKey(CryptoTokenSymmetricKeyData data) throws CryptoTokenException, CryptoUnsupportedOperationException
data
- The symmetric key data contained within the token.
CryptoTokenException
- Thrown if an error occurs with a crypto
token or the crypto token is invalid.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.
|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
Copyright 1999-2011 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Java is a trademark of Oracle America Inc. in the US and other countries.
Legal