SHOW Signed SHOW CryptoExtensionAPI
 

net.rim.device.api.crypto
Class DecryptorFactory

java.lang.Object
  |
  +--net.rim.device.api.crypto.DecryptorFactory

public abstract class DecryptorFactory
extends Object

Provides the user with a high-level means to decrypt data. The factory classes allow you to encrypt (see the EncryptorFactory EncryptorFactory class) and decrypt data without worrying about most of the minute details of the implementation. This class is suitable for developers with little cryptographic experience or, for decrypting data where the details of the implementation are not as important as the result.

The low-level alternative to using the DecryptorFactory class is the decryptor engine, such as the DESDecryptorEngine DESDecryptorEngine.

Note: When requesting a a block cipher in CFB mode you can specify the number of bits to be processed at a time. In our API there are two options allowed for CFB mode. You can either have 8bit mode (denoted by "CFB8") or full CFB mode (denoted simply by "CFB") which will process the full block length.

Note: When calling the getDecryptorInputStream functions, if you specify the algorithm as just "RSA", or just pass in an RSAPrivateKey, then what will be created is "RSA/PKCS1". This is because there are alot of problems with using RSA, by itself, with block encryption/decryption. To use the basic RSA function by itself, use the engine directly.

Note: When using the ElGamal Decryption algorithm it will expect the ephemeral public key from the encryption to have been prepended to the beginning of the ciphertext in the MPI format described in PGP. If this is not the case, it will be unable to properly decrypt your message. For other variations of using ElGamal please use the engine directly.

For more information on the cryptographic algorithms supported by this factory, see Crypto Algorithms.

NOTE: The implementation of this class may return an object that uses functionality provided by Certicom. In such cases, the calling code must have a license with Certicom, and be signed with the RCC code signing key. If the RCC code signature check fails, then a ControlledAccessException is thrown. For more information on the classes that use technology from Certicom, 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:
JDE 3.6.0
See Also:
ControlledAccessException, RSADecryptorEngine, ElGamalDecryptorEngine, EncryptorFactory, DecryptorInputStream

Constructor Summary
 Category: CryptoExtensionAPI Category: Signed protected DecryptorFactory()
          Creates a new DecryptorFactory object.
 
Method Summary
 Category: CryptoExtensionAPI Category: Signed protected abstract  Object create(String algorithm, String nextAlgorithm, Key key, InputStream stream, InitializationVector iv)
          Creates an instance of the DecryptorFactory class given the specified parameters.
 Category: Signed static Enumeration getAlgorithms()
          Returns an Enumeration of String representing all of the registered algorithms with this factory.
 Category: Signed static BlockDecryptorEngine getBlockDecryptorEngine(Key key)
          Returns the block decryptor engine using the symmetric key as an argument.
 Category: Signed static BlockDecryptorEngine getBlockDecryptorEngine(Key key, String algorithm)
          Returns the block decryptor engine using the symmetric key as an argument.
 Category: Signed static BlockDecryptorEngine getBlockDecryptorEngine(Key key, String algorithm, InitializationVector iv)
          Returns the block decryptor engine using the symmetric key as an argument.
 Category: Signed static DecryptorInputStream getDecryptorInputStream(Key key, InputStream stream)
          Returns the decrypted input stream using the symmetric key and input stream as arguments.
 Category: Signed static DecryptorInputStream getDecryptorInputStream(Key key, InputStream stream, String algorithm)
          Returns the decrypted input stream using the symmetric key, input stream and algorithm name as arguments.
 Category: Signed static DecryptorInputStream getDecryptorInputStream(Key key, InputStream stream, String algorithm, InitializationVector iv)
          Returns the decrypted input stream using the initialization vector as an additonal argument.
 Category: CryptoExtensionAPI Category: Signed protected abstract  String[] getFactoryAlgorithms()
          Returns a string representing the name of the decryptor algorithm, for example "DES", used to decrypt the data.
 Category: CryptoExtensionAPI Category: Signed static void register(DecryptorFactory factory)
          Registers the specified factory.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DecryptorFactory

protected DecryptorFactory()
Creates a new DecryptorFactory object.

Since:
JDE 3.6.0
Category:
CryptoExtensionAPI: This element is part of the Crypto Extension API. These APIs are intended for parties interested in extending the security provider frameworks, such as integrating a new security medium.
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

create

protected abstract Object create(String algorithm,
                                 String nextAlgorithm,
                                 Key key,
                                 InputStream stream,
                                 InitializationVector iv)
                          throws NoSuchAlgorithmException,
                                 ClassCastException,
                                 CryptoTokenException,
                                 CryptoUnsupportedOperationException,
                                 CryptoException,
                                 IOException
Creates an instance of the DecryptorFactory class given the specified parameters.

Parameters:
algorithm - String that specifies the details of the encryption scheme. The string is composed of three separate strings concatenated together and delimited by forward slashes. For example DES/CBC/OAEP represents a valid string that specifies the cipher, the mode and the unformatterengine that will be used to decrypt the data. The algorithm parameter corresponds to the rightmost substring. The null value is passed if an element is not specified. The null value specifies that the default value be used.
nextAlgorithm - String that represents the next substring to the left of the initial algorithm parameter specified above.
key - The key used to decrypt the data.
stream - The InputStream that contains the ciphertext of the initial message.
iv - The initialization vector initially used by the encryptor engine to randomize the data.
Returns:
The DecryptorFactory object.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
ClassCastException - Occurs when an object is improperly cast.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
Since:
JDE 3.6.0
Category:
CryptoExtensionAPI: This element is part of the Crypto Extension API. These APIs are intended for parties interested in extending the security provider frameworks, such as integrating a new security medium.
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.

getAlgorithms

public static Enumeration getAlgorithms()
Returns an Enumeration of String representing all of the registered algorithms with this factory.
Returns:
An Enumeration of Strings representing all of the registered algorithms with this factory.
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.

getBlockDecryptorEngine

public static BlockDecryptorEngine getBlockDecryptorEngine(Key key)
                                                    throws NoSuchAlgorithmException,
                                                           CryptoTokenException,
                                                           CryptoUnsupportedOperationException,
                                                           CryptoException
Returns the block decryptor engine using the symmetric key as an argument.

Parameters:
key - The key used to encrypt and decrypt the data.
Returns:
The block decryptor engine.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if 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.

getBlockDecryptorEngine

public static BlockDecryptorEngine getBlockDecryptorEngine(Key key,
                                                           String algorithm)
                                                    throws NoSuchAlgorithmException,
                                                           CryptoTokenException,
                                                           CryptoUnsupportedOperationException,
                                                           CryptoException
Returns the block decryptor engine using the symmetric key as an argument.

Parameters:
key - The key used to encrypt and decrypt the data.
algorithm - A string that represents the algorithm along with the details of the decryption. eg, "RC5_64_64" ("RC5_" + keyBitLength + "_" + blockBitLength). The string, consisting of one or more substrings, is read from right to left with the left-most sub-string representing the name of the algorithm. The two substrings to the right of the algorithm specify the length of the key in bits and the block length of the data in bits.

If a substring is not defined, the default value is substituted instead.

Returns:
The block decryptor engine.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if 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.

getBlockDecryptorEngine

public static BlockDecryptorEngine getBlockDecryptorEngine(Key key,
                                                           String algorithm,
                                                           InitializationVector iv)
                                                    throws NoSuchAlgorithmException,
                                                           CryptoTokenException,
                                                           CryptoUnsupportedOperationException,
                                                           CryptoException
Returns the block decryptor engine using the symmetric key as an argument.

Parameters:
key - The key used to encrypt and decrypt the data.
algorithm - A string that represents the algorithm along with the details of the decryption. eg, "RC5_64_64" ("RC5_" + keyBitLength + "_" + blockBitLength). The string, consisting of one or more substrings, is read from right to left with the left-most sub-string representing the name of the algorithm. The two substrings to the right of the algorithm specify the length of the key in bits and the block length of the data in bits.

If a substring is not defined, the default value is substituted instead.

iv - The initialization vector used to decrypt the data.
Returns:
The block decryptor engine.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if 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.

getDecryptorInputStream

public static DecryptorInputStream getDecryptorInputStream(Key key,
                                                           InputStream stream)
                                                    throws NoSuchAlgorithmException,
                                                           CryptoTokenException,
                                                           CryptoUnsupportedOperationException,
                                                           CryptoException,
                                                           IOException
Returns the decrypted input stream using the symmetric key and input stream as arguments.

Parameters:
key - The key used to encrypt and decrypt the data.
stream - The input stream.
Returns:
The input stream containing the decrypted text.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if 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.

getDecryptorInputStream

public static DecryptorInputStream getDecryptorInputStream(Key key,
                                                           InputStream stream,
                                                           String algorithm)
                                                    throws NoSuchAlgorithmException,
                                                           CryptoTokenException,
                                                           CryptoUnsupportedOperationException,
                                                           CryptoException,
                                                           IOException
Returns the decrypted input stream using the symmetric key, input stream and algorithm name as arguments.

Parameters:
key - The key used to encrypt and decrypt the data.
stream - The input stream.
algorithm - A string that represents the algorithm along with the details of the decryption. eg, "RC5_64_64" ("RC5_" + keyBitLength + "_" + blockBitLength). The string, consisting of one or more substrings, is read from right to left with the left-most sub-string representing the name of the algorithm. The two substrings to the right of the algorithm specify the length of the key in bits and the block length of the data in bits.

If a substring is not defined, the default value is substituted instead.

Returns:
The input stream containing the decrypted data.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if 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.

getDecryptorInputStream

public static DecryptorInputStream getDecryptorInputStream(Key key,
                                                           InputStream stream,
                                                           String algorithm,
                                                           InitializationVector iv)
                                                    throws NoSuchAlgorithmException,
                                                           CryptoTokenException,
                                                           CryptoUnsupportedOperationException,
                                                           CryptoException,
                                                           IOException
Returns the decrypted input stream using the initialization vector as an additonal argument.

Parameters:
key - The key used to encrypt and decrypt the data.
stream - The input stream.
algorithm - A string that represents the algorithm along with the details of the decryption. eg, "RC5_64_64" ("RC5_" + keyBitLength + "_" + blockBitLength). The string, consisting of one or more substrings, is read from right to left with the left-most sub-string representing the name of the algorithm. The two substrings to the right of the algorithm specify the length of the key in bits and the block length of the data in bits.

If a substring is not defined, the default value is substituted instead.

iv - The initialization vector used to decrypt the data.
Returns:
The input stream containing the decrypted data.
Throws:
NoSuchAlgorithmException - Occurs when the specified algorithm is invalid.
CryptoTokenException - Occurs when the crypto token is invalid.
CryptoUnsupportedOperationException - Thrown if 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.

getFactoryAlgorithms

protected abstract String[] getFactoryAlgorithms()
Returns a string representing the name of the decryptor algorithm, for example "DES", used to decrypt the data.

Returns:
A string representing the name of the decryption algorithm that will be used to decrypt the data.
Since:
JDE 3.6.0
Category:
CryptoExtensionAPI: This element is part of the Crypto Extension API. These APIs are intended for parties interested in extending the security provider frameworks, such as integrating a new security medium.
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.

register

public static void register(DecryptorFactory factory)
Registers the specified factory. If a factory with the same name already exists, this factory is not added.

Parameters:
factory - The decryptor factory to be registered.
Since:
JDE 3.6.0
Category:
CryptoExtensionAPI: This element is part of the Crypto Extension API. These APIs are intended for parties interested in extending the security provider frameworks, such as integrating a new security medium.
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.