001package org.apache.commons.ssl.org.bouncycastle.asn1.pkcs;
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.BERSequence;
008import org.apache.commons.ssl.org.bouncycastle.asn1.DLSequence;
009
010public class AuthenticatedSafe
011    extends ASN1Object
012{
013    private ContentInfo[]    info;
014    private boolean  isBer = true;
015
016    private AuthenticatedSafe(
017        ASN1Sequence  seq)
018    {
019        info = new ContentInfo[seq.size()];
020
021        for (int i = 0; i != info.length; i++)
022        {
023            info[i] = ContentInfo.getInstance(seq.getObjectAt(i));
024        }
025
026        isBer = seq instanceof BERSequence;
027    }
028
029    public static AuthenticatedSafe getInstance(
030        Object o)
031    {
032        if (o instanceof AuthenticatedSafe)
033        {
034            return (AuthenticatedSafe)o;
035        }
036
037        if (o != null)
038        {
039            return new AuthenticatedSafe(ASN1Sequence.getInstance(o));
040        }
041
042        return null;
043    }
044
045    public AuthenticatedSafe(
046        ContentInfo[]       info)
047    {
048        this.info = info;
049    }
050
051    public ContentInfo[] getContentInfo()
052    {
053        return info;
054    }
055
056    public ASN1Primitive toASN1Primitive()
057    {
058        ASN1EncodableVector v = new ASN1EncodableVector();
059
060        for (int i = 0; i != info.length; i++)
061        {
062            v.add(info[i]);
063        }
064
065        if (isBer)
066        {
067            return new BERSequence(v);
068        }
069        else
070        {
071            return new DLSequence(v);
072        }
073    }
074}