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.ASN1EncodableVector;
021 import org.apache.geronimo.util.asn1.ASN1Sequence;
022 import org.apache.geronimo.util.asn1.ASN1Encodable;
023 import org.apache.geronimo.util.asn1.DERObject;
024 import org.apache.geronimo.util.asn1.DERObjectIdentifier;
025 import org.apache.geronimo.util.asn1.DERSequence;
026
027 public class PolicyInformation
028 extends ASN1Encodable
029 {
030 private DERObjectIdentifier policyIdentifier;
031 private ASN1Sequence policyQualifiers;
032
033 public PolicyInformation(
034 ASN1Sequence seq)
035 {
036 policyIdentifier = (DERObjectIdentifier)seq.getObjectAt(0);
037
038 if (seq.size() > 1)
039 {
040 policyQualifiers = (ASN1Sequence)seq.getObjectAt(1);
041 }
042 }
043
044 public PolicyInformation(
045 DERObjectIdentifier policyIdentifier)
046 {
047 this.policyIdentifier = policyIdentifier;
048 }
049
050 public PolicyInformation(
051 DERObjectIdentifier policyIdentifier,
052 ASN1Sequence policyQualifiers)
053 {
054 this.policyIdentifier = policyIdentifier;
055 this.policyQualifiers = policyQualifiers;
056 }
057
058 public static PolicyInformation getInstance(
059 Object obj)
060 {
061 if (obj == null || obj instanceof PolicyInformation)
062 {
063 return (PolicyInformation)obj;
064 }
065
066 return new PolicyInformation(ASN1Sequence.getInstance(obj));
067 }
068
069 public DERObjectIdentifier getPolicyIdentifier()
070 {
071 return policyIdentifier;
072 }
073
074 public ASN1Sequence getPolicyQualifiers()
075 {
076 return policyQualifiers;
077 }
078
079 /*
080 * PolicyInformation ::= SEQUENCE {
081 * policyIdentifier CertPolicyId,
082 * policyQualifiers SEQUENCE SIZE (1..MAX) OF
083 * PolicyQualifierInfo OPTIONAL }
084 */
085 public DERObject toASN1Object()
086 {
087 ASN1EncodableVector v = new ASN1EncodableVector();
088
089 v.add(policyIdentifier);
090
091 if (policyQualifiers != null)
092 {
093 v.add(policyQualifiers);
094 }
095
096 return new DERSequence(v);
097 }
098 }