net.rim.device.api.crypto
Class RC5EncryptorEngine

java.lang.Object
  extended by net.rim.device.api.crypto.RC5EncryptorEngine
All Implemented Interfaces:
BlockEncryptorEngine, SymmetricKeyEncryptorEngine

public final class RC5EncryptorEngine
extends Object
implements SymmetricKeyEncryptorEngine

The RC5EncryptorEngine class implements the encryption functionality of the RC5 block cipher.

We implemented RC5 as per RFC 2040.

Note: The RIM implementation has some limitations compared to the specified algorithm itself. The RIM implementation only supports a block size of 64. As well, the RIM implementation only allows 16 rounds or less. It does not allow more than 16 rounds. However, the key size is allowed to range from its minimum to maximum (0 to 2040 bits).

For information on cryptographic algorithms, see Crypto Algorithms.

Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

Constructor Summary
Category: Signed RC5EncryptorEngine(RC5Key key)
          Creates an RC5EncryptorEngine object given an RC5 key.
Category: Signed RC5EncryptorEngine(RC5Key key, int blockLength)
          Creates an RC5EncryptorEngine object given an RC5 key.
Category: Signed RC5EncryptorEngine(RC5Key key, int blockLength, int numberOfRounds)
          Creates a RC5EncryptorEngine object given an RC5 key, the block length, and the number of rounds.
 
Method Summary
Category: Signed  void encrypt(byte[] plaintext, int plaintextOffset, byte[] ciphertext, int ciphertextOffset)
          Encrypts a block of the given plaintext into a block of ciphertext.
Category: Signed  String getAlgorithm()
          Returns the name of the algorithm used, eg "RC5_64_64_16" ("RC5_" + keyBitLength + "_" + blockBitLength + "_" + numberOfRounds).
Category: Signed  int getBlockLength()
          Returns the block length of the engine in bytes.
Category: Signed  int getKeyLength()
          Returns the length of the engine's key in bytes.
Category: Signed  int getNumberOfRounds()
          Returns the number of rounds used.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 



Constructor Detail

RC5EncryptorEngine

public RC5EncryptorEngine(RC5Key key)
                   throws CryptoTokenException,
                          CryptoUnsupportedOperationException
Creates an RC5EncryptorEngine object given an RC5 key. Block length is set to 8 bytes, and the cipher is computed for 16 rounds.

Parameters:
key - The RC5 key to use with the engine.
Throws:
CryptoTokenException - Thrown when an error occurs with a crypto token or the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown when a call is made to an unsupported operation.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

RC5EncryptorEngine

public RC5EncryptorEngine(RC5Key key,
                          int blockLength)
                   throws CryptoTokenException,
                          CryptoUnsupportedOperationException
Creates an RC5EncryptorEngine object given an RC5 key. The cipher is computed for 16 rounds.

Parameters:
key - The RC5 key to use with the engine.
blockLength - The block length of the cipher. Note that if you are using the default RIM implementation of RC5, then only a block size of 8 is supported here. Passing in 16 will cause a CryptoUnsupportedOperationException to be thrown.
Throws:
CryptoTokenException - Thrown when an error occurs with a crypto token or the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown when a call is made to an unsupported operation.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

RC5EncryptorEngine

public RC5EncryptorEngine(RC5Key key,
                          int blockLength,
                          int numberOfRounds)
                   throws CryptoTokenException,
                          CryptoUnsupportedOperationException
Creates a RC5EncryptorEngine object given an RC5 key, the block length, and the number of rounds.

Parameters:
key - The RC5 key to use with the engine.
blockLength - The cipher block length in bytes (8 or 16). Note that if you are using the default RIM implementation of RC5, then only a block size of 8 is supported here. Passing in 16 will cause a CryptoUnsupportedOperationException to be thrown.
numberOfRounds - The number of rounds (0 to 255).
Throws:
CryptoTokenException - Thrown when an error occurs with a crypto token or the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown when a call is made to an unsupported operation.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0


Method Detail

getAlgorithm

public String getAlgorithm()
Returns the name of the algorithm used, eg "RC5_64_64_16" ("RC5_" + keyBitLength + "_" + blockBitLength + "_" + numberOfRounds).

Specified by:
getAlgorithm in interface BlockEncryptorEngine
Returns:
A String that represents the name of the algorithm (including the appended key length and block length).
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

getBlockLength

public int getBlockLength()
Description copied from interface: BlockEncryptorEngine
Returns the block length of the engine in bytes.

Specified by:
getBlockLength in interface BlockEncryptorEngine
Returns:
An integer that represents the number of bytes.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

getKeyLength

public int getKeyLength()
Returns the length of the engine's key in bytes.

Returns:
An integer that represents the length of the key.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

getNumberOfRounds

public int getNumberOfRounds()
Returns the number of rounds used.

The number of rounds specifies the number of times the plaintext has been "scrambled". In theory, the encryption scheme becomes more secure as the number of rounds is increased.

Returns:
An integer that represents the number of rounds.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0

encrypt

public void encrypt(byte[] plaintext,
                    int plaintextOffset,
                    byte[] ciphertext,
                    int ciphertextOffset)
             throws CryptoTokenException
Description copied from interface: BlockEncryptorEngine
Encrypts a block of the given plaintext into a block of ciphertext.

Specified by:
encrypt in interface BlockEncryptorEngine
Parameters:
plaintext - A byte array containing the input that is to be encrypted.
plaintextOffset - The starting offset, or initial byte position, of the data within the input array.
ciphertext - A byte array to hold the ciphertext output from the method.
ciphertextOffset - The starting offset, or initial byte position, of the data within the output array.
Throws:
CryptoTokenException - Thrown when an problem occurs with the crypto token or the crypto token is invalid.
Category:
Signed: This element is only accessible by signed applications. If you intend to use this element, please visit http://www.blackberry.com/go/codesigning to obtain a set of code signing keys. Code signing is only required for applications running on BlackBerry smartphones; development on BlackBerry Smartphone Simulators can occur without code signing.
Since:
BlackBerry API 3.6.0





Copyright 1999-2010 Research In Motion Limited. 295 Phillip Street, Waterloo, Ontario, Canada, N2L 3W8. All Rights Reserved.
Copyright 1993-2003 Sun Microsystems, Inc. 901 San Antonio Road, Palo Alto, California, 94303, U.S.A. All Rights Reserved.
Copyright 2002-2003 Nokia Corporation All Rights Reserved.
Java is a trademark of Sun Microsystems, Inc.