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.crypto.asn1.x509;
019
020 import org.apache.geronimo.crypto.asn1.ASN1Encodable;
021 import org.apache.geronimo.crypto.asn1.ASN1EncodableVector;
022 import org.apache.geronimo.crypto.asn1.ASN1Sequence;
023 import org.apache.geronimo.crypto.asn1.DEREncodable;
024 import org.apache.geronimo.crypto.asn1.DERObject;
025 import org.apache.geronimo.crypto.asn1.DERIA5String;
026 import org.apache.geronimo.crypto.asn1.DERObjectIdentifier;
027 import org.apache.geronimo.crypto.asn1.DERSequence;
028
029 /**
030 * Policy qualifiers, used in the X509V3 CertificatePolicies
031 * extension.
032 *
033 * <pre>
034 * PolicyQualifierInfo ::= SEQUENCE {
035 * policyQualifierId PolicyQualifierId,
036 * qualifier ANY DEFINED BY policyQualifierId }
037 * </pre>
038 */
039 public class PolicyQualifierInfo
040 extends ASN1Encodable
041 {
042 DERObjectIdentifier policyQualifierId;
043 DEREncodable qualifier;
044
045 /**
046 * Creates a new <code>PolicyQualifierInfo</code> instance.
047 *
048 * @param policyQualifierId a <code>PolicyQualifierId</code> value
049 * @param qualifier the qualifier, defined by the above field.
050 */
051 public PolicyQualifierInfo (DERObjectIdentifier policyQualifierId,
052 DEREncodable qualifier)
053 {
054 this.policyQualifierId = policyQualifierId;
055 this.qualifier = qualifier;
056 }
057
058 /**
059 * Creates a new <code>PolicyQualifierInfo</code> containing a
060 * cPSuri qualifier.
061 *
062 * @param cps the CPS (certification practice statement) uri as a
063 * <code>String</code>.
064 */
065 public PolicyQualifierInfo (String cps)
066 {
067 policyQualifierId = PolicyQualifierId.id_qt_cps;
068 qualifier = new DERIA5String (cps);
069 }
070
071 /**
072 * Creates a new <code>PolicyQualifierInfo</code> instance.
073 *
074 * @param as <code>PolicyQualifierInfo</code> X509 structure
075 * encoded as an ASN1Sequence.
076 */
077 public PolicyQualifierInfo (ASN1Sequence as)
078 {
079 policyQualifierId = (DERObjectIdentifier) as.getObjectAt(0);
080 qualifier = as.getObjectAt(1);
081 }
082
083 public static PolicyQualifierInfo getInstance (Object as)
084 {
085 if (as instanceof PolicyQualifierInfo)
086 {
087 return (PolicyQualifierInfo)as;
088 }
089 else if (as instanceof ASN1Sequence)
090 {
091 return new PolicyQualifierInfo((ASN1Sequence)as);
092 }
093
094 throw new IllegalArgumentException("unknown object in getInstance.");
095 }
096
097 /**
098 * Returns a DER-encodable representation of this instance.
099 *
100 * @return a <code>DERObject</code> value
101 */
102 public DERObject toASN1Object()
103 {
104 ASN1EncodableVector dev = new ASN1EncodableVector();
105 dev.add(policyQualifierId);
106 dev.add(qualifier);
107
108 return new DERSequence(dev);
109 }
110 }