1adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/* 2adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * this work for additional information regarding copyright ownership. 5adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (the "License"); you may not use this file except in compliance with 7adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the License. You may obtain a copy of the License at 8adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 9adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * 11adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * See the License for the specific language governing permissions and 15adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * limitations under the License. 16adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 17adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 18adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpackage java.security.cert; 19adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 20adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.io.InputStream; 21adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Collection; 22adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.Iterator; 23adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectimport java.util.List; 24adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 25adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project/** 26adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * This class defines the <i>Service Provider Interface</i> (<b>SPI</b>) for the 27adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code CertificateFactory} class. This SPI must be implemented for each 28adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * certificate type a security provider wishes to support. 29adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 30adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 31adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Projectpublic abstract class CertificateFactorySpi { 32adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 33adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 34adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Constructs a new instance of this class. 35adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 36adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CertificateFactorySpi() { 37adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 38adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 39adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 40adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Generates and initializes a {@code Certificate} from the provided input 41adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * stream. 42f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 43adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inStream 44adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the stream from which the data is read to create the 45adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * certificate. 46adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an initialized certificate. 47adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception CertificateException 48adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 49adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 50adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract Certificate engineGenerateCertificate(InputStream inStream) 51adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException; 52adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 53adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 54adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Generates and initializes a collection of certificates from the provided 55adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * input stream. 56f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 57adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inStream 58adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the stream from where data is read to create the certificates. 59adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a collection of certificates. 60adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception CertificateException 61adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 62adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 63f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes public abstract Collection<? extends Certificate> 64adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project engineGenerateCertificates(InputStream inStream) throws CertificateException; 65adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 66adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 67adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Generates and initializes a <i>Certificate Revocation List</i> (CRL) from 68adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the provided input stream. 69f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 70adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inStream 71adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the stream from where data is read to create the CRL. 72adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an CRL instance. 73adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception CRLException 74adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 75adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 76adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public abstract CRL engineGenerateCRL(InputStream inStream) 77adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CRLException; 78adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 79adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 80adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Generates and initializes a collection of <i>Certificate Revocation 81adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * List</i> (CRL) from the provided input stream. 82f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 83adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inStream 84adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the stream from which the data is read to create the CRLs. 85adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a collection of CRLs. 86adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @exception CRLException 87adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 88adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 89f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes public abstract Collection<? extends CRL> 90adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project engineGenerateCRLs(InputStream inStream) throws CRLException; 91adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 92adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 93adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Generates a {@code CertPath} from the provided {@code InputStream}. The 94adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * default encoding scheme is applied. 95f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 96adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param inStream 97adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * an input stream with encoded data. 98adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code CertPath} initialized from the provided data. 99adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws CertificateException 100adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 101adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 102adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public CertPath engineGenerateCertPath(InputStream inStream) 103adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 104897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new UnsupportedOperationException(); 105adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 106adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 107adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 108be4a7d686edf15a7fbdd00b40cf78cb26d105d0eElliott Hughes * Generates a {@code CertPath} (a certificate chain) from the given 1098f4a284a73b1da82eefb5d53b0e84312d560924eKenny Root * {@code inputStream}, assuming the given {@code encoding} from 1108f4a284a73b1da82eefb5d53b0e84312d560924eKenny Root * {@link #engineGetCertPathEncodings()}. 111f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 112adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws CertificateException 113adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 114adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 115adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the provider does not implement this method. 116adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 1178f4a284a73b1da82eefb5d53b0e84312d560924eKenny Root public CertPath engineGenerateCertPath(InputStream inStream, String encoding) 118adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 119897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new UnsupportedOperationException(); 120adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 121adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 122adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 123adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Generates a {@code CertPath} from the provided list of certificates. The 124adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * encoding is the default encoding. 125f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 126adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @param certificates 127adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * the list containing certificates in a format supported by the 128adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * {@code CertificateFactory}. 129adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return a {@code CertPath} initialized from the provided data. 130adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws CertificateException 131adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if parsing problems are detected. 132adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @throws UnsupportedOperationException 133adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * if the provider does not implement this method. 134adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 135f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes public CertPath engineGenerateCertPath(List<? extends Certificate> certificates) 136adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project throws CertificateException { 137897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new UnsupportedOperationException(); 138adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 139adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project 140adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project /** 141adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Returns an {@code Iterator} over the supported {@code CertPath} encodings 142adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * (as Strings). The first element is the default encoding. 143f33eae7e84eb6d3b0f4e86b59605bb3de73009f3Elliott Hughes * 144adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * @return an iterator over supported {@code CertPath} encodings (as 145adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project * Strings). 146adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project */ 147adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project public Iterator<String> engineGetCertPathEncodings() { 148897538a36c18f4db8f9f68ee566aec0bda842e9fElliott Hughes throw new UnsupportedOperationException(); 149adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project } 150adc854b798c1cfe3bfd4c27d68d5cee38ca617daThe Android Open Source Project} 151