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