001package org.apache.commons.ssl.org.bouncycastle.asn1.cmp;
002
003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector;
004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object;
005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive;
006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence;
007import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence;
008
009public class ProtectedPart
010    extends ASN1Object
011{
012    private PKIHeader header;
013    private PKIBody body;
014
015    private ProtectedPart(ASN1Sequence seq)
016    {
017        header = PKIHeader.getInstance(seq.getObjectAt(0));
018        body = PKIBody.getInstance(seq.getObjectAt(1));
019    }
020
021    public static ProtectedPart getInstance(Object o)
022    {
023        if (o instanceof ProtectedPart)
024        {
025            return (ProtectedPart)o;
026        }
027
028        if (o != null)
029        {
030            return new ProtectedPart(ASN1Sequence.getInstance(o));
031        }
032
033        return null;
034    }
035
036    public ProtectedPart(PKIHeader header, PKIBody body)
037    {
038        this.header = header;
039        this.body = body;
040    }
041
042    public PKIHeader getHeader()
043    {
044        return header;
045    }
046
047    public PKIBody getBody()
048    {
049        return body;
050    }
051
052    /**
053     * <pre>
054     * ProtectedPart ::= SEQUENCE {
055     *                    header    PKIHeader,
056     *                    body      PKIBody
057     * }
058     * </pre>
059     * @return a basic ASN.1 object representation.
060     */
061    public ASN1Primitive toASN1Primitive()
062    {
063        ASN1EncodableVector v = new ASN1EncodableVector();
064
065        v.add(header);
066        v.add(body);
067
068        return new DERSequence(v);
069    }
070}