001package org.apache.commons.ssl.org.bouncycastle.asn1.cms;
002
003import java.io.IOException;
004
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1ObjectIdentifier;
007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1SequenceParser;
008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObjectParser;
009
010/**
011 * <a href="http://tools.ietf.org/html/rfc5652#section-3">RFC 5652</a> {@link ContentInfo} object parser.
012 *
013 * <pre>
014 * ContentInfo ::= SEQUENCE {
015 *     contentType ContentType,
016 *     content [0] EXPLICIT ANY DEFINED BY contentType OPTIONAL }
017 * </pre>
018 */
019public class ContentInfoParser
020{
021    private ASN1ObjectIdentifier contentType;
022    private ASN1TaggedObjectParser content;
023
024    public ContentInfoParser(
025        ASN1SequenceParser seq)
026        throws IOException
027    {
028        contentType = (ASN1ObjectIdentifier)seq.readObject();
029        content = (ASN1TaggedObjectParser)seq.readObject();
030    }
031
032    public ASN1ObjectIdentifier getContentType()
033    {
034        return contentType;
035    }
036
037    public ASN1Encodable getContent(
038        int  tag)
039        throws IOException
040    {
041        if (content != null)
042        {
043            return content.getObjectParser(tag, true);
044        }
045
046        return null;
047    }
048}