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