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