1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage org.bouncycastle.asn1.misc;
2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport org.bouncycastle.asn1.*;
4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic class IDEACBCPar
6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    extends ASN1Encodable
7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project{
8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    ASN1OctetString  iv;
9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public static IDEACBCPar getInstance(
11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        Object  o)
12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (o instanceof IDEACBCPar)
14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return (IDEACBCPar)o;
16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        else if (o instanceof ASN1Sequence)
18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return new IDEACBCPar((ASN1Sequence)o);
20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        throw new IllegalArgumentException("unknown object in IDEACBCPar factory");
23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public IDEACBCPar(
26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        byte[]  iv)
27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        this.iv = new DEROctetString(iv);
29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
30f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public IDEACBCPar(
32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ASN1Sequence  seq)
33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (seq.size() == 1)
35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            iv = (ASN1OctetString)seq.getObjectAt(0);
37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        else
39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
40f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            iv = null;
41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public byte[] getIV()
45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (iv != null)
47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return iv.getOctets();
49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        else
51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            return null;
53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
56f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    /**
57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * Produce an object suitable for an ASN1OutputStream.
58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * <pre>
59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * IDEA-CBCPar ::= SEQUENCE {
60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                      iv    OCTET STRING OPTIONAL -- exactly 8 octets
61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     *                  }
62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     * </pre>
63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project     */
64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    public DERObject toASN1Object()
65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    {
66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        ASN1EncodableVector  v = new ASN1EncodableVector();
67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        if (iv != null)
69f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        {
70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project            v.add(iv);
71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        }
72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project
73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project        return new DERSequence(v);
74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project    }
75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project}
76