org.bouncycastle.cms

## Class CMSEnvelopedDataParser

- java.lang.Object
- - org.bouncycastle.cms.CMSContentInfoParser
  - - org.bouncycastle.cms.CMSEnvelopedDataParser

Direct Known Subclasses:
  SMIMEEnvelopedParser

    public class CMSEnvelopedDataParser
    extends CMSContentInfoParser

Parsing class for an CMS Enveloped Data object from an input stream.

Note: that because we are in a streaming mode only one recipient can be tried and it is important that the methods on the parser are called in the appropriate order.

Example of use - assuming the first recipient matches the private key we have.

          CMSEnvelopedDataParser     ep = new CMSEnvelopedDataParser(inputStream);

          RecipientInformationStore  recipients = ep.getRecipientInfos();

          Collection  c = recipients.getRecipients();
          Iterator    it = c.iterator();

          if (it.hasNext())
          {
              RecipientInformation   recipient = (RecipientInformation)it.next();

              CMSTypedStream recData = recipient.getContentStream(privateKey, "BC");

              processDataStream(recData.getContentStream());
          }

Note: this class does not introduce buffering - if you are processing large files you should create the parser with:

              CMSEnvelopedDataParser     ep = new CMSEnvelopedDataParser(new BufferedInputStream(inputStream, bufSize));

where bufSize is a suitably large buffer size.

### Field Summary

### Fields inherited from class org.bouncycastle.cms.CMSContentInfoParser

`_contentInfo, _data`

### Constructor Summary

Constructors
Constructor and Description
`CMSEnvelopedDataParser(byte[] envelopedData)`
`CMSEnvelopedDataParser(java.io.InputStream envelopedData)`

### Method Summary

Methods
`java.lang.String` `getEncryptionAlgOID()` return the object identifier for the content encryption algorithm.
`java.security.AlgorithmParameters` `getEncryptionAlgorithmParameters(java.security.Provider provider)` Return an AlgorithmParameters object giving the encryption parameters used to encrypt the message content.
`java.security.AlgorithmParameters` `getEncryptionAlgorithmParameters(java.lang.String provider)` Return an AlgorithmParameters object giving the encryption parameters used to encrypt the message content.
`byte[]` `getEncryptionAlgParams()` return the ASN.1 encoded encryption algorithm parameters, or null if there aren't any.
`RecipientInformationStore` `getRecipientInfos()` return a store of the intended recipients for this message
`org.bouncycastle.asn1.cms.AttributeTable` `getUnprotectedAttributes()` return a table of the unprotected attributes indexed by the OID of the attribute.

### Methods inherited from class org.bouncycastle.cms.CMSContentInfoParser

`close`

### Methods inherited from class java.lang.Object

`clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

### Constructor Detail

#### CMSEnvelopedDataParser

    public CMSEnvelopedDataParser(byte[] envelopedData)
                           throws CMSException,
                                  java.io.IOException

Throws:
  `CMSException`
  `java.io.IOException`

#### CMSEnvelopedDataParser

    public CMSEnvelopedDataParser(java.io.InputStream envelopedData)
                           throws CMSException,
                                  java.io.IOException

Throws:
  `CMSException`
  `java.io.IOException`

### Method Detail

#### getEncryptionAlgOID

    public java.lang.String getEncryptionAlgOID()

return the object identifier for the content encryption algorithm.

#### getEncryptionAlgParams

    public byte[] getEncryptionAlgParams()

return the ASN.1 encoded encryption algorithm parameters, or null if there aren't any.

#### getEncryptionAlgorithmParameters

    public java.security.AlgorithmParameters getEncryptionAlgorithmParameters(java.lang.String provider)
                                                                       throws CMSException,
                                                                              java.security.NoSuchProviderException

Return an AlgorithmParameters object giving the encryption parameters used to encrypt the message content.

Parameters:
  `provider` - the name of the provider to generate the parameters for.
Returns:
  the parameters object, null if there is not one.
Throws:
  `CMSException` - if the algorithm cannot be found, or the parameters can't be parsed.
  `java.security.NoSuchProviderException` - if the provider cannot be found.

#### getEncryptionAlgorithmParameters

    public java.security.AlgorithmParameters getEncryptionAlgorithmParameters(java.security.Provider provider)
                                                                       throws CMSException

Return an AlgorithmParameters object giving the encryption parameters used to encrypt the message content.

Parameters:
  `provider` - the provider to generate the parameters for.
Returns:
  the parameters object, null if there is not one.
Throws:
  `CMSException` - if the algorithm cannot be found, or the parameters can't be parsed.

#### getRecipientInfos

    public RecipientInformationStore getRecipientInfos()

return a store of the intended recipients for this message

#### getUnprotectedAttributes

    public org.bouncycastle.asn1.cms.AttributeTable getUnprotectedAttributes()
                                                                      throws java.io.IOException

return a table of the unprotected attributes indexed by the OID of the attribute.

Throws:
  `java.io.IOException`