1package org.bouncycastle.asn1.x509; 2 3import org.bouncycastle.asn1.ASN1Encodable; 4import org.bouncycastle.asn1.ASN1Sequence; 5import org.bouncycastle.asn1.ASN1TaggedObject; 6import org.bouncycastle.asn1.DERBoolean; 7import org.bouncycastle.asn1.DERObject; 8 9/** 10 * IssuingDistributionPoint ::= SEQUENCE { 11 * distributionPoint [0] DistributionPointName OPTIONAL, 12 * onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, 13 * onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, 14 * onlySomeReasons [3] ReasonFlags OPTIONAL, 15 * indirectCRL [4] BOOLEAN DEFAULT FALSE, 16 * onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE } 17 */ 18public class IssuingDistributionPoint 19 extends ASN1Encodable 20{ 21 private boolean onlyContainsUserCerts; 22 private boolean onlyContainsCACerts; 23 private boolean indirectCRL; 24 private boolean onlyContainsAttributeCerts; 25 26 private ASN1Sequence seq; 27 28 public static IssuingDistributionPoint getInstance( 29 ASN1TaggedObject obj, 30 boolean explicit) 31 { 32 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 33 } 34 35 public static IssuingDistributionPoint getInstance( 36 Object obj) 37 { 38 if (obj == null || obj instanceof IssuingDistributionPoint) 39 { 40 return (IssuingDistributionPoint)obj; 41 } 42 else if (obj instanceof ASN1Sequence) 43 { 44 return new IssuingDistributionPoint((ASN1Sequence)obj); 45 } 46 47 throw new IllegalArgumentException("unknown object in factory"); 48 } 49 50 /** 51 * Constructor from ASN1Sequence 52 */ 53 public IssuingDistributionPoint( 54 ASN1Sequence seq) 55 { 56 this.seq = seq; 57 58 for (int i = 0; i != seq.size(); i++) 59 { 60 ASN1TaggedObject o = ASN1TaggedObject.getInstance(seq.getObjectAt(i)); 61 62 switch (o.getTagNo()) 63 { 64 case 0: 65 break; 66 case 1: 67 onlyContainsUserCerts = DERBoolean.getInstance(o, false).isTrue(); 68 break; 69 case 2: 70 onlyContainsCACerts = DERBoolean.getInstance(o, false).isTrue(); 71 break; 72 case 3: 73 break; 74 case 4: 75 indirectCRL = DERBoolean.getInstance(o, false).isTrue(); 76 break; 77 case 5: 78 onlyContainsAttributeCerts = DERBoolean.getInstance(o, false).isTrue(); 79 break; 80 default: 81 throw new IllegalArgumentException("unknown tag in IssuingDistributionPoint"); 82 } 83 } 84 } 85 86 public boolean onlyContainsUserCerts() 87 { 88 return onlyContainsUserCerts; 89 } 90 91 public boolean onlyContainsCACerts() 92 { 93 return onlyContainsCACerts; 94 } 95 96 public boolean isIndirectCRL() 97 { 98 return indirectCRL; 99 } 100 101 public boolean onlyContainsAttributeCerts() 102 { 103 return onlyContainsAttributeCerts; 104 } 105 106 public DERObject toASN1Object() 107 { 108 return seq; 109 } 110} 111