Home | History | Annotate | Download | only in x500
      1 package org.bouncycastle.asn1.x500;
      2 
      3 import org.bouncycastle.asn1.ASN1Choice;
      4 import org.bouncycastle.asn1.ASN1Encodable;
      5 import org.bouncycastle.asn1.ASN1Object;
      6 import org.bouncycastle.asn1.ASN1Primitive;
      7 import org.bouncycastle.asn1.ASN1String;
      8 import org.bouncycastle.asn1.ASN1TaggedObject;
      9 import org.bouncycastle.asn1.DERBMPString;
     10 import org.bouncycastle.asn1.DERPrintableString;
     11 import org.bouncycastle.asn1.DERT61String;
     12 import org.bouncycastle.asn1.DERUTF8String;
     13 import org.bouncycastle.asn1.DERUniversalString;
     14 
     15 /**
     16  * The DirectoryString CHOICE object.
     17  */
     18 public class DirectoryString
     19     extends ASN1Object
     20     implements ASN1Choice, ASN1String
     21 {
     22     private ASN1String string;
     23 
     24     public static DirectoryString getInstance(Object o)
     25     {
     26         if (o == null || o instanceof DirectoryString)
     27         {
     28             return (DirectoryString)o;
     29         }
     30 
     31         if (o instanceof DERT61String)
     32         {
     33             return new DirectoryString((DERT61String)o);
     34         }
     35 
     36         if (o instanceof DERPrintableString)
     37         {
     38             return new DirectoryString((DERPrintableString)o);
     39         }
     40 
     41         if (o instanceof DERUniversalString)
     42         {
     43             return new DirectoryString((DERUniversalString)o);
     44         }
     45 
     46         if (o instanceof DERUTF8String)
     47         {
     48             return new DirectoryString((DERUTF8String)o);
     49         }
     50 
     51         if (o instanceof DERBMPString)
     52         {
     53             return new DirectoryString((DERBMPString)o);
     54         }
     55 
     56         throw new IllegalArgumentException("illegal object in getInstance: " + o.getClass().getName());
     57     }
     58 
     59     public static DirectoryString getInstance(ASN1TaggedObject o, boolean explicit)
     60     {
     61         if (!explicit)
     62         {
     63             throw new IllegalArgumentException("choice item must be explicitly tagged");
     64         }
     65 
     66         return getInstance(o.getObject());
     67     }
     68 
     69     private DirectoryString(
     70         DERT61String string)
     71     {
     72         this.string = string;
     73     }
     74 
     75     private DirectoryString(
     76         DERPrintableString string)
     77     {
     78         this.string = string;
     79     }
     80 
     81     private DirectoryString(
     82         DERUniversalString string)
     83     {
     84         this.string = string;
     85     }
     86 
     87     private DirectoryString(
     88         DERUTF8String string)
     89     {
     90         this.string = string;
     91     }
     92 
     93     private DirectoryString(
     94         DERBMPString string)
     95     {
     96         this.string = string;
     97     }
     98 
     99     public DirectoryString(String string)
    100     {
    101         this.string = new DERUTF8String(string);
    102     }
    103 
    104     public String getString()
    105     {
    106         return string.getString();
    107     }
    108 
    109     public String toString()
    110     {
    111         return string.getString();
    112     }
    113 
    114     /**
    115      * <pre>
    116      *  DirectoryString ::= CHOICE {
    117      *    teletexString               TeletexString (SIZE (1..MAX)),
    118      *    printableString             PrintableString (SIZE (1..MAX)),
    119      *    universalString             UniversalString (SIZE (1..MAX)),
    120      *    utf8String                  UTF8String (SIZE (1..MAX)),
    121      *    bmpString                   BMPString (SIZE (1..MAX))  }
    122      * </pre>
    123      */
    124     public ASN1Primitive toASN1Primitive()
    125     {
    126         return ((ASN1Encodable)string).toASN1Primitive();
    127     }
    128 }
    129