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; 009import org.apache.commons.ssl.org.bouncycastle.asn1.x509.AlgorithmIdentifier; 010 011/** 012 * Parser for <a href="http://tools.ietf.org/html/rfc5652#section-6.1">RFC 5652</a> EncryptedContentInfo object. 013 * <p> 014 * <pre> 015 * EncryptedContentInfo ::= SEQUENCE { 016 * contentType ContentType, 017 * contentEncryptionAlgorithm ContentEncryptionAlgorithmIdentifier, 018 * encryptedContent [0] IMPLICIT EncryptedContent OPTIONAL 019 * } 020 * </pre> 021 */ 022public class EncryptedContentInfoParser 023{ 024 private ASN1ObjectIdentifier _contentType; 025 private AlgorithmIdentifier _contentEncryptionAlgorithm; 026 private ASN1TaggedObjectParser _encryptedContent; 027 028 public EncryptedContentInfoParser( 029 ASN1SequenceParser seq) 030 throws IOException 031 { 032 _contentType = (ASN1ObjectIdentifier)seq.readObject(); 033 _contentEncryptionAlgorithm = AlgorithmIdentifier.getInstance(seq.readObject().toASN1Primitive()); 034 _encryptedContent = (ASN1TaggedObjectParser)seq.readObject(); 035 } 036 037 public ASN1ObjectIdentifier getContentType() 038 { 039 return _contentType; 040 } 041 042 public AlgorithmIdentifier getContentEncryptionAlgorithm() 043 { 044 return _contentEncryptionAlgorithm; 045 } 046 047 public ASN1Encodable getEncryptedContent( 048 int tag) 049 throws IOException 050 { 051 return _encryptedContent.getObjectParser(tag, false); 052 } 053}