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