|
|||||||||
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
net.rim.device.api.crypto.cms.CMSSignedDataInputStream
public final class CMSSignedDataInputStream
Implements a CMS signed data input stream so that a message that has been signed in the CMS format can be properly parsed and verified.
CMSSignedDataOutputStream
Field Summary |
---|
Fields inherited from class net.rim.device.api.crypto.cms.CMSInputStream |
---|
_contentType, _data, _input |
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. |
|
CMSSignedReceiptOutputStream |
createSignedReceiptStream(CMSSignedDataOutputStream output,
CMSEntityIdentifier signer)
Creates a CMSSignedReceiptOutputStream corresponding to the receipt request found in this CMSSignedDataInputStream. |
|
X509CertificateRevocationList |
getCRL()
Returns the CRL found in this message. |
|
Certificate[] |
getCertificates()
Returns an array of the certificates found in this message, or null if none are present. |
|
CMSReceiptData[] |
getReceiptInformation()
Returns the CMSReceiptData necessary to verify the signed receipts you may make as a result of this message. |
|
String[] |
getSignedReceiptRequestors(CMSEntityIdentifier signer)
Returns all of the strings representing the entities to send the signed receipts to. |
|
CMSAttribute |
getSignerAttribute(OID oid,
CMSEntityIdentifier signer)
Return the attribute, associated with the signer of this message, specified by this OID. |
|
Enumeration |
getSignerAttributes(CMSEntityIdentifier signer)
Returns the attributes associated with the signer. |
|
Certificate |
getSignerCertificate(CMSEntityIdentifier signer)
Returns the certificate of the first verified signer. |
|
Certificate[] |
getSignerCertificateChain(CMSEntityIdentifier signer)
Returns the first certificate chain of the specified signer. |
|
Certificate[][] |
getSignerCertificateChains(CMSEntityIdentifier signer)
Returns all of the certificate chain for the specified signer. |
|
CMSEntityIdentifier[] |
getSigners()
Returns a list of all of the signers found in this message. |
|
boolean |
isCertificatePresent()
Returns true if there are certificates in the message, else returns false. |
|
boolean |
isContentComplete()
Determines whether the entire content part ( ie. the inner CMS message ) of this stream was in this stream. |
|
boolean |
isDataPresent()
Returns true if the data has been set, either by being present in the message or else from a setData call. |
|
boolean |
isEncrypted()
Determines if this part, or any nested part, of this CMS message is encrypted. |
|
boolean |
isSigned()
Returns true since this message is signed. |
|
boolean |
isSignedReceipt()
Returns true if the this signed data input stream contains a signed receipt. |
|
boolean |
isSignedReceiptRequested()
A method to determine if any of the signers of this method are requesting a signed receipt for this message. |
|
boolean |
isSignedReceiptRequested(CMSEntityIdentifier signer,
String recipient)
A method to determine if recipient is required to send a signed receipt
or not. |
|
boolean |
isSignerCertificatePresent(CMSEntityIdentifier signer)
Returns true if the signer's certificate is present in the message. |
|
boolean |
isVerificationPossible()
Returns a boolean to indicate whether or not enough data has been recieved to verify the signature on this message ( ie. all the signed data and the signatures ). |
|
int |
read(byte[] buffer,
int offset,
int length)
Reads up to len bytes of data from the input stream into
an array of bytes. |
|
void |
setData(InputStream data)
Allows the user to set the stream where the signed data can be found. |
|
CMSReceiptData |
setReceiptData(CMSReceiptData[] receiptData)
Set the receipt data for this stream. |
|
long |
skip(long n)
Skips over and discards n bytes of data from this input
stream. |
|
void |
verify(CMSEntityIdentifier signer)
Verifies the signature on the message ( as well as any signatures on nested signed data messages ) specified by the signer . |
Methods inherited from class net.rim.device.api.crypto.cms.CMSInputStream |
---|
close, getCMSContext, getCMSInputStream, getCMSInputStream, getCMSInputStream, getCMSInputStream, getCMSInputStream, getCMSInputStream, getCMSInputStream, getContentType, read, read |
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 |
Method Detail |
---|
public boolean isVerificationPossible()
public boolean isSignerCertificatePresent(CMSEntityIdentifier signer) throws CMSNoSuchEntityException
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
signer
- a CMSEntityIdentifier identifying the signer to check the certificate of.
CMSNoSuchEntityException
- Thrown if signer
does not represent a signature on the message.public boolean isSignedReceipt()
public boolean isSignedReceiptRequested(CMSEntityIdentifier signer, String recipient) throws CMSNoSuchEntityException
recipient
is required to send a signed receipt
or not.
signer
- The CMSEntityIdentifier used to decide which set of signed attributes to consider.recipient
- The recipient to look up to see if it needs a signed receipt.
CMSNoSuchEntityException
- Thrown if the entity identifier is not present in this signed message.public boolean isSignedReceiptRequested()
public CMSReceiptData[] getReceiptInformation()
public String[] getSignedReceiptRequestors(CMSEntityIdentifier signer) throws CMSNoSuchEntityException
signer
- The CMSEntityIdentifier used to decode which set of signed attributes to consider.
CMSNoSuchEntityException
- Thrown if the entity identifier is not present in this signed message.public CMSSignedReceiptOutputStream createSignedReceiptStream(CMSSignedDataOutputStream output, CMSEntityIdentifier signer) throws CMSNoSuchEntityException, CryptoUnsupportedOperationException
output
- The CMSSignedDataOutputStream that the signed receipt will be contained in. You have to be sure,
when you create the CMSSignedDataOutputStream, that you set it's content type to be CMSContentTypes.SIGNED_RECEIPT.signer
- The CMSEntityIdentifier which identifies the signed attributes that contain the receipt request.
signer
or
the output stream could not be created for some reason.
CMSNoSuchEntityException
- Thrown if the entity identifier is not present in this signed message.
CryptoUnsupportedOperationException
- Thrown if the digest algorithm is not supported.public CMSReceiptData setReceiptData(CMSReceiptData[] receiptData)
receiptData
is necessary in order to verify the signature on this message. The stream will scan the array in order to
find the specific CMSReceiptData object needed to verify this message.
receiptData
- The CMSReceiptData[] needed to verify the message.
receiptData
, that corresponds to the inner
signed receipt. This will be null if the inner message is not a signed receipt, or no match is found.public boolean isSigned()
isSigned
in class CMSInputStream
public boolean isEncrypted()
CMSInputStream
isEncrypted
in class CMSInputStream
public int read(byte[] buffer, int offset, int length) throws IOException
InputStream
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.
read
in class CMSInputStream
buffer
- 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 available() throws IOException
InputStream
The available
method for class InputStream
always returns 0
.
This method should be overridden by subclasses.
available
in class CMSInputStream
IOException
- if an I/O error occurs.public long skip(long n) throws IOException
InputStream
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.
skip
in class CMSInputStream
n
- the number of bytes to be skipped.
IOException
- if an I/O error occurs.public boolean isDataPresent()
setData
call.
public 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.
setData
in class CMSInputStream
data
- The input stream containing the data.
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 Certificate getSignerCertificate(CMSEntityIdentifier signer) throws CMSNoSuchEntityException
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
signer
- a CMSEntityIdentifier identifying the signer to try and get the certificate of.
CMSNoSuchEntityException
- Thrown if signer
does not represent a signature on the message.public Certificate[] getSignerCertificateChain(CMSEntityIdentifier signer) throws CMSNoSuchEntityException
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
signer
- a CMSEntityIdentifier identifying the signer to try and get the certificate chain of.
CMSNoSuchEntityException
- Thrown if signer
does not represent a signature on the message.public Certificate[][] getSignerCertificateChains(CMSEntityIdentifier signer) throws CMSNoSuchEntityException
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
signer
- a CMSEntityIdentifier identifying the signer to try and get the certificate chain of.
CMSNoSuchEntityException
- Thrown if signer
does not represent a signature on the message.public X509CertificateRevocationList getCRL() throws CRLEncodingException, CRLVerificationException, IOException, CryptoTokenException, CryptoUnsupportedOperationException
X509CertificateRevocationList
found in this message. May be null.
CRLEncodingException
- Thrown if the crl was not encoded properly.
CRLVerificationException
- Thrown if the response could not be verified. For example
if the CRL issuer is not present in the verification keystore, or the verification keystore is null.
IOException
- Thrown if an I/O error occurs.
CryptoTokenException
- Thrown if an error occured with a crypto token.
CryptoUnsupportedOperationException
- Thrown if a call is made to
an unsupported operation.public CMSAttribute getSignerAttribute(OID oid, CMSEntityIdentifier signer) throws CMSNoSuchEntityException
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
oid
- The OID used to specify the desired attribute.signer
- a CMSEntityIdentifier identifying the signature to pull attributes from
CMSAttribute
corresponding to the OID. May be null.
CMSNoSuchEntityException
- Thrown if signer
does not represent a signature on the message.public Enumeration getSignerAttributes(CMSEntityIdentifier signer) throws CMSNoSuchEntityException
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
signer
- a CMSEntityIdentifier identifying the signature to pull attributes from
CMSAttributes
.
CMSNoSuchEntityException
- Thrown if signer
does not represent a signature on the message.public Certificate[] getCertificates()
public boolean isCertificatePresent()
public void verify(CMSEntityIdentifier signer) throws CMSException, CryptoTokenException, CryptoUnsupportedOperationException
signer
.
If the signer
does not represent a signature on this message,
then a CMSNoSuchEntityException exception is thrown.
signer
- a CMSEntityIdentifier identifying the signature to try and verify
CMSException
- Thrown if an error occurs while interpreting the
data or if the signature did not verify.
CryptoTokenException
- Thrown if an error occurs with a crypto token.
CryptoUnsupportedOperationException
- Thrown if the operation was not supported.
CMSNoCertificateFoundException
- Thrown if no certificate is found.public CMSEntityIdentifier[] getSigners() throws CMSParsingException
CMSEntityIdentifiers
representing the
signers of this message. May be null.
CMSParsingException
- Thrown if a CMS parsing error occurs.public boolean isContentComplete()
CMSInputStream
isContentComplete
in class CMSInputStream
|
|||||||||
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.