1 /** 2 * 3 * Licensed to the Apache Software Foundation (ASF) under one or more 4 * contributor license agreements. See the NOTICE file distributed with 5 * this work for additional information regarding copyright ownership. 6 * The ASF licenses this file to You under the Apache License, Version 2.0 7 * (the "License"); you may not use this file except in compliance with 8 * the License. You may obtain a copy of the License at 9 * 10 * http://www.apache.org/licenses/LICENSE-2.0 11 * 12 * Unless required by applicable law or agreed to in writing, software 13 * distributed under the License is distributed on an "AS IS" BASIS, 14 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 15 * See the License for the specific language governing permissions and 16 * limitations under the License. 17 */ 18 19 package org.apache.geronimo.util.asn1.x509; 20 21 import org.apache.geronimo.util.asn1.ASN1Encodable; 22 import org.apache.geronimo.util.asn1.ASN1Sequence; 23 import org.apache.geronimo.util.asn1.ASN1TaggedObject; 24 import org.apache.geronimo.util.asn1.DERBoolean; 25 import org.apache.geronimo.util.asn1.DERObject; 26 27 /** 28 * IssuingDistributionPoint ::= SEQUENCE { 29 * distributionPoint [0] DistributionPointName OPTIONAL, 30 * onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, 31 * onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, 32 * onlySomeReasons [3] ReasonFlags OPTIONAL, 33 * indirectCRL [4] BOOLEAN DEFAULT FALSE, 34 * onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE } 35 */ 36 public class IssuingDistributionPoint 37 extends ASN1Encodable 38 { 39 private boolean onlyContainsUserCerts; 40 private boolean onlyContainsCACerts; 41 private boolean indirectCRL; 42 private boolean onlyContainsAttributeCerts; 43 44 private ASN1Sequence seq; 45 46 public static IssuingDistributionPoint getInstance( 47 ASN1TaggedObject obj, 48 boolean explicit) 49 { 50 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 51 } 52 53 public static IssuingDistributionPoint getInstance( 54 Object obj) 55 { 56 if (obj == null || obj instanceof IssuingDistributionPoint) 57 { 58 return (IssuingDistributionPoint)obj; 59 } 60 else if (obj instanceof ASN1Sequence) 61 { 62 return new IssuingDistributionPoint((ASN1Sequence)obj); 63 } 64 65 throw new IllegalArgumentException("unknown object in factory"); 66 } 67 68 /** 69 * Constructor from ASN1Sequence 70 */ 71 public IssuingDistributionPoint( 72 ASN1Sequence seq) 73 { 74 this.seq = seq; 75 76 for (int i = 0; i != seq.size(); i++) 77 { 78 ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(i); 79 80 switch (o.getTagNo()) 81 { 82 case 0: 83 break; 84 case 1: 85 onlyContainsUserCerts = DERBoolean.getInstance(o, false).isTrue(); 86 break; 87 case 2: 88 onlyContainsCACerts = DERBoolean.getInstance(o, false).isTrue(); 89 break; 90 case 3: 91 break; 92 case 4: 93 indirectCRL = DERBoolean.getInstance(o, false).isTrue(); 94 break; 95 case 5: 96 onlyContainsAttributeCerts = DERBoolean.getInstance(o, false).isTrue(); 97 break; 98 default: 99 throw new IllegalArgumentException("unknown tag in IssuingDistributionPoint"); 100 } 101 } 102 } 103 104 public boolean onlyContainsUserCerts() 105 { 106 return onlyContainsUserCerts; 107 } 108 109 public boolean onlyContainsCACerts() 110 { 111 return onlyContainsCACerts; 112 } 113 114 public boolean isIndirectCRL() 115 { 116 return indirectCRL; 117 } 118 119 public boolean onlyContainsAttributeCerts() 120 { 121 return onlyContainsAttributeCerts; 122 } 123 124 public DERObject toASN1Object() 125 { 126 return seq; 127 } 128 }