001package org.apache.commons.ssl.org.bouncycastle.asn1.cmp; 002 003import java.util.Enumeration; 004 005import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1EncodableVector; 006import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Object; 007import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Primitive; 008import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1Sequence; 009import org.apache.commons.ssl.org.bouncycastle.asn1.ASN1TaggedObject; 010import org.apache.commons.ssl.org.bouncycastle.asn1.DERSequence; 011import org.apache.commons.ssl.org.bouncycastle.asn1.DERUTF8String; 012 013public class PKIFreeText 014 extends ASN1Object 015{ 016 ASN1Sequence strings; 017 018 public static PKIFreeText getInstance( 019 ASN1TaggedObject obj, 020 boolean explicit) 021 { 022 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 023 } 024 025 public static PKIFreeText getInstance( 026 Object obj) 027 { 028 if (obj instanceof PKIFreeText) 029 { 030 return (PKIFreeText)obj; 031 } 032 else if (obj != null) 033 { 034 return new PKIFreeText(ASN1Sequence.getInstance(obj)); 035 } 036 037 return null; 038 } 039 040 private PKIFreeText( 041 ASN1Sequence seq) 042 { 043 Enumeration e = seq.getObjects(); 044 while (e.hasMoreElements()) 045 { 046 if (!(e.nextElement() instanceof DERUTF8String)) 047 { 048 throw new IllegalArgumentException("attempt to insert non UTF8 STRING into PKIFreeText"); 049 } 050 } 051 052 strings = seq; 053 } 054 055 public PKIFreeText( 056 DERUTF8String p) 057 { 058 strings = new DERSequence(p); 059 } 060 061 public PKIFreeText( 062 String p) 063 { 064 this(new DERUTF8String(p)); 065 } 066 067 public PKIFreeText( 068 DERUTF8String[] strs) 069 { 070 strings = new DERSequence(strs); 071 } 072 073 public PKIFreeText( 074 String[] strs) 075 { 076 ASN1EncodableVector v = new ASN1EncodableVector(); 077 for (int i = 0; i < strs.length; i++) 078 { 079 v.add(new DERUTF8String(strs[i])); 080 } 081 strings = new DERSequence(v); 082 } 083 084 /** 085 * Return the number of string elements present. 086 * 087 * @return number of elements present. 088 */ 089 public int size() 090 { 091 return strings.size(); 092 } 093 094 /** 095 * Return the UTF8STRING at index i. 096 * 097 * @param i index of the string of interest 098 * @return the string at index i. 099 */ 100 public DERUTF8String getStringAt( 101 int i) 102 { 103 return (DERUTF8String)strings.getObjectAt(i); 104 } 105 106 /** 107 * <pre> 108 * PKIFreeText ::= SEQUENCE SIZE (1..MAX) OF UTF8String 109 * </pre> 110 */ 111 public ASN1Primitive toASN1Primitive() 112 { 113 return strings; 114 } 115}