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.ASN1Encodable; 021 import org.apache.geronimo.util.asn1.ASN1EncodableVector; 022 import org.apache.geronimo.util.asn1.DERInteger; 023 import org.apache.geronimo.util.asn1.DERObjectIdentifier; 024 import org.apache.geronimo.util.asn1.DERSequence; 025 import org.apache.geronimo.util.asn1.DERGeneralizedTime; 026 import org.apache.geronimo.util.asn1.DERBitString; 027 import org.apache.geronimo.util.asn1.DERSet; 028 029 /** 030 * Generator for Version 2 AttributeCertificateInfo 031 * <pre> 032 * AttributeCertificateInfo ::= SEQUENCE { 033 * version AttCertVersion -- version is v2, 034 * holder Holder, 035 * issuer AttCertIssuer, 036 * signature AlgorithmIdentifier, 037 * serialNumber CertificateSerialNumber, 038 * attrCertValidityPeriod AttCertValidityPeriod, 039 * attributes SEQUENCE OF Attribute, 040 * issuerUniqueID UniqueIdentifier OPTIONAL, 041 * extensions Extensions OPTIONAL 042 * } 043 * </pre> 044 * 045 */ 046 public class V2AttributeCertificateInfoGenerator 047 { 048 private DERInteger version; 049 private Holder holder; 050 private AttCertIssuer issuer; 051 private AlgorithmIdentifier signature; 052 private DERInteger serialNumber; 053 private AttCertValidityPeriod attrCertValidityPeriod; 054 private ASN1EncodableVector attributes; 055 private DERBitString issuerUniqueID; 056 private X509Extensions extensions; 057 private DERGeneralizedTime startDate, endDate; 058 059 public V2AttributeCertificateInfoGenerator() 060 { 061 this.version = new DERInteger(1); 062 attributes = new ASN1EncodableVector(); 063 } 064 065 public void setHolder(Holder holder) 066 { 067 this.holder = holder; 068 } 069 070 public void addAttribute(String oid, ASN1Encodable value) 071 { 072 attributes.add(new Attribute(new DERObjectIdentifier(oid), new DERSet(value))); 073 } 074 075 /** 076 * @param attribute 077 */ 078 public void addAttribute(Attribute attribute) 079 { 080 attributes.add(attribute); 081 } 082 083 public void setSerialNumber( 084 DERInteger serialNumber) 085 { 086 this.serialNumber = serialNumber; 087 } 088 089 public void setSignature( 090 AlgorithmIdentifier signature) 091 { 092 this.signature = signature; 093 } 094 095 public void setIssuer( 096 AttCertIssuer issuer) 097 { 098 this.issuer = issuer; 099 } 100 101 public void setStartDate( 102 DERGeneralizedTime startDate) 103 { 104 this.startDate = startDate; 105 } 106 107 public void setEndDate( 108 DERGeneralizedTime endDate) 109 { 110 this.endDate = endDate; 111 } 112 113 public void setIssuerUniqueID( 114 DERBitString issuerUniqueID) 115 { 116 this.issuerUniqueID = issuerUniqueID; 117 } 118 119 public void setExtensions( 120 X509Extensions extensions) 121 { 122 this.extensions = extensions; 123 } 124 125 public AttributeCertificateInfo generateAttributeCertificateInfo() 126 { 127 if ((serialNumber == null) || (signature == null) 128 || (issuer == null) || (startDate == null) || (endDate == null) 129 || (holder == null) || (attributes == null)) 130 { 131 throw new IllegalStateException("not all mandatory fields set in V2 AttributeCertificateInfo generator"); 132 } 133 134 ASN1EncodableVector v = new ASN1EncodableVector(); 135 136 v.add(version); 137 v.add(holder); 138 v.add(issuer); 139 v.add(signature); 140 v.add(serialNumber); 141 142 // 143 // before and after dates => AttCertValidityPeriod 144 // 145 AttCertValidityPeriod validity = new AttCertValidityPeriod(startDate, endDate); 146 v.add(validity); 147 148 // Attributes 149 v.add(new DERSequence(attributes)); 150 151 if (issuerUniqueID != null) 152 { 153 v.add(issuerUniqueID); 154 } 155 156 if (extensions != null) 157 { 158 v.add(extensions); 159 } 160 161 return new AttributeCertificateInfo(new DERSequence(v)); 162 } 163 }