SHOW Signed
 

net.rim.device.api.crypto.cms
Class CMSInputStream

java.lang.Object
  |
  +--java.io.InputStream
        |
        +--net.rim.device.api.crypto.cms.CMSInputStream
Direct Known Subclasses:
CMSCompressedDataInputStream, CMSDataInputStream, CMSEnvelopedDataInputStream, CMSSignedDataInputStream, CMSSignedReceiptInputStream, EMSAcceptRequestInputStream

public abstract class CMSInputStream
extends InputStream

A generic CMS input stream that the data, signed, and enveloped input streams extend.

Here is some sample code on how to create an input stream. Note that all of the exception handling has been ignored

 InputStream input = ... // where the data stream is from
 KeyStore keyStore = ... // A key store containing keys used to verify signatures and decrypt messages.

 CMSContext context = CMSInputStream.getCMSContext( input );
 CMSInputStream cmsStream = CMSInputStream.getCMSInputStream( context, keyStore );
 // and now use your stream for whatever purpose you desire.

 // Suppose you have the session key of the message ( maybe you cached it ).  You can speed things up by call
 // the function as follows :

 SymmetricKey sessionKey = ... // the key
 
 CMSContext context = CMSInputStream.getCMSContext( input );
 CMSInputStream cmsStream = CMSInputStream.getCMSInputStream( context, keyStore, sessionKey );
 
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 4.0.0
See Also:
CMSOutputStream

Field Summary
 Category: Signed protected  OID _contentType
          The content type of the input stream.
 Category: Signed protected  InputStream _data
          The input stream data.
 Category: Signed protected  InputStream _input
          The input stream.
 
Constructor Summary
 Category: Signed protected CMSInputStream(InputStream input)
          Creates a CMS input stream.
 
Method Summary
 Category: Signed  int available()
          Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream.
 Category: Signed  void close()
          Closes this input stream and releases any system resources associated with the stream.
 Category: Signed static CMSContext getCMSContext(InputStream inputStream)
          Completes the first stage of a two stage processing of a cms message.
 Category: Signed  CMSInputStream getCMSInputStream()
          Returns the CMSInputStream of the inner message, if the inner message is signed or enveloped.
 Category: Signed static CMSInputStream getCMSInputStream(CMSContext context, KeyStore keyStore)
          Finishes the second stage of the two stage processing of a cms message.
 Category: Signed static CMSInputStream getCMSInputStream(CMSContext context, KeyStore keyStore, SymmetricKey sessionKey)
          Finishes the second stage of the two stage processing of a CMS message.
 Category: Signed static CMSInputStream getCMSInputStream(CMSContext context, KeyStore keyStore, SymmetricKey sessionKey, boolean displayUI)
          Finishes the second stage of the two stage processing of a CMS message.
 Category: Signed static CMSInputStream getCMSInputStream(InputStream inputStream, KeyStore keyStore)
          Parses the beginning of the passed in input stream to determine what kind of CMS message it is.
 Category: Signed static CMSInputStream getCMSInputStream(InputStream inputStream, KeyStore keyStore, SymmetricKey sessionKey)
          Parses the beginning of the passed in input stream to determine what kind of CMS message it is.
 Category: Signed static CMSInputStream getCMSInputStream(InputStream inputStream, KeyStore keyStore, SymmetricKey sessionKey, boolean displayUI)
          Parses the beginning of the passed in input stream to determine what kind of CMS message it is.
 Category: Signed  int getContentType()
          Returns the content type of the inner message, either CMSContentTypes.DATA, SIGNED_DATA, ENVELOPED_DATA or COMPRESSED_DATA.
 Category: Signed abstract  boolean isContentComplete()
          Determines whether the entire content part ( ie. the inner CMS message ) of this stream was in this stream.
 Category: Signed abstract  boolean isEncrypted()
          Determines if this part, or any nested part, of this CMS message is encrypted.
 Category: Signed abstract  boolean isSigned()
          Determines if this part, or any nested part, of this CMS message is signed.
 Category: Signed  int read()
          Reads the next byte of data from the input stream.
 Category: Signed  int read(byte[] buffer)
          Reads some number of bytes from the input stream and stores them into the buffer array b.
 Category: Signed abstract  int read(byte[] buffer, int offset, int length)
          Reads up to len bytes of data from the input stream into an array of bytes.
 Category: Signed abstract  void setData(InputStream data)
          Allows the user to set the stream where the data can be found.
 Category: Signed  long skip(long n)
          Skips over and discards n bytes of data from this input stream.
 
Methods inherited from class java.io.InputStream
mark, markSupported, reset
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

_contentType

protected OID _contentType
The content type of the input stream.
Since:
JDE 4.0.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.

_data

protected InputStream _data
The input stream data.
Since:
JDE 4.0.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.

_input

protected InputStream _input
The input stream.
Since:
JDE 4.0.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.
Constructor Detail

CMSInputStream

protected CMSInputStream(InputStream input)
Creates a CMS input stream.

Parameters:
input - The input stream to read data in from. Must be non null.
Throws:
IllegalArgumentException - if input is null.
Since:
JDE 4.0.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

available

public int available()
              throws IOException
Description copied from class: InputStream
Returns the number of bytes that can be read (or skipped over) from this input stream without blocking by the next caller of a method for this input stream. The next caller might be the same thread or or another thread.

The available method for class InputStream always returns 0.

This method should be overridden by subclasses.

Overrides:
available in class InputStream
Since:
JDE 4.0.0

Following copied from class: InputStream
Returns:
the number of bytes that can be read from this input stream without blocking.
Throws:
IOException - if an I/O error occurs.
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.

close

public void close()
           throws IOException
Description copied from class: InputStream
Closes this input stream and releases any system resources associated with the stream.

The close method of InputStream does nothing.

Overrides:
close in class InputStream
Since:
JDE 4.0.0

Following copied from class: InputStream
Throws:
IOException - if an I/O error occurs.
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.

getCMSContext

public static CMSContext getCMSContext(InputStream inputStream)
                                throws ASN1EncodingException,
                                       IOException,
                                       CMSException,
                                       CryptoTokenException,
                                       KeyStoreCancelException,
                                       CryptoUnsupportedOperationException,
                                       UnsupportedCryptoSystemException,
                                       InvalidCryptoSystemException,
                                       InvalidKeyException,
                                       InvalidKeyEncodingException
Completes the first stage of a two stage processing of a cms message. The second stage is completed with a call to getCMSInputStream in which the context is passed into.

Parameters:
inputStream - The input stream to read the CMS data from. May be null.
Returns:
A CMSContext object.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getCMSInputStream

public CMSInputStream getCMSInputStream()
Returns the CMSInputStream of the inner message, if the inner message is signed or enveloped.

Otherwise this returns null if the inner content is not CMS encoded.

Returns:
The CMSInputStream.
Since:
JDE 4.0.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.

getCMSInputStream

public static CMSInputStream getCMSInputStream(CMSContext context,
                                               KeyStore keyStore)
                                        throws ASN1EncodingException,
                                               IOException,
                                               CMSException,
                                               CryptoTokenException,
                                               KeyStoreCancelException,
                                               CryptoUnsupportedOperationException,
                                               UnsupportedCryptoSystemException,
                                               InvalidCryptoSystemException,
                                               InvalidKeyException,
                                               InvalidKeyEncodingException
Finishes the second stage of the two stage processing of a cms message. By default, UI will be displayed.

The newly initialized CMSInputStream is returned.

Parameters:
context - The CMSContext created through a getCMSContext call.
keyStore - A key store containing keys used to verify signatures and decrypt messages.
Returns:
A CMSInputStream object. May be null.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getCMSInputStream

public static CMSInputStream getCMSInputStream(CMSContext context,
                                               KeyStore keyStore,
                                               SymmetricKey sessionKey)
                                        throws ASN1EncodingException,
                                               IOException,
                                               CMSException,
                                               CryptoTokenException,
                                               KeyStoreCancelException,
                                               CryptoUnsupportedOperationException,
                                               UnsupportedCryptoSystemException,
                                               InvalidCryptoSystemException,
                                               InvalidKeyException,
                                               InvalidKeyEncodingException
Finishes the second stage of the two stage processing of a CMS message. By default, UI will be displayed.

The newly initialized CMSInputStream is returned.

Parameters:
context - The CMSContext created through a getCMSContext call.
keyStore - A key store containing keys used to verify signatures and decrypt messages.
sessionKey - A symmetric key to use to decrypt the message. Can be null.
Returns:
A CMSInputStream object. May be null.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getCMSInputStream

public static CMSInputStream getCMSInputStream(CMSContext context,
                                               KeyStore keyStore,
                                               SymmetricKey sessionKey,
                                               boolean displayUI)
                                        throws ASN1EncodingException,
                                               IOException,
                                               CMSException,
                                               CryptoTokenException,
                                               KeyStoreCancelException,
                                               CryptoUnsupportedOperationException,
                                               UnsupportedCryptoSystemException,
                                               InvalidCryptoSystemException,
                                               InvalidKeyException,
                                               InvalidKeyEncodingException
Finishes the second stage of the two stage processing of a CMS message.

The newly initialized CMSInputStream is returned.

Parameters:
context - The CMSContext created through a getCMSContext call.
keyStore - A key store containing keys used to verify signatures and decrypt messages.
sessionKey - A symmetric key to use to decrypt the message. Can be null.
displayUI - A boolean which decides if UI is shown, ie. in a password prompt. This is important if this code is being run in the background.
Returns:
A CMSInputStream object. May be null.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getCMSInputStream

public static CMSInputStream getCMSInputStream(InputStream inputStream,
                                               KeyStore keyStore)
                                        throws ASN1EncodingException,
                                               IOException,
                                               CMSException,
                                               CryptoTokenException,
                                               KeyStoreCancelException,
                                               CryptoUnsupportedOperationException,
                                               UnsupportedCryptoSystemException,
                                               InvalidCryptoSystemException,
                                               InvalidKeyException,
                                               InvalidKeyEncodingException
Parses the beginning of the passed in input stream to determine what kind of CMS message it is. By default UI will be displayed.

The appropriate subtype of CMSInputStream is returned, else null if the type isn't supported.

Parameters:
inputStream - The input stream. May be null.
keyStore - A key store containing keys used to verify signatures and decrypt messages.
Returns:
A CMSInputStream object.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getCMSInputStream

public static CMSInputStream getCMSInputStream(InputStream inputStream,
                                               KeyStore keyStore,
                                               SymmetricKey sessionKey)
                                        throws ASN1EncodingException,
                                               IOException,
                                               CMSException,
                                               CryptoTokenException,
                                               KeyStoreCancelException,
                                               CryptoUnsupportedOperationException,
                                               UnsupportedCryptoSystemException,
                                               InvalidCryptoSystemException,
                                               InvalidKeyException,
                                               InvalidKeyEncodingException
Parses the beginning of the passed in input stream to determine what kind of CMS message it is. By default, UI will be displayed.

The appropriate subtype of CMSInputStream is returned, otherwise null if the type isn't supported.

Parameters:
inputStream - The input stream.
keyStore - A key store containing keys used to verify signatures and decrypt messages.
sessionKey - A symmetric key used to decrypt the message. Can be null.
Returns:
A CMSInputStream object. May be null.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getCMSInputStream

public static CMSInputStream getCMSInputStream(InputStream inputStream,
                                               KeyStore keyStore,
                                               SymmetricKey sessionKey,
                                               boolean displayUI)
                                        throws ASN1EncodingException,
                                               IOException,
                                               CMSException,
                                               CryptoTokenException,
                                               KeyStoreCancelException,
                                               CryptoUnsupportedOperationException,
                                               UnsupportedCryptoSystemException,
                                               InvalidCryptoSystemException,
                                               InvalidKeyException,
                                               InvalidKeyEncodingException
Parses the beginning of the passed in input stream to determine what kind of CMS message it is.

The appropriate subtype of CMSInputStream is returned, otherwise null if the type isn't supported.

Parameters:
inputStream - The input stream.
keyStore - A key store containing keys used to verify signatures.
sessionKey - A symmetric key used to decrypt the message. Can be null.
displayUI - A boolean which decides if UI is shown, ie. in a password prompt. This is important if this code is being run in the background.
Returns:
A CMSInputStream object. May be null.
Throws:
ASN1EncodingException - Thrown if an error occurs with the ASN1 input stream.
IOException - Thrown if an I/O error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

getContentType

public int getContentType()
Returns the content type of the inner message, either CMSContentTypes.DATA, SIGNED_DATA, ENVELOPED_DATA or COMPRESSED_DATA. Note that a CMSDataInputStream does not have an inner message, so this function returns -1 on that type of stream.

Returns:
An integer representing the content type. See CMSContentTypes.
Since:
JDE 4.0.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.

isContentComplete

public abstract boolean isContentComplete()
Determines whether the entire content part ( ie. the inner CMS message ) of this stream was in this stream.
Returns:
True if the content is complete within this stream, false if it was cut-off.
Since:
JDE 4.0.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.

isEncrypted

public abstract boolean isEncrypted()
Determines if this part, or any nested part, of this CMS message is encrypted.

Returns:
A boolean that represents whether the message part is encrypted.
Since:
JDE 4.0.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.

isSigned

public abstract boolean isSigned()
Determines if this part, or any nested part, of this CMS message is signed.

Returns:
A boolean that represents whether the message part is signed.
Since:
JDE 4.0.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.

read

public int read()
         throws IOException
Description copied from class: InputStream
Reads the next byte of data from the input stream. The value byte is returned as an int in the range 0 to 255. If no byte is available because the end of the stream has been reached, the value -1 is returned. This method blocks until input data is available, the end of the stream is detected, or an exception is thrown.

A subclass must provide an implementation of this method.

Overrides:
read in class InputStream
Since:
JDE 4.0.0

Following copied from class: InputStream
Returns:
the next byte of data, or -1 if the end of the stream is reached.
Throws:
IOException - if an I/O error occurs.
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.

read

public int read(byte[] buffer)
         throws IOException
Description copied from class: InputStream
Reads some number of bytes from the input stream and stores them into the buffer array b. The number of bytes actually read is returned as an integer. This method blocks until input data is available, end of file is detected, or an exception is thrown.

If b is null, a NullPointerException is thrown. If the length of b is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[0], the next one into b[1], and so on. The number of bytes read is, at most, equal to the length of b. Let k be the number of bytes actually read; these bytes will be stored in elements b[0] through b[k-1], leaving elements b[k] through b[b.length-1] unaffected.

If the first byte cannot be read for any reason other than end of file, then an IOException is thrown. In particular, an IOException is thrown if the input stream has been closed.

The read(b) method for class InputStream has the same effect as:

 read(b, 0, b.length) 
Overrides:
read in class InputStream
Since:
JDE 4.0.0

Following copied from class: InputStream
Parameters:
b - the buffer into which the data is read.
Returns:
the total number of bytes read into the buffer, or -1 is there is no more data because the end of the stream has been reached.
Throws:
IOException - if an I/O error occurs.
See Also:
InputStream.read(byte[], int, int)
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.

read

public abstract int read(byte[] buffer,
                         int offset,
                         int length)
                  throws IOException
Description copied from class: InputStream
Reads up to len bytes of data from the input stream into an array of bytes. An attempt is made to read as many as len bytes, but a smaller number may be read, possibly zero. The number of bytes actually read is returned as an integer.

This method blocks until input data is available, end of file is detected, or an exception is thrown.

If b is null, a NullPointerException is thrown.

If off is negative, or len is negative, or off+len is greater than the length of the array b, then an IndexOutOfBoundsException is thrown.

If len is zero, then no bytes are read and 0 is returned; otherwise, there is an attempt to read at least one byte. If no byte is available because the stream is at end of file, the value -1 is returned; otherwise, at least one byte is read and stored into b.

The first byte read is stored into element b[off], the next one into b[off+1], and so on. The number of bytes read is, at most, equal to len. Let k be the number of bytes actually read; these bytes will be stored in elements b[off] through b[off+k-1], leaving elements b[off+k] through b[off+len-1] unaffected.

In every case, elements b[0] through b[off] and elements b[off+len] through b[b.length-1] are unaffected.

If the first byte cannot be read for any reason other than end of file, then an IOException is thrown. In particular, an IOException is thrown if the input stream has been closed.

The read(b, off, len) method for class InputStream simply calls the method read() repeatedly. If the first such call results in an IOException, that exception is returned from the call to the read(b, off, len) method. If any subsequent call to read() results in a IOException, the exception is caught and treated as if it were end of file; the bytes read up to that point are stored into b and the number of bytes read before the exception occurred is returned. Subclasses are encouraged to provide a more efficient implementation of this method.

Overrides:
read in class InputStream
Since:
JDE 4.0.0

Following copied from class: InputStream
Parameters:
b - the buffer into which the data is read.
off - the start offset in array b at which the data is written.
len - the maximum number of bytes to read.
Returns:
the total number of bytes read into the buffer, or -1 if there is no more data because the end of the stream has been reached.
Throws:
IOException - if an I/O error occurs.
See Also:
InputStream.read()
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.

setData

public abstract void setData(InputStream data)
                      throws IOException,
                             CMSException,
                             CryptoTokenException,
                             KeyStoreCancelException,
                             CryptoUnsupportedOperationException,
                             UnsupportedCryptoSystemException,
                             InvalidCryptoSystemException,
                             InvalidKeyException,
                             InvalidKeyEncodingException
Allows the user to set the stream where the data can be found.

You would call this function in the case that the contents of the message is detached from the actual CMS encoding. For example, in a clear signed SMIME message, the text ( what is signed ) is in a different MIME part then the CMS encoding. You could use this function to give CMS an input stream that points to the MIME part containing the text of the message.

Parameters:
data - The input stream containing the data.
Throws:
IOException - Thrown if an IO error occurs.
CMSException - Thrown if a cms error occurs.
CryptoTokenException - Thrown if an error occurs with a crypto token or the crypto token is invalid.
KeyStoreCancelException - Thrown if the user fails to enter a password or the password is invalid.
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
UnsupportedCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidCryptoSystemException - Thrown if the specified crypto system is invalid.
InvalidKeyException - Thrown if the specified key is invalid.
InvalidKeyEncodingException - Thrown if the key is improperly formatted.
Since:
JDE 4.0.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.

skip

public long skip(long n)
          throws IOException
Description copied from class: InputStream
Skips over and discards n bytes of data from this input stream. The skip method may, for a variety of reasons, end up skipping over some smaller number of bytes, possibly 0. This may result from any of a number of conditions; reaching end of file before n bytes have been skipped is only one possibility. The actual number of bytes skipped is returned. If n is negative, no bytes are skipped.

The skip method of InputStream creates a byte array and then repeatedly reads into it until n bytes have been read or the end of the stream has been reached. Subclasses are encouraged to provide a more efficient implementation of this method.

Overrides:
skip in class InputStream
Since:
JDE 4.0.0

Following copied from class: InputStream
Parameters:
n - the number of bytes to be skipped.
Returns:
the actual number of bytes skipped.
Throws:
IOException - if an I/O error occurs.
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-2008 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.