001package org.apache.commons.ssl.org.bouncycastle.asn1.x500; 002 003import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Choice; 004import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Encodable; 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1String; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 009import org.apache.commons.ssl.org.bouncycastle.asn1.DERBMPString; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERPrintableString; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERT61String; 012import org.apache.commons.ssl.org.bouncycastle.asn1.DERUTF8String; 013import org.apache.commons.ssl.org.bouncycastle.asn1.DERUniversalString; 014 015public class DirectoryString 016 extends ASN1Object 017 implements ASN1Choice, ASN1String 018{ 019 private ASN1String string; 020 021 public static DirectoryString getInstance(Object o) 022 { 023 if (o == null || o instanceof DirectoryString) 024 { 025 return (DirectoryString)o; 026 } 027 028 if (o instanceof DERT61String) 029 { 030 return new DirectoryString((DERT61String)o); 031 } 032 033 if (o instanceof DERPrintableString) 034 { 035 return new DirectoryString((DERPrintableString)o); 036 } 037 038 if (o instanceof DERUniversalString) 039 { 040 return new DirectoryString((DERUniversalString)o); 041 } 042 043 if (o instanceof DERUTF8String) 044 { 045 return new DirectoryString((DERUTF8String)o); 046 } 047 048 if (o instanceof DERBMPString) 049 { 050 return new DirectoryString((DERBMPString)o); 051 } 052 053 throw new IllegalArgumentException("illegal object in getInstance: " + o.getClass().getName()); 054 } 055 056 public static DirectoryString getInstance(ASN1TaggedObject o, boolean explicit) 057 { 058 if (!explicit) 059 { 060 throw new IllegalArgumentException("choice item must be explicitly tagged"); 061 } 062 063 return getInstance(o.getObject()); 064 } 065 066 private DirectoryString( 067 DERT61String string) 068 { 069 this.string = string; 070 } 071 072 private DirectoryString( 073 DERPrintableString string) 074 { 075 this.string = string; 076 } 077 078 private DirectoryString( 079 DERUniversalString string) 080 { 081 this.string = string; 082 } 083 084 private DirectoryString( 085 DERUTF8String string) 086 { 087 this.string = string; 088 } 089 090 private DirectoryString( 091 DERBMPString string) 092 { 093 this.string = string; 094 } 095 096 public DirectoryString(String string) 097 { 098 this.string = new DERUTF8String(string); 099 } 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}