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