SHOW Signed

net.rim.device.api.crypto.encoder
Class SignatureDecoder

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

public abstract class SignatureDecoder
extends Object

Defines routines to decode signatures produced by the SignatureSigner classes. The details of creating and using the appropriate encoding algorithm are left to SignatureDecoder and are completely transparent to the developer.

Encoding Signatures

Encoding a signature involves calling the public static encode() method with a SignatureSigner object and a string that contains the requested encoding algorithm. For example, to encode an ECDSASignatureSigner using X509 encoding, code similar to the following would be used:

                    
      PrivateKey privateKey = ...;
      SignatureSigner signer = new ECDSASignatureSigner( privateKey );
      String message = "Buy 10000 shares of Jabroni Jeans";
      signer.update( message );
      EncodedSignature encodedSignature = SignatureEncoder.encode( signer, "X509" );
 
where signer is a valid ECDSASignatureSigner object that has been created with the appropriate parameters.

Decoding Signatures

Decoding a signature simply involves calling the public static decode() method in this class with an EncodedSignature object and the public key to use for verification. Decoding an ECDSA signature using the X509 encoding algorithm can be accomplished by using code similar to the following:

      PublicKey publicKey = ...;
      byte[] encodedSignatureData = ...;
      DecodedSignature decoded = SignatureDecoder.decode( encodedSignatureData, "X509" );
      SignatureVerifier verifier = decoded.getVerifier( publicKey );
 
Only the encoded signature and encoding algorithm into decode. The user gets back a SignatureDecoder which they can then pass a public key into to create a signature verifier. The user can also call the initialize function of the decoder in order to change the digest used by the signature verifier.

Supported Encoding Algorithms

Please see here for a list of the RIM supplied encoding algorithms. Currently, RIM provides the following signature encoding algorithms, which can be accessed with the specifed string:

X509 encoding use the encoding string "X509"
WTLS encoding use the encoding string "WTLS"
CMS encoding use the encoding string "CMS"

The X509 encoding is defined in RFC 2459. The WTLS encoding is found in WAP-199-WTLS from Feb 2000. Finally, the CMS encoding is defined in RFC 2630.

For algorithms not found in this list, a developer can implement additional signature encoding algorithms that can be integrated into the Crypto API. Please see the tutorial on Adding Encoders.

Category:
Signed: This element is only accessible by signed clients. If you intend to use this element, please contact RIM to establish the necessary agreements that will allow you to have your COD files signed. Signing is only required for use on the device, development under the JDE can occur without signing the CODs.

Since:
JDE 3.6.0
See Also:
DecodedSignature, SignatureEncoder, EncodedSignature

Constructor Summary
 
Method Summary
 Category: Signed static DecodedSignature decode(byte[] encodedSignature, int offset, String encodingAlgorithm)
          This function will take in the provided encoded signature and a public key and will return a properly intialized signature verifier.
 Category: Signed static DecodedSignature decode(byte[] encodedSignature, int offset, String encodingAlgorithm, String signatureAlgorithm)
          Takes in the provided encoded signature and a public key and will return a properly intialized signature verifier.
 Category: Signed static DecodedSignature decode(byte[] encodedSignature, String encodingAlgorithm)
          This function will take in the provided encoded signature and a public key and will return a properly intialized signature verifier.
 Category: Signed static DecodedSignature decode(InputStream encodedSignature, String encodingAlgorithm)
          This function will take in the provided encoded signature and a public key and will return a properly intialized signature verifier.
 Category: Signed static DecodedSignature decode(InputStream encodedSignature, String encodingAlgorithm, String signatureAlgorithm)
          Takes in the provided encoded signature and a public key and will return a properly intialized signature verifier.
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail
Method Detail

decode

public static DecodedSignature decode(InputStream encodedSignature,
                                      String encodingAlgorithm)
                               throws NoSuchAlgorithmException,
                                      InvalidSignatureEncodingException
This function will take in the provided encoded signature and a public key and will return a properly intialized signature verifier.

Parameters:
encodedSignature - An input stream containing the encoded signature to verify.
encodingAlgorithm - A String representing the encoding scheme used.
Returns:
A DecodedSignature object from which a signature verifier can be obtained.
Throws:
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
InvalidSignatureEncodingException - Thrown if the signature is incorrectly formatted.
Since:
JDE 4.0.2
Category:
Signed: This element is only accessible by signed clients. If you intend to use this element, please contact RIM to establish the necessary agreements that will allow you to have your COD files signed. Signing is only required for use on the device, development under the JDE can occur without signing the CODs.

decode

public static DecodedSignature decode(byte[] encodedSignature,
                                      String encodingAlgorithm)
                               throws NoSuchAlgorithmException,
                                      InvalidSignatureEncodingException
This function will take in the provided encoded signature and a public key and will return a properly intialized signature verifier.

Parameters:
encodedSignature - A byte array containing the encoded signature to verify.
encodingAlgorithm - A string representing the encoding scheme used.
Returns:
A DecodedSignature object from which a signature verifier can be obtained.
Throws:
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
InvalidSignatureEncodingException - Thrown if the signature is incorrectly formatted.
Since:
JDE 4.0.2
Category:
Signed: This element is only accessible by signed clients. If you intend to use this element, please contact RIM to establish the necessary agreements that will allow you to have your COD files signed. Signing is only required for use on the device, development under the JDE can occur without signing the CODs.

decode

public static DecodedSignature decode(byte[] encodedSignature,
                                      int offset,
                                      String encodingAlgorithm)
                               throws NoSuchAlgorithmException,
                                      InvalidSignatureEncodingException
This function will take in the provided encoded signature and a public key and will return a properly intialized signature verifier.

Parameters:
encodedSignature - A byte array containing the encoded signature to verify.
encodingAlgorithm - A string representing the encoding scheme used.
Returns:
A DecodedSignature object from which a signature verifier can be obtained.
Throws:
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
InvalidSignatureEncodingException - Thrown if the signature is incorrectly formatted.
Since:
JDE 4.0.2
Category:
Signed: This element is only accessible by signed clients. If you intend to use this element, please contact RIM to establish the necessary agreements that will allow you to have your COD files signed. Signing is only required for use on the device, development under the JDE can occur without signing the CODs.

decode

public static DecodedSignature decode(InputStream encodedSignature,
                                      String encodingAlgorithm,
                                      String signatureAlgorithm)
                               throws NoSuchAlgorithmException,
                                      InvalidSignatureEncodingException
Takes in the provided encoded signature and a public key and will return a properly intialized signature verifier.

Parameters:
encodedSignature - An input stream containing the encoded signature to verify.
encodingAlgorithm - A string representing the encoding scheme used.
signatureAlgorithm - The signature algorithm used.
Returns:
A DecodedSignature object from which a signature verifier can be obtained.
Throws:
NoSuchAlgorithmException - Thrown if the encoding algorithm cannot be found.
InvalidSignatureEncodingException - Thrown if the signature is incorrectly formatted.
Since:
JDE 4.0.2
Category:
Signed: This element is only accessible by signed clients. If you intend to use this element, please contact RIM to establish the necessary agreements that will allow you to have your COD files signed. Signing is only required for use on the device, development under the JDE can occur without signing the CODs.

decode

public static DecodedSignature decode(byte[] encodedSignature,
                                      int offset,
                                      String encodingAlgorithm,
                                      String signatureAlgorithm)
                               throws NoSuchAlgorithmException,
                                      InvalidSignatureEncodingException
Takes in the provided encoded signature and a public key and will return a properly intialized signature verifier.

Parameters:
encodedSignature - A byte array containing the encoded signature to verify.
encodingAlgorithm - A String representing the encoding scheme used.
signatureAlgorithm - A String representing the signature algorithm used.
Returns:
A DecodedSignature object from which a signature verifier can be obtained.
Throws:
NoSuchAlgorithmException - Thrown if the specified encoding algorithm cannot be found.
InvalidSignatureEncodingException - Thrown if the signature is incorrectly formatted.
Since:
JDE 4.0.2
Category:
Signed: This element is only accessible by signed clients. If you intend to use this element, please contact RIM to establish the necessary agreements that will allow you to have your COD files signed. Signing is only required for use on the device, development under the JDE can occur without signing the CODs.


Copyright 1999-2004 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.