|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectnet.rim.device.api.crypto.encoder.PrivateKeyEncoder
public abstract class PrivateKeyEncoder
Allows the developer to encode private keys using a variety of supported encoding algorithms.
The details of creating and using the appropriate algorithm are managed by PrivateKeyEncoder
and are completely transparent to the developer.
Encoding a Private Key
Encoding a private key involves calling the public static encode() method with the desired private
key. As the following code illustrates, encoding an RSA private key using the X509 algorithm is straightforward:
RSAPrivateKey key = new RSAPrivateKey( ... );
EncodedKey encodedKey = PrivateKeyEncoder.encode( key, "PKCS8" );
Of course, the RSA private key must be properly created and initialized.
Decoding a Private Key
Decoding a private key is similar to encoding one. Simply call the public static decode()
method with the encoded key data:
byte[] encodedKeyData = ...;
PrivateKey decodedKey = PrivateKeyDecoder.decode( encodedKeyData, "PKCS8" );
This code assumes that encodedKeyData contains a properly encoded private key.
Supported Encoding Algorithms
Please see here for a list of the RIM supplied encoding algorithms. Currently, RIM provides the following private key encoding algorithms, which can be accessed with the specifed string :
Microsoft Crypto API Use the encoding string "MSCAPI". PKCS8 encoding Use the encoding string "PKCS8".
The MSCAPI encoding can be found in MSDN. The PKCS8 encoding is found in the PKCS8 standard v1.2.
For algorithms not found in this list, a developer can implement additional private key encoding algorithms that can be integrated into the Crypto API. Please see the tutorial on Adding Encoders.
| Constructor Summary | ||
|---|---|---|
|
protected |
PrivateKeyEncoder()
Creates a new PrivateKeyEncoder object. |
| Method Summary | ||
|---|---|---|
|
static EncodedKey |
encode(PrivateKey privateKey)
Encodes a given key using the default PKCS8 encoding scheme. |
|
static EncodedKey |
encode(PrivateKey privateKey,
String encodingAlgorithm)
Encodes a given key using the specified encoding scheme. |
|
static EncodedKey |
encode(PrivateKey privateKey,
PublicKey publicKey,
String encodingAlgorithm)
Encodes a given key using the specified encoding scheme. |
|
protected abstract EncodedKey |
encodeKey(PrivateKey privateKey)
Encodes the passed in key in the proper format. |
|
protected EncodedKey |
encodeKey(PrivateKey privateKey,
PublicKey publicKey)
Encodes the passed in key in the proper format. |
|
protected static PrivateKeyEncoder |
getEncoder(String encodingAlgorithm,
String keyAlgorithm)
Returns the class associated with the encoding algorithm and the key algorithm. |
|
protected abstract String |
getEncodingAlgorithm()
Returns the name of the encoding used, such as "PKCS8". |
|
protected abstract String[] |
getKeyAlgorithms()
Returns the name of the key that was encoded, such as ("EC","DSA"). |
|
static boolean |
register(PrivateKeyEncoder encoder)
Registers the given encoder class with the API. |
| Methods inherited from class java.lang.Object |
|---|
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait |
| Constructor Detail |
|---|
protected PrivateKeyEncoder()
PrivateKeyEncoder object.
This is the default constructor.
| Method Detail |
|---|
public static EncodedKey encode(PrivateKey privateKey)
throws NoSuchAlgorithmException,
CryptoTokenException,
CryptoUnsupportedOperationException
The crypto system parameters are encoded.
privateKey - The private key to encode.
EncodedKey object containing the encoded key.
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
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 static EncodedKey encode(PrivateKey privateKey,
String encodingAlgorithm)
throws NoSuchAlgorithmException,
CryptoTokenException,
CryptoUnsupportedOperationException
privateKey - The private key to encode.encodingAlgorithm - A string representing the encoding Algorithm to use, eg "PKCS8".
EncodedKey object containing the encoded key.
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
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 static EncodedKey encode(PrivateKey privateKey,
PublicKey publicKey,
String encodingAlgorithm)
throws NoSuchAlgorithmException,
CryptoTokenException,
CryptoUnsupportedOperationException
privateKey - The private key to encode.publicKey - public key in case it is required to be a part of the encoding.encodingAlgorithm - A string representing the encoding Algorithm to use, eg "PKCS8".
EncodedKey object containing the encoded key.
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
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.
protected abstract EncodedKey encodeKey(PrivateKey privateKey)
throws NoSuchAlgorithmException,
CryptoTokenException,
CryptoUnsupportedOperationException
privateKey - The private key to encode.
EncodedKey object.
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
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.
protected EncodedKey encodeKey(PrivateKey privateKey,
PublicKey publicKey)
throws NoSuchAlgorithmException,
CryptoTokenException,
CryptoUnsupportedOperationException
privateKey - The private key to encode.public - key in case it is required to be a part of the encoding.
EncodedKey object.
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
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 static boolean register(PrivateKeyEncoder encoder)
throws NoSuchAlgorithmException
encoder - The private key encoder to register.
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
protected static PrivateKeyEncoder getEncoder(String encodingAlgorithm,
String keyAlgorithm)
throws NoSuchAlgorithmException
encodingAlgorithm - The encoding algorithm such as "PKCS8".keyAlgorithm - The key type that was encoded, such as "EC".
NoSuchAlgorithmException - Thrown if the specified encoding algorithm cannot be found.protected abstract String getEncodingAlgorithm()
protected abstract String[] getKeyAlgorithms()
|
|||||||||
| 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