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

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.CMSSignedDataOutputStream

public final class CMSSignedDataOutputStream
extends CMSOutputStream

Implements a CMSSigned data output stream so that outgoing data can be signed and formatted as per CMS signed data messages.

See Also:
CMSSignedDataOutputStream
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 CMSSignedDataOutputStream(OutputStream out, int contentType, boolean outer)
          Creates a signed data output stream.
Category: Signed CMSSignedDataOutputStream(OutputStream out, int contentType, boolean dataOut, boolean outer, boolean writeCerts)
          Creates a signed data output stream.
Category: Signed CMSSignedDataOutputStream(OutputStream out, int contentType, boolean dataOut, boolean outer, boolean writeCerts, boolean usePKCS7Format)
          Creates a signed data output stream.
 
Method Summary
Category: Signed  void addCertificates(Certificate[] certificates)
          Adds certificates to the message in the normal, IETF RFC manner.
Category: Signed  void addReceiptRequest(CMSReceiptRequest receiptRequest)
          Add a signed receipt request to this message.
Category: Signed  void addSigner(CMSSigner signer)
          Adds a signer to the message.
Category: Signed  void close()
          Closes this output stream and releases any system resources associated with this stream.
Category: Signed  CMSReceiptData[] getReceiptInformation()
          Returns the CMSReceiptData necessary to verify the signed receipts you receive as a result of requesting them.
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

CMSSignedDataOutputStream

public CMSSignedDataOutputStream(OutputStream out,
                                 int contentType,
                                 boolean outer)
Creates a signed data output stream. By default, no certificates are written out and the underlying data is in the CMS format, rather than the older PKCS7 format.

Parameters:
out - The output stream to write data too.
contentType - The type of data being signed. These constants are defined in CMSContentTypes.
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.
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

CMSSignedDataOutputStream

public CMSSignedDataOutputStream(OutputStream out,
                                 int contentType,
                                 boolean dataOut,
                                 boolean outer,
                                 boolean writeCerts)
Creates a signed data output stream. By default, the underlying data is in the CMS format, rather than the older PKCS7 format.

Parameters:
out - The output stream to write data too.
contentType - The type of data being signed. These constants are defined in CMSContentTypes.
dataOut - Set to true if the data is to be written to the stream. The user would set this variable to false if they were trying to create a clear signed SMIME message. In that case, they would be want to have the text of the message to only appear in the clear, and not encoded within the CMS data. To accomplish this, they would work with a MIMEOutputStream and set dataOut to false here in the CMSSignedDataOutputStream.
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.
writeCerts - A boolean to decide if we should write out the certificates in the message or not. This covers all certificates added to the stream through addSigner calls.
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

CMSSignedDataOutputStream

public CMSSignedDataOutputStream(OutputStream out,
                                 int contentType,
                                 boolean dataOut,
                                 boolean outer,
                                 boolean writeCerts,
                                 boolean usePKCS7Format)
Creates a signed data output stream.

Parameters:
out - The output stream to write data too.
contentType - The type of data being signed. These constants are defined in CMSContentTypes.
dataOut - Set to true if the data is to be written to the stream. The user would set this variable to false if they were trying to create a clear signed SMIME message. In that case, they would be want to have the text of the message to only appear in the clear, and not encoded within the CMS data. To accomplish this, they would work with a MIMEOutputStream and set dataOut to false here in the CMSSignedDataOutputStream.
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.
writeCerts - A boolean to decide if we should write out the certificates in the message or not. This covers all certificates added to the stream through addSigner calls.
usePKCS7Format - True if you want to use the PKCS7 format for the underlying, rather than the CMS format. Use the PKCS7 format for legacy applications.
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

addSigner

public void addSigner(CMSSigner signer)
               throws NoSuchAlgorithmException,
                      IllegalStateException
Adds a signer to the message. You can add multiple signers to a stream by making multiple calls to this function. This will allow multiple signatures to appear on the message.

Note that if the writeCerts boolean was set to false, when this object was created, any certificates added through the signer object will NOT be written to the output stream.

Parameters:
signer - The signature signer used to sign the message.
Throws:
NoSuchAlgorithmException - Thrown if the algorithm of the signer if not supported.
IllegalStateException - Thrown if this method 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

addCertificates

public void addCertificates(Certificate[] certificates)
Adds certificates to the message in the normal, IETF RFC manner.

Note that if the writeCerts boolean was set to true, when this object was created, any certificates added here will NOT be written to the output stream.

Used when you need to make a certs-only message.

Parameters:
certificates - An array of certificates to write out, these will be appended to any previously added certificates.
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

addReceiptRequest

public void addReceiptRequest(CMSReceiptRequest receiptRequest)
Add a signed receipt request to this message. Note that the receipt request will be added to the signed attributes of each CMSSigner for this message.

Note you are not allowed to request a receipt on a signed receipt so trying to do that will throw an IllegalArgumentException.

Note that calling this function multiple times will mean that the new receiptRequest will replace the old receipt request.

Parameters:
receiptRequest - A CMSReceiptRequest representing a signed receipt you are requesting
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

getReceiptInformation

public CMSReceiptData[] getReceiptInformation()
Returns the CMSReceiptData necessary to verify the signed receipts you receive as a result of requesting them. This method should be called after you make a close() call on this stream, otherwise null will be returned.

Returns:
CMSReceiptData[] The array of CMSReceiptData necessary to verify the signed receipts you receive. Will be null if no signed receipt request was added, or if close() hasn't been called yet.
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.