|
|||||||||
PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD |
java.lang.Objectnet.rim.device.api.crypto.encoder.PublicKeyEncoder
public abstract class PublicKeyEncoder
Allows the developer to encode public keys using a variety of supported encoding algorithms.
Once again, the details of creating and using the appropriate algorithm are managed by PublicKeyEncoder
and are completely transparent to the developer.
Encoding a Public Key
Encoding a public key simply involves calling the public static encode()
method
with the desired public key. As the following code illustrates, encoding an RSA public key using the
X509 algorithm is straightforward:
RSAPublicKey key = new RSAPublicKey( ... ); EncodedKey encodedKey = PublicKeyEncoder.encode( key, "X509" );Of course, the RSA public key must be properly created and initialized.
Decoding a Public Key
Decoding a public key is similar to encoding one. Simply call the public static decode()
method with the encoded key data:
byte[] encodedKeyData = ...; PublicKey decodedKey = PublicKeyDecoder.decode( encodedKeyData, "X509" );This code assumes that
encodedKey
contains a properly encoded public key.
Supported Encoding Algorithms
A complete list of the key encoding algorithms supported by the RIM crypto API can be found here. Currently, RIM provides the following public key encoding algorithms, which can be accessed with the specifed string :
Microsoft Crypto API Use the encoding string "MSCAPI". X509 encoding Use the encoding string "X509". WTLS encoding Use the encoding string "WTLS".
The MSCAPI encoding can be found in MSDN. The X509 encoding is defined in RFC 2459. Finally, the WTLS encoding is found in WAP-199-WTLS from Feb 2000.
If a developer wishes to implement a key encoding algorithm not found in this list, the PublicKeyEncoder class can be extended. This information can be found here.
Constructor Summary | ||
---|---|---|
|
protected |
PublicKeyEncoder()
Creates a new PublicKeyEncoder object. |
Method Summary | ||
---|---|---|
|
static EncodedKey |
encode(PublicKey key)
Encodes a given key using the default X509 encoding scheme. |
|
static EncodedKey |
encode(PublicKey key,
String encodingAlgorithm)
Encodes a given key using the specified encoding scheme. |
|
static EncodedKey |
encode(PublicKey key,
String encodingAlgorithm,
long flags)
Encodes a given key using the specified encoding scheme. |
|
protected abstract EncodedKey |
encodeKey(PublicKey key,
long flags)
Encodes the passed in key in the proper format. |
|
protected static PublicKeyEncoder |
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 "X509". |
|
protected abstract String[] |
getKeyAlgorithms()
Returns the name of the keys that can be encoded, such as ("EC", "DH"). |
|
static boolean |
register(PublicKeyEncoder 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 PublicKeyEncoder()
PublicKeyEncoder
object.
This is the default constructor.
Method Detail |
---|
public static EncodedKey encode(PublicKey key) throws NoSuchAlgorithmException, InvalidKeyEncodingException, CryptoTokenException, CryptoUnsupportedOperationException
The crypto system parameters are encoded.
key
- The public key to encode.
EncodedKey
object containing the encoded key.
NoSuchAlgorithmException
- Thrown if the encoding algorithm cannot be found.
InvalidKeyEncodingException
- Thrown if the key is improperly
formatted.
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(PublicKey key, String encodingAlgorithm) throws NoSuchAlgorithmException, InvalidKeyEncodingException, CryptoTokenException, CryptoUnsupportedOperationException
key
- The public key to encode.encodingAlgorithm
- A string representing the encoding Algorithm to use, eg "X509".
EncodedKey
object containing the encoded key.
NoSuchAlgorithmException
- Thrown if the encoding algorithm cannot be found.
InvalidKeyEncodingException
- Thrown if the key is improperly
formatted.
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(PublicKey key, String encodingAlgorithm, long flags) throws NoSuchAlgorithmException, InvalidKeyEncodingException, CryptoTokenException, CryptoUnsupportedOperationException
key
- The public key to encode.encodingAlgorithm
- A string representing the encoding Algorithm to use, eg "X509".flags
- Flags passed to the encoder. See PublicKeyEncoderFlags
.
EncodedKey
object containing the encoded key.
NoSuchAlgorithmException
- Thrown if the encoding algorithm cannot be found.
InvalidKeyEncodingException
- Thrown if the key is improperly
formatted.
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(PublicKey key, long flags) throws NoSuchAlgorithmException, InvalidKeyEncodingException, CryptoTokenException, CryptoUnsupportedOperationException
key
- A public key to encode.flags
- Flags passed to the encoder. See PublicKeyEncoderFlags
.
NoSuchAlgorithmException
- Thrown if the encoding algorithm cannot be found.
InvalidKeyEncodingException
- Thrown if the key is improperly
formatted.
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(PublicKeyEncoder encoder) throws NoSuchAlgorithmException
encoder
- The public key encoder to register.
NoSuchAlgorithmException
- Thrown if the encoding algorithm cannot be found.protected static PublicKeyEncoder getEncoder(String encodingAlgorithm, String keyAlgorithm) throws NoSuchAlgorithmException
encodingAlgorithm
- The encoding algorithm such as "X509".keyAlgorithm
- The key type that was encoded, such as "EC".
NoSuchAlgorithmException
- Thrown if the 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-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.