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

java.lang.Object
  extended by java.io.OutputStream
      extended by net.rim.device.api.crypto.cms.CMSOutputStream
          extended by net.rim.device.api.crypto.cms.CMSEnvelopedDataOutputStream

public final class CMSEnvelopedDataOutputStream
extends CMSOutputStream

Defines a CMS enveloped data output stream to handle a CMS enveloped data message.

See Also:
CMSEnvelopedDataInputStream
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:
BlackBerry API 4.0.0

Field Summary
 
Fields inherited from class net.rim.device.api.crypto.cms.CMSOutputStream
_contentType, _dataOut, _out, _outer
 
Constructor Summary
Category: Signed CMSEnvelopedDataOutputStream(OutputStream out, int contentType, boolean outer)
          Creates a CMS enveloped data output stream so that all output is encrypted and formatted in an enveloped data object.
Category: Signed CMSEnvelopedDataOutputStream(OutputStream out, int contentType, boolean outer, int contentAlgorithm)
          Creates a CMS enveloped data outputstream (CMSEnvelopedDataOutputStream) so that all output is encrypted and formatted in an enveloped data object.
 
Method Summary
Category: Signed  void addAttribute(CMSAttribute attribute)
          Add an attribute to the unprotected attributes field of this message.
Category: Signed  void addRecipient(byte[] password)
          Adds a recipient who will use a password to encrypt the session key.
Category: Signed  void addRecipient(Certificate certificate)
          Add a recipient using a default algorithm.
Category: Signed  void addRecipient(Certificate certificate, int algorithm, PrivateKey privateKey, Certificate originator)
          Adds a recipient.
Category: Signed  void close()
          Closes this output stream and releases any system resources associated with this stream.
Category: Signed  SymmetricKey getSessionKey()
          Returns the session key used to encrypt the message.
Category: Signed  void write(byte[] data, int offset, int length)
          Writes len bytes from the specified byte array starting at offset off to this output stream.
 
Methods inherited from class net.rim.device.api.crypto.cms.CMSOutputStream
flush, write, write
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 



Constructor Detail

CMSEnvelopedDataOutputStream

public CMSEnvelopedDataOutputStream(OutputStream out,
                                    int contentType,
                                    boolean outer)
                             throws CryptoUnsupportedOperationException
Creates a CMS enveloped data output stream so that all output is encrypted and formatted in an enveloped data object.

It uses TripleDES by default as the content encryption algorithm.

Parameters:
out - The output stream to use.
contentType - The type of data being enveloped.
outer - A boolean to determine if this is the outer CMS stream, since CMS streams can be nested within themselves. The stream needs to know if it is the "outer" layer so it can do some extra processing. For example, if you wish to sign and then encrypt a message, the CMSSignedDataOutputStream will be the "outer" layer.
Throws:
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
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:
BlackBerry API 4.0.0

CMSEnvelopedDataOutputStream

public CMSEnvelopedDataOutputStream(OutputStream out,
                                    int contentType,
                                    boolean outer,
                                    int contentAlgorithm)
                             throws CryptoUnsupportedOperationException
Creates a CMS enveloped data outputstream (CMSEnvelopedDataOutputStream) so that all output is encrypted and formatted in an enveloped data object.

Parameters:
out - The output stream to use.
contentType - The type of data being enveloped.
outer - A boolean to determine if this is the outer CMS stream, since CMS streams can be nested within themselves. The stream needs to know if it is the "outer" layer so it can do some extra processing. For example, if you wish to sign and then encrypt a message, the CMSSignedDataOutputStream will be the "outer" layer.
contentAlgorithm - A constant representing which content encryption algorithm to use, such as CMSEnvelopedDataConstants.TRIPLE_DES.
Throws:
CryptoUnsupportedOperationException - Thrown if a call is made to an unsupported operation.
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:
BlackBerry API 4.0.0


Method Detail

addAttribute

public void addAttribute(CMSAttribute attribute)
Add an attribute to the unprotected attributes field of this message.

Parameters:
attribute - The CMSAttribute to add.
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:
BlackBerry API 4.0.0

addRecipient

public void addRecipient(Certificate certificate,
                         int algorithm,
                         PrivateKey privateKey,
                         Certificate originator)
Adds a recipient.

Note that if the private key and originator cert are passed in, the public key in the certificate must correspond to the private key passed in.

Parameters:
certificate - The certificate of the recipient.
algorithm - The algorithm used to encrypt the session key, from CMSEnvelopedDataConstants.
privateKey - The private key to use ( only used in MQV currently ). May be null.
originator - The certificate of the originator ( only used in MQV currently ). May be null.
Throws:
IllegalArgumentException - Thrown if the public/private key does not correspond to the algorithm or the key usage field in the certificate does not allow the specified algorithm.
IllegalStateException - Thrown if this is called after a call to write is made.
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:
BlackBerry API 4.0.0

addRecipient

public void addRecipient(Certificate certificate)
Add a recipient using a default algorithm.
RSA Private Key RSA Encryption with PKCS1 or OAEP depending on the certificate
EC Private Key EC DH Key Agreement
DH Private Key DH Key Agreement

Parameters:
certificate - The certificate of the recipient.
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:
BlackBerry API 4.0.0

addRecipient

public void addRecipient(byte[] password)
Adds a recipient who will use a password to encrypt the session key.

Parameters:
password - A byte array containing the password to encrypt the session key with.
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:
BlackBerry API 4.0.0

getSessionKey

public SymmetricKey getSessionKey()
Returns the session key used to encrypt the message.

Returns:
The SymmetricKey representing the session key.
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:
BlackBerry API 4.0.0

write

public void write(byte[] data,
                  int offset,
                  int length)
           throws IOException
Description copied from class: OutputStream
Writes len bytes from the specified byte array starting at offset off to this output stream. The general contract for write(b, off, len) is that some of the bytes in the array b are written to the output stream in order; element b[off] is the first byte written and b[off+len-1] is the last byte written by this operation.

The write method of OutputStream calls the write method of one argument on each of the bytes to be written out. Subclasses are encouraged to override this method and provide a more efficient implementation.

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.

Specified by:
write in class CMSOutputStream
Parameters:
data - the data.
offset - the start offset in the data.
length - the number of bytes to write.
Throws:
IOException - if an I/O error occurs. In particular, an IOException is thrown if the output stream is closed.
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:
BlackBerry API 4.0.0

close

public void close()
           throws IOException
Description copied from class: OutputStream
Closes this output stream and releases any system resources associated with this stream. The general contract of close is that it closes the output stream. A closed stream cannot perform output operations and cannot be reopened.

The close method of OutputStream does nothing.

Overrides:
close in class CMSOutputStream
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.
Since:
BlackBerry API 4.0.0





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.