CMSAuthenticatedDataParser (Bouncy Castle Library 1.54 API Specification)
Date: 2015-12-29

org.bouncycastle.cms

## Class CMSAuthenticatedDataParser

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

-     public class CMSAuthenticatedDataParser
      extends CMSContentInfoParser

  Parsing class for an CMS Authenticated 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.

            CMSAuthenticatedDataParser     ad = new CMSAuthenticatedDataParser(inputStream);

            RecipientInformationStore  recipients = ad.getRecipientInfos();

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

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

                CMSTypedStream recData = recipient.getContentStream(new JceKeyTransAuthenticatedRecipient(privateKey).setProvider("BC"));

                processDataStream(recData.getContentStream());

                if (!Arrays.equals(ad.getMac(), recipient.getMac())
                {
                    System.err.println("Data corrupted!!!!");
                }
            }

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

                CMSAuthenticatedDataParser     ep = new CMSAuthenticatedDataParser(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
    `CMSAuthenticatedDataParser(byte[] envelopedData)`
    `CMSAuthenticatedDataParser(byte[] envelopedData, DigestCalculatorProvider digestCalculatorProvider)`
    `CMSAuthenticatedDataParser(java.io.InputStream envelopedData)`
    `CMSAuthenticatedDataParser(java.io.InputStream envelopedData, DigestCalculatorProvider digestCalculatorProvider)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `org.bouncycastle.asn1.cms.AttributeTable` | `getAuthAttrs()` return a table of the unauthenticated attributes indexed by the OID of the attribute.
    `byte[]` | `getContentDigest()` This will only be valid after the content has been read.
    `byte[]` | `getMac()`
    `java.lang.String` | `getMacAlgOID()` return the object identifier for the mac algorithm.
    `org.bouncycastle.asn1.x509.AlgorithmIdentifier` | `getMacAlgorithm()` Return the MAC algorithm details for the MAC associated with the data in this object.
    `byte[]` | `getMacAlgParams()` return the ASN.1 encoded encryption algorithm parameters, or null if there aren't any.
    `OriginatorInformation` | `getOriginatorInfo()` Return the originator information associated with this message if present.
    `RecipientInformationStore` | `getRecipientInfos()` return a store of the intended recipients for this message
    `org.bouncycastle.asn1.cms.AttributeTable` | `getUnauthAttrs()` return a table of the unauthenticated 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

    - #### CMSAuthenticatedDataParser

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

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

    - #### CMSAuthenticatedDataParser

          public CMSAuthenticatedDataParser(byte[] envelopedData,
                                    DigestCalculatorProvider digestCalculatorProvider)
                                     throws CMSException,
                                            java.io.IOException

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

    - #### CMSAuthenticatedDataParser

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

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

    - #### CMSAuthenticatedDataParser

          public CMSAuthenticatedDataParser(java.io.InputStream envelopedData,
                                    DigestCalculatorProvider digestCalculatorProvider)
                                     throws CMSException,
                                            java.io.IOException

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

  - ### Method Detail

    - #### getOriginatorInfo

          public OriginatorInformation getOriginatorInfo()

      Return the originator information associated with this message if present.
      Returns:
        OriginatorInformation, null if not present.

    - #### getMacAlgorithm

          public org.bouncycastle.asn1.x509.AlgorithmIdentifier getMacAlgorithm()

      Return the MAC algorithm details for the MAC associated with the data in this object.
      Returns:
        AlgorithmIdentifier representing the MAC algorithm.

    - #### getMacAlgOID

          public java.lang.String getMacAlgOID()

      return the object identifier for the mac algorithm.

    - #### getMacAlgParams

          public byte[] getMacAlgParams()

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

    - #### getRecipientInfos

          public RecipientInformationStore getRecipientInfos()

      return a store of the intended recipients for this message

    - #### getMac

          public byte[] getMac()
                        throws java.io.IOException

      Throws:
        `java.io.IOException`

    - #### getAuthAttrs

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

      return a table of the unauthenticated attributes indexed by the OID of the attribute.
      Throws:
        `java.io.IOException`

    - #### getUnauthAttrs

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

      return a table of the unauthenticated attributes indexed by the OID of the attribute.
      Throws:
        `java.io.IOException`

    - #### getContentDigest

          public byte[] getContentDigest()

      This will only be valid after the content has been read.
      Returns:
        the contents of the messageDigest attribute, if available. Null if not present.