GeneralNames.java revision e1142c149e244797ce73b0e7fad40816e447a817
1package org.bouncycastle.asn1.x509; 2 3import org.bouncycastle.asn1.ASN1Object; 4import org.bouncycastle.asn1.ASN1ObjectIdentifier; 5import org.bouncycastle.asn1.ASN1Primitive; 6import org.bouncycastle.asn1.ASN1Sequence; 7import org.bouncycastle.asn1.ASN1TaggedObject; 8import org.bouncycastle.asn1.DERSequence; 9 10public class GeneralNames 11 extends ASN1Object 12{ 13 private final GeneralName[] names; 14 15 public static GeneralNames getInstance( 16 Object obj) 17 { 18 if (obj instanceof GeneralNames) 19 { 20 return (GeneralNames)obj; 21 } 22 23 if (obj != null) 24 { 25 return new GeneralNames(ASN1Sequence.getInstance(obj)); 26 } 27 28 return null; 29 } 30 31 public static GeneralNames getInstance( 32 ASN1TaggedObject obj, 33 boolean explicit) 34 { 35 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 36 } 37 38 public static GeneralNames fromExtensions(Extensions extensions, ASN1ObjectIdentifier extOID) 39 { 40 return GeneralNames.getInstance(extensions.getExtensionParsedValue(extOID)); 41 } 42 43 /** 44 * Construct a GeneralNames object containing one GeneralName. 45 * 46 * @param name the name to be contained. 47 */ 48 public GeneralNames( 49 GeneralName name) 50 { 51 this.names = new GeneralName[] { name }; 52 } 53 54 55 public GeneralNames( 56 GeneralName[] names) 57 { 58 this.names = names; 59 } 60 61 private GeneralNames( 62 ASN1Sequence seq) 63 { 64 this.names = new GeneralName[seq.size()]; 65 66 for (int i = 0; i != seq.size(); i++) 67 { 68 names[i] = GeneralName.getInstance(seq.getObjectAt(i)); 69 } 70 } 71 72 public GeneralName[] getNames() 73 { 74 GeneralName[] tmp = new GeneralName[names.length]; 75 76 System.arraycopy(names, 0, tmp, 0, names.length); 77 78 return tmp; 79 } 80 81 /** 82 * Produce an object suitable for an ASN1OutputStream. 83 * <pre> 84 * GeneralNames ::= SEQUENCE SIZE {1..MAX} OF GeneralName 85 * </pre> 86 */ 87 public ASN1Primitive toASN1Primitive() 88 { 89 return new DERSequence(names); 90 } 91 92 public String toString() 93 { 94 StringBuffer buf = new StringBuffer(); 95 String sep = System.getProperty("line.separator"); 96 97 buf.append("GeneralNames:"); 98 buf.append(sep); 99 100 for (int i = 0; i != names.length; i++) 101 { 102 buf.append(" "); 103 buf.append(names[i]); 104 buf.append(sep); 105 } 106 return buf.toString(); 107 } 108} 109