1 /* CertificateFactorySpi.java --- Certificate Factory Class 2 Copyright (C) 1999,2003 Free Software Foundation, Inc. 3 4 This file is part of GNU Classpath. 5 6 GNU Classpath is free software; you can redistribute it and/or modify 7 it under the terms of the GNU General Public License as published by 8 the Free Software Foundation; either version 2, or (at your option) 9 any later version. 10 11 GNU Classpath is distributed in the hope that it will be useful, but 12 WITHOUT ANY WARRANTY; without even the implied warranty of 13 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 14 General Public License for more details. 15 16 You should have received a copy of the GNU General Public License 17 along with GNU Classpath; see the file COPYING. If not, write to the 18 Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 19 02110-1301 USA. 20 21 Linking this library statically or dynamically with other modules is 22 making a combined work based on this library. Thus, the terms and 23 conditions of the GNU General Public License cover the whole 24 combination. 25 26 As a special exception, the copyright holders of this library give you 27 permission to link this library with independent modules to produce an 28 executable, regardless of the license terms of these independent 29 modules, and to copy and distribute the resulting executable under 30 terms of your choice, provided that you also meet, for each linked 31 independent module, the terms and conditions of the license of that 32 module. An independent module is a module which is not derived from 33 or based on this library. If you modify this library, you may extend 34 this exception to your version of the library, but you are not 35 obligated to do so. If you do not wish to do so, delete this 36 exception statement from your version. */ 37 38 39 package java.security.cert; 40 41 import java.io.InputStream; 42 43 import java.util.Collection; 44 import java.util.Iterator; 45 import java.util.List; 46 47 /** 48 CertificateFactorySpi is the abstract class Service Provider 49 Interface (SPI) for the CertificateFactory class. A provider 50 must implement all the abstract methods if they wish to 51 supply a certificate factory for a particular certificate 52 type. Ex: X.509 53 54 Certificate factories are used to generate certificates and 55 certificate revocation lists (CRL) from their encoding. 56 57 @since 1.2 58 59 @author Mark Benvenuto 60 */ 61 public abstract class CertificateFactorySpi 62 { 63 64 // Constructor. 65 // ------------------------------------------------------------------------ 66 67 /** 68 * Constructs a new CertificateFactorySpi 69 */ CertificateFactorySpi()70 public CertificateFactorySpi() 71 {} 72 73 // Abstract methods. 74 // ------------------------------------------------------------------------ 75 76 /** 77 Generates a Certificate based on the encoded data read 78 from the InputStream. 79 80 The input stream must contain only one certificate. 81 82 If there exists a specialized certificate class for the 83 certificate format handled by the certificate factory 84 then the return Ceritificate should be a typecast of it. 85 Ex: A X.509 CertificateFactory should return X509Certificate. 86 87 For X.509 certificates, the certificate in inStream must be 88 DER encoded and supplied in binary or printable (Base64) 89 encoding. If the certificate is in Base64 encoding, it must be 90 bounded by -----BEGIN CERTIFICATE-----, and 91 -----END CERTIFICATE-----. 92 93 @param inStream an input stream containing the certificate data 94 95 @return a certificate initialized with InputStream data. 96 97 @throws CertificateException Certificate parsing error 98 */ engineGenerateCertificate(InputStream inStream)99 public abstract Certificate engineGenerateCertificate(InputStream inStream) 100 throws CertificateException; 101 102 /** 103 Returns a collection of certificates that were read from the 104 input stream. It may be empty, have only one, or have 105 multiple certificates. 106 107 For a X.509 certificate factory, the stream may contain a 108 single DER encoded certificate or a PKCS#7 certificate 109 chain. This is a PKCS#7 <I>SignedData</I> object with the 110 most significant field being <I>certificates</I>. If no 111 CRLs are present, then an empty collection is returned. 112 113 @param inStream an input stream containing the certificates 114 115 @return a collection of certificates initialized with 116 the InputStream data. 117 118 @throws CertificateException Certificate parsing error 119 */ engineGenerateCertificates(InputStream inStream)120 public abstract Collection<? extends Certificate> engineGenerateCertificates(InputStream inStream) 121 throws CertificateException; 122 123 /** 124 Generates a CRL based on the encoded data read 125 from the InputStream. 126 127 The input stream must contain only one CRL. 128 129 If there exists a specialized CRL class for the 130 CRL format handled by the certificate factory 131 then the return CRL should be a typecast of it. 132 Ex: A X.509 CertificateFactory should return X509CRL. 133 134 @param inStream an input stream containing the CRL data 135 136 @return a CRL initialized with InputStream data. 137 138 @throws CRLException CRL parsing error 139 */ engineGenerateCRL(InputStream inStream)140 public abstract CRL engineGenerateCRL(InputStream inStream) 141 throws CRLException; 142 143 /** 144 Generates CRLs based on the encoded data read 145 from the InputStream. 146 147 For a X.509 certificate factory, the stream may contain a 148 single DER encoded CRL or a PKCS#7 CRL set. This is a 149 PKCS#7 <I>SignedData</I> object with the most significant 150 field being <I>crls</I>. If no CRLs are present, then an 151 empty collection is returned. 152 153 @param inStream an input stream containing the CRLs 154 155 @return a collection of CRLs initialized with 156 the InputStream data. 157 158 @throws CRLException CRL parsing error 159 */ engineGenerateCRLs(InputStream inStream)160 public abstract Collection<? extends CRL> engineGenerateCRLs(InputStream inStream) 161 throws CRLException; 162 163 // 1.4 instance methods. 164 // ------------------------------------------------------------------------ 165 166 /** 167 * Generate a {@link CertPath} and initialize it with data parsed from 168 * the input stream. The default encoding of this factory is used. 169 * 170 * @param inStream The InputStream containing the CertPath data. 171 * @return A CertPath initialized from the input stream data. 172 * @throws CertificateException If an error occurs decoding the 173 * CertPath. 174 */ engineGenerateCertPath(InputStream inStream)175 public CertPath engineGenerateCertPath(InputStream inStream) 176 throws CertificateException 177 { 178 throw new UnsupportedOperationException("not implemented"); 179 } 180 181 /** 182 * Generate a {@link CertPath} and initialize it with data parsed from 183 * the input stream, using the specified encoding. 184 * 185 * @param inStream The InputStream containing the CertPath data. 186 * @param encoding The encoding of the InputStream data. 187 * @return A CertPath initialized from the input stream data. 188 * @throws CertificateException If an error occurs decoding the 189 * CertPath. 190 */ engineGenerateCertPath(InputStream inStream, String encoding)191 public CertPath engineGenerateCertPath(InputStream inStream, String encoding) 192 throws CertificateException 193 { 194 throw new UnsupportedOperationException("not implemented"); 195 } 196 197 /** 198 * Generate a {@link CertPath} and initialize it with the certificates 199 * in the {@link java.util.List} argument. 200 * 201 * @param certificates The list of certificates with which to create 202 * the CertPath. 203 * @return A CertPath initialized from the certificates. 204 * @throws CertificateException If an error occurs generating the 205 * CertPath. 206 */ engineGenerateCertPath(List<? extends Certificate> certificates)207 public CertPath engineGenerateCertPath(List<? extends Certificate> certificates) 208 throws CertificateException 209 { 210 throw new UnsupportedOperationException("not implemented"); 211 } 212 213 /** 214 * Returns an Iterator of CertPath encodings supported by this 215 * factory, with the default encoding first. The returned Iterator 216 * cannot be modified. 217 * 218 * @return The Iterator of supported encodings. 219 */ engineGetCertPathEncodings()220 public Iterator<String> engineGetCertPathEncodings() 221 { 222 throw new UnsupportedOperationException("not implemented"); 223 } 224 } 225