1b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampackage org.bouncycastle.asn1.pkcs;
2b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
3b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1EncodableVector;
44c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object;
54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive;
6b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.ASN1Sequence;
7b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallamimport org.bouncycastle.asn1.BERSequence;
84c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.DLSequence;
9b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
10b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallampublic class AuthenticatedSafe
114c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    extends ASN1Object
12b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam{
134c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private ContentInfo[]    info;
144c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private boolean  isBer = true;
15b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    private AuthenticatedSafe(
17b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        ASN1Sequence  seq)
18b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
19b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        info = new ContentInfo[seq.size()];
20b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
21b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        for (int i = 0; i != info.length; i++)
22b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
23b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            info[i] = ContentInfo.getInstance(seq.getObjectAt(i));
24b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
254c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
264c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        isBer = seq instanceof BERSequence;
274c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    }
284c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
294c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public static AuthenticatedSafe getInstance(
304c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        Object o)
314c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    {
324c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        if (o instanceof AuthenticatedSafe)
334c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
344c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return (AuthenticatedSafe)o;
354c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
364c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
374c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        if (o != null)
384c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
394c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return new AuthenticatedSafe(ASN1Sequence.getInstance(o));
404c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
414c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom
424c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return null;
43b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
44b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
45b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public AuthenticatedSafe(
46b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        ContentInfo[]       info)
47b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
48b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        this.info = info;
49b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
50b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
51b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    public ContentInfo[] getContentInfo()
52b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
53b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        return info;
54b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
55b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
564c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive toASN1Primitive()
57b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    {
584c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        ASN1EncodableVector v = new ASN1EncodableVector();
59b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
60b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        for (int i = 0; i != info.length; i++)
61b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        {
62b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam            v.add(info[i]);
63b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam        }
64b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam
654c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        if (isBer)
664c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
674c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return new BERSequence(v);
684c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
694c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        else
704c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        {
714c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom            return new DLSequence(v);
724c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        }
73b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam    }
74b61a96e7ef1a78acf013bbf08fe537e5b5f129caPeter Hallam}
75