001 /** 002 * Licensed to the Apache Software Foundation (ASF) under one or more 003 * contributor license agreements. See the NOTICE file distributed with 004 * this work for additional information regarding copyright ownership. 005 * The ASF licenses this file to You under the Apache License, Version 2.0 006 * (the "License"); you may not use this file except in compliance with 007 * the License. You may obtain a copy of the License at 008 * 009 * http://www.apache.org/licenses/LICENSE-2.0 010 * 011 * Unless required by applicable law or agreed to in writing, software 012 * distributed under the License is distributed on an "AS IS" BASIS, 013 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 014 * See the License for the specific language governing permissions and 015 * limitations under the License. 016 */ 017 018 package org.apache.geronimo.util.asn1.x509; 019 020 import org.apache.geronimo.util.asn1.ASN1Encodable; 021 import org.apache.geronimo.util.asn1.ASN1Sequence; 022 import org.apache.geronimo.util.asn1.ASN1TaggedObject; 023 import org.apache.geronimo.util.asn1.DERBoolean; 024 import org.apache.geronimo.util.asn1.DERObject; 025 026 /** 027 * IssuingDistributionPoint ::= SEQUENCE { 028 * distributionPoint [0] DistributionPointName OPTIONAL, 029 * onlyContainsUserCerts [1] BOOLEAN DEFAULT FALSE, 030 * onlyContainsCACerts [2] BOOLEAN DEFAULT FALSE, 031 * onlySomeReasons [3] ReasonFlags OPTIONAL, 032 * indirectCRL [4] BOOLEAN DEFAULT FALSE, 033 * onlyContainsAttributeCerts [5] BOOLEAN DEFAULT FALSE } 034 */ 035 public class IssuingDistributionPoint 036 extends ASN1Encodable 037 { 038 private boolean onlyContainsUserCerts; 039 private boolean onlyContainsCACerts; 040 private boolean indirectCRL; 041 private boolean onlyContainsAttributeCerts; 042 043 private ASN1Sequence seq; 044 045 public static IssuingDistributionPoint getInstance( 046 ASN1TaggedObject obj, 047 boolean explicit) 048 { 049 return getInstance(ASN1Sequence.getInstance(obj, explicit)); 050 } 051 052 public static IssuingDistributionPoint getInstance( 053 Object obj) 054 { 055 if (obj == null || obj instanceof IssuingDistributionPoint) 056 { 057 return (IssuingDistributionPoint)obj; 058 } 059 else if (obj instanceof ASN1Sequence) 060 { 061 return new IssuingDistributionPoint((ASN1Sequence)obj); 062 } 063 064 throw new IllegalArgumentException("unknown object in factory"); 065 } 066 067 /** 068 * Constructor from ASN1Sequence 069 */ 070 public IssuingDistributionPoint( 071 ASN1Sequence seq) 072 { 073 this.seq = seq; 074 075 for (int i = 0; i != seq.size(); i++) 076 { 077 ASN1TaggedObject o = (ASN1TaggedObject)seq.getObjectAt(i); 078 079 switch (o.getTagNo()) 080 { 081 case 0: 082 break; 083 case 1: 084 onlyContainsUserCerts = DERBoolean.getInstance(o, false).isTrue(); 085 break; 086 case 2: 087 onlyContainsCACerts = DERBoolean.getInstance(o, false).isTrue(); 088 break; 089 case 3: 090 break; 091 case 4: 092 indirectCRL = DERBoolean.getInstance(o, false).isTrue(); 093 break; 094 case 5: 095 onlyContainsAttributeCerts = DERBoolean.getInstance(o, false).isTrue(); 096 break; 097 default: 098 throw new IllegalArgumentException("unknown tag in IssuingDistributionPoint"); 099 } 100 } 101 } 102 103 public boolean onlyContainsUserCerts() 104 { 105 return onlyContainsUserCerts; 106 } 107 108 public boolean onlyContainsCACerts() 109 { 110 return onlyContainsCACerts; 111 } 112 113 public boolean isIndirectCRL() 114 { 115 return indirectCRL; 116 } 117 118 public boolean onlyContainsAttributeCerts() 119 { 120 return onlyContainsAttributeCerts; 121 } 122 123 public DERObject toASN1Object() 124 { 125 return seq; 126 } 127 }