|
|||||||||
| PREV CLASS NEXT CLASS | FRAMES NO FRAMES | ||||||||
| SUMMARY: NESTED | FIELD | CONSTR | METHOD | DETAIL: FIELD | CONSTR | METHOD | ||||||||
java.lang.Objectjava.io.InputStream
net.rim.device.api.crypto.cms.CMSInputStream
public abstract class CMSInputStream
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 );
CMSOutputStream| Field Summary | ||
|---|---|---|
|
protected OID |
_contentType
The content type of the input stream. |
|
protected InputStream |
_data
The input stream data. |
|
protected InputStream |
_input
The input stream. |
| Constructor Summary | ||
|---|---|---|
|
protected |
CMSInputStream(InputStream input)
Creates a CMS input stream. |
| Method Summary | ||
|---|---|---|
|
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. |
|
void |
close()
Closes this input stream and releases any system resources associated with the stream. |
|
static CMSContext |
getCMSContext(InputStream inputStream)
Completes the first stage of a two stage processing of a cms message. |
|
CMSInputStream |
getCMSInputStream()
Returns the CMSInputStream of the inner message, if the
inner message is signed or enveloped. |
|
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. |
|
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. |
|
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. |
|
static CMSInputStream |
getCMSInputStream(CMSContext context,
KeyStore keyStore)
Finishes the second stage of the two stage processing of a cms message. |
|
static CMSInputStream |
getCMSInputStream(CMSContext context,
KeyStore keyStore,
SymmetricKey sessionKey)
Finishes the second stage of the two stage processing of a CMS message. |
|
static CMSInputStream |
getCMSInputStream(CMSContext context,
KeyStore keyStore,
SymmetricKey sessionKey,
boolean displayUI)
Finishes the second stage of the two stage processing of a CMS message. |
|
int |
getContentType()
Returns the content type of the inner message, either CMSContentTypes.DATA, SIGNED_DATA,
ENVELOPED_DATA or COMPRESSED_DATA. |
|
abstract boolean |
isContentComplete()
Determines whether the entire content part ( ie. the inner CMS message ) of this stream was in this stream. |
|
abstract boolean |
isEncrypted()
Determines if this part, or any nested part, of this CMS message is encrypted. |
|
abstract boolean |
isSigned()
Determines if this part, or any nested part, of this CMS message is signed. |
|
int |
read()
Reads the next byte of data from the input stream. |
|
int |
read(byte[] buffer)
Reads some number of bytes from the input stream and stores them into the buffer array b. |
|
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. |
|
abstract void |
setData(InputStream data)
Allows the user to set the stream where the data can be found. |
|
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 |
|---|
protected InputStream _input
protected InputStream _data
protected OID _contentType
| Constructor Detail |
|---|
protected CMSInputStream(InputStream input)
input - The input stream to read data in from. Must be non null.
IllegalArgumentException - if input is null.| Method Detail |
|---|
public int getContentType()
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.
CMSContentTypes.public CMSInputStream getCMSInputStream()
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.
CMSInputStream.
public static CMSInputStream getCMSInputStream(InputStream inputStream,
KeyStore keyStore)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
The appropriate subtype of CMSInputStream is returned, else null if the type isn't supported.
inputStream - The input stream. May be null.keyStore - A key store containing keys used to verify signatures and decrypt messages.
CMSInputStream object.
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.
public static CMSInputStream getCMSInputStream(InputStream inputStream,
KeyStore keyStore,
SymmetricKey sessionKey)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
The appropriate subtype of CMSInputStream is returned, otherwise null if the type isn't supported.
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.
CMSInputStream object. May be null.
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.
public static CMSInputStream getCMSInputStream(InputStream inputStream,
KeyStore keyStore,
SymmetricKey sessionKey,
boolean displayUI)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
The appropriate subtype of CMSInputStream is returned, otherwise null if the type isn't supported.
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.
CMSInputStream object. May be null.
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.
public static CMSContext getCMSContext(InputStream inputStream)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
getCMSInputStream in which the context is passed into.
inputStream - The input stream to read the CMS data from. May be null.
CMSContext object.
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.
public static CMSInputStream getCMSInputStream(CMSContext context,
KeyStore keyStore)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
The newly initialized CMSInputStream
is returned.
context - The CMSContext created through a getCMSContext call.keyStore - A key store containing keys used to verify signatures and decrypt messages.
CMSInputStream object. May be null.
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.
public static CMSInputStream getCMSInputStream(CMSContext context,
KeyStore keyStore,
SymmetricKey sessionKey)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
The newly initialized CMSInputStream is returned.
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.
CMSInputStream object. May be null.
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.
public static CMSInputStream getCMSInputStream(CMSContext context,
KeyStore keyStore,
SymmetricKey sessionKey,
boolean displayUI)
throws ASN1EncodingException,
IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
The newly initialized CMSInputStream is returned.
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.
CMSInputStream object. May be null.
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.
public abstract int read(byte[] buffer,
int offset,
int length)
throws IOException
InputStreamlen 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.
read in class InputStreambuffer - the buffer into which the data is read.offset - the start offset in array b
at which the data is written.length - the maximum number of bytes to read.
-1 if there is no more data because the end of
the stream has been reached.
IOException - if an I/O error occurs.InputStream.read()
public int read()
throws IOException
InputStreamint 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.
read in class InputStream-1 if the end of the
stream is reached.
IOException - if an I/O error occurs.
public int read(byte[] buffer)
throws IOException
InputStreamb. 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)
read in class InputStreambuffer - the buffer into which the data is read.
-1 is there is no more data because the end of
the stream has been reached.
IOException - if an I/O error occurs.InputStream.read(byte[], int, int)
public long skip(long n)
throws IOException
InputStreamn 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.
skip in class InputStreamn - the number of bytes to be skipped.
IOException - if an I/O error occurs.
public int available()
throws IOException
InputStream The available method for class InputStream
always returns 0.
This method should be overridden by subclasses.
available in class InputStreamIOException - if an I/O error occurs.
public void close()
throws IOException
InputStream The close method of InputStream does
nothing.
close in class InputStreamIOException - if an I/O error occurs.public abstract boolean isSigned()
public abstract boolean isEncrypted()
public abstract void setData(InputStream data)
throws IOException,
CMSException,
CryptoTokenException,
KeyStoreCancelException,
CryptoUnsupportedOperationException,
UnsupportedCryptoSystemException,
InvalidCryptoSystemException,
InvalidKeyException,
InvalidKeyEncodingException
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.
data - The input stream containing the data.
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.public abstract boolean isContentComplete()
|
|||||||||
| 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.