AttCertIssuer.java revision e6bf3e8dfa2804891a82075cb469b736321b4827
1package org.bouncycastle.asn1.x509; 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.ASN1Sequence; 8import org.bouncycastle.asn1.ASN1TaggedObject; 9import org.bouncycastle.asn1.DERTaggedObject; 10 11public class AttCertIssuer 12 extends ASN1Object 13 implements ASN1Choice 14{ 15 ASN1Encodable obj; 16 ASN1Primitive choiceObj; 17 18 public static AttCertIssuer getInstance( 19 Object obj) 20 { 21 if (obj == null || obj instanceof AttCertIssuer) 22 { 23 return (AttCertIssuer)obj; 24 } 25 else if (obj instanceof V2Form) 26 { 27 return new AttCertIssuer(V2Form.getInstance(obj)); 28 } 29 else if (obj instanceof GeneralNames) 30 { 31 return new AttCertIssuer((GeneralNames)obj); 32 } 33 else if (obj instanceof ASN1TaggedObject) 34 { 35 return new AttCertIssuer(V2Form.getInstance((ASN1TaggedObject)obj, false)); 36 } 37 else if (obj instanceof ASN1Sequence) 38 { 39 return new AttCertIssuer(GeneralNames.getInstance(obj)); 40 } 41 42 throw new IllegalArgumentException("unknown object in factory: " + obj.getClass().getName()); 43 } 44 45 public static AttCertIssuer getInstance( 46 ASN1TaggedObject obj, 47 boolean explicit) 48 { 49 return getInstance(obj.getObject()); // must be explicitly tagged 50 } 51 52 /** 53 * Don't use this one if you are trying to be RFC 3281 compliant. 54 * Use it for v1 attribute certificates only. 55 * 56 * @param names our GeneralNames structure 57 */ 58 public AttCertIssuer( 59 GeneralNames names) 60 { 61 obj = names; 62 choiceObj = obj.toASN1Primitive(); 63 } 64 65 public AttCertIssuer( 66 V2Form v2Form) 67 { 68 obj = v2Form; 69 choiceObj = new DERTaggedObject(false, 0, obj); 70 } 71 72 public ASN1Encodable getIssuer() 73 { 74 return obj; 75 } 76 77 /** 78 * Produce an object suitable for an ASN1OutputStream. 79 * <pre> 80 * AttCertIssuer ::= CHOICE { 81 * v1Form GeneralNames, -- MUST NOT be used in this 82 * -- profile 83 * v2Form [0] V2Form -- v2 only 84 * } 85 * </pre> 86 */ 87 public ASN1Primitive toASN1Primitive() 88 { 89 return choiceObj; 90 } 91} 92