16e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompackage org.bouncycastle.asn1.x500;
26e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
36e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1Choice;
46e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1Encodable;
54c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Object;
64c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstromimport org.bouncycastle.asn1.ASN1Primitive;
76e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1String;
86e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.ASN1TaggedObject;
96e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERBMPString;
106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERPrintableString;
116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERT61String;
126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERUTF8String;
136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstromimport org.bouncycastle.asn1.DERUniversalString;
146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrompublic class DirectoryString
164c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    extends ASN1Object
176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    implements ASN1Choice, ASN1String
186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom{
196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private ASN1String string;
206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
216e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public static DirectoryString getInstance(Object o)
226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        if (o == null || o instanceof DirectoryString)
246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return (DirectoryString)o;
266e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
276e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
286e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (o instanceof DERT61String)
296e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
306e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return new DirectoryString((DERT61String)o);
316e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
326e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
336e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (o instanceof DERPrintableString)
346e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
356e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return new DirectoryString((DERPrintableString)o);
366e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
376e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
386e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (o instanceof DERUniversalString)
396e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
406e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return new DirectoryString((DERUniversalString)o);
416e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
426e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
436e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (o instanceof DERUTF8String)
446e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
456e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return new DirectoryString((DERUTF8String)o);
466e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
476e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
486e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (o instanceof DERBMPString)
496e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
506e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            return new DirectoryString((DERBMPString)o);
516e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
526e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
536e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        throw new IllegalArgumentException("illegal object in getInstance: " + o.getClass().getName());
546e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
556e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
566e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public static DirectoryString getInstance(ASN1TaggedObject o, boolean explicit)
576e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
586e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        if (!explicit)
596e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        {
606e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom            throw new IllegalArgumentException("choice item must be explicitly tagged");
616e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        }
626e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
636e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return getInstance(o.getObject());
646e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
656e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
666e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private DirectoryString(
676e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        DERT61String string)
686e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
696e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.string = string;
706e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
716e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
726e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private DirectoryString(
736e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        DERPrintableString string)
746e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
756e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.string = string;
766e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
776e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
786e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private DirectoryString(
796e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        DERUniversalString string)
806e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
816e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.string = string;
826e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
836e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
846e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private DirectoryString(
856e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        DERUTF8String string)
866e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
876e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.string = string;
886e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
896e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
906e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    private DirectoryString(
916e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        DERBMPString string)
926e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
936e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.string = string;
946e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
956e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
966e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public DirectoryString(String string)
976e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
986e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        this.string = new DERUTF8String(string);
996e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
1006e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
1016e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public String getString()
1026e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
1036e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return string.getString();
1046e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
1056e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
1066e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    public String toString()
1076e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
1086e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom        return string.getString();
1096e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
1106e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom
1116e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    /**
1126e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * <pre>
1136e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *  DirectoryString ::= CHOICE {
1146e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *    teletexString               TeletexString (SIZE (1..MAX)),
1156e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *    printableString             PrintableString (SIZE (1..MAX)),
1166e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *    universalString             UniversalString (SIZE (1..MAX)),
1176e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *    utf8String                  UTF8String (SIZE (1..MAX)),
1186e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     *    bmpString                   BMPString (SIZE (1..MAX))  }
1196e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     * </pre>
1206e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom     */
1214c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom    public ASN1Primitive toASN1Primitive()
1226e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    {
1234c111300c39cb2e27f07fc2ae3b00e23ed4443b2Brian Carlstrom        return ((ASN1Encodable)string).toASN1Primitive();
1246e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom    }
1256e736056d64d0e33b26cf9f7c4e351b496241fdeBrian Carlstrom}
126