SHOW Signed
 

net.rim.device.api.crypto
Class RC5DecryptorEngine

java.lang.Object
  |
  +--net.rim.device.api.crypto.RC5DecryptorEngine
All Implemented Interfaces:
BlockDecryptorEngine, SymmetricKeyDecryptorEngine

public final class RC5DecryptorEngine
extends Object
implements SymmetricKeyDecryptorEngine

The RC5DecryptorEngine class implements the decryption 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).

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:
JDE 3.6.0

Constructor Summary
 Category: Signed RC5DecryptorEngine(RC5Key key)
          Creates an RC5DecryptorEngine object given an RC5 key.
 Category: Signed RC5DecryptorEngine(RC5Key key, int blockLength)
          Creates an RC5DecryptorEngine object given an RC5 key.
 Category: Signed RC5DecryptorEngine(RC5Key key, int blockLength, int numberOfRounds)
          Creates an RC5DecryptorEngine object given an RC5 key, the block length, and the number of rounds.
 
Method Summary
 Category: Signed  void decrypt(byte[] ciphertext, int ciphertextOffset, byte[] plaintext, int plaintextOffset)
          Decodes a block of the given ciphertext into a block of plaintext.
 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 block cipher 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

RC5DecryptorEngine

public RC5DecryptorEngine(RC5Key key)
                   throws CryptoTokenException,
                          CryptoUnsupportedOperationException
Creates an RC5DecryptorEngine 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.
Since:
JDE 3.6.0
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.

RC5DecryptorEngine

public RC5DecryptorEngine(RC5Key key,
                          int blockLength)
                   throws CryptoTokenException,
                          CryptoUnsupportedOperationException
Creates an RC5DecryptorEngine object given an RC5 key. 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.
Since:
JDE 3.6.0
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.

RC5DecryptorEngine

public RC5DecryptorEngine(RC5Key key,
                          int blockLength,
                          int numberOfRounds)
                   throws CryptoTokenException,
                          CryptoUnsupportedOperationException
Creates an RC5DecryptorEngine 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. 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.
Since:
JDE 3.6.0
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.
Method Detail

decrypt

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

Since:
JDE 3.6.0

Following copied from interface: BlockDecryptorEngine
Parameters:
ciphertext - A byte array containing the input that is to be decrypted.
ciphertextOffset - The starting offset, or initial byte position, of the data within the input array.
plaintext - A byte array containing the output from the method.
plaintextOffset - The starting offset, or initial byte position, of the data within the output array.
Throws:
CryptoTokenException - Thrown when an error 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.

getAlgorithm

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

Returns:
A String that represents the name of the algorithm.
Since:
JDE 3.6.0
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.

getBlockLength

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

Since:
JDE 3.6.0

Following copied from interface: BlockDecryptorEngine
Returns:
An integer that specifies the length of a block of data.
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.

getKeyLength

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

Returns:
An integer that represents the length of the key.
Since:
JDE 3.6.0
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.

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.
Since:
JDE 3.6.0
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.



Copyright 1999-2009 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.
Copyright 2002-2003 Nokia Corporation All Rights Reserved.
Java is a trademark or registered trademark of Sun Microsystems, Inc. in the US and other countries.