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 java.util.Enumeration; 022 023 import org.apache.geronimo.util.asn1.ASN1Encodable; 024 import org.apache.geronimo.util.asn1.ASN1EncodableVector; 025 import org.apache.geronimo.util.asn1.ASN1Sequence; 026 import org.apache.geronimo.util.asn1.ASN1TaggedObject; 027 import org.apache.geronimo.util.asn1.DERObject; 028 import org.apache.geronimo.util.asn1.DERSequence; 029 import org.apache.geronimo.util.asn1.DERTaggedObject; 030 031 public class NameConstraints 032 extends ASN1Encodable 033 { 034 ASN1Sequence permitted, excluded; 035 036 public NameConstraints( 037 ASN1Sequence seq) 038 { 039 Enumeration e = seq.getObjects(); 040 while (e.hasMoreElements()) 041 { 042 ASN1TaggedObject o = (ASN1TaggedObject)e.nextElement(); 043 switch (o.getTagNo()) 044 { 045 case 0: 046 permitted = ASN1Sequence.getInstance(o, false); 047 break; 048 case 1: 049 excluded = ASN1Sequence.getInstance(o, false); 050 break; 051 } 052 } 053 } 054 055 public ASN1Sequence getPermittedSubtrees() 056 { 057 return permitted; 058 } 059 060 public ASN1Sequence getExcludedSubtrees() 061 { 062 return excluded; 063 } 064 065 /* 066 * NameConstraints ::= SEQUENCE { 067 * permittedSubtrees [0] GeneralSubtrees OPTIONAL, 068 * excludedSubtrees [1] GeneralSubtrees OPTIONAL } 069 */ 070 public DERObject toASN1Object() 071 { 072 ASN1EncodableVector v = new ASN1EncodableVector(); 073 074 if (permitted != null) 075 { 076 v.add(new DERTaggedObject(false, 0, permitted)); 077 } 078 079 if (excluded != null) 080 { 081 v.add(new DERTaggedObject(false, 1, excluded)); 082 } 083 084 return new DERSequence(v); 085 } 086 }