Certificate.java revision e7637fe9734c4e3bece51db6773505c04e49faba
1f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/* 2f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Licensed to the Apache Software Foundation (ASF) under one or more 3f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * contributor license agreements. See the NOTICE file distributed with 4f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this work for additional information regarding copyright ownership. 5f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * The ASF licenses this file to You under the Apache License, Version 2.0 6f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * (the "License"); you may not use this file except in compliance with 7f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the License. You may obtain a copy of the License at 8f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 9f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * http://www.apache.org/licenses/LICENSE-2.0 10f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 11f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Unless required by applicable law or agreed to in writing, software 12f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * distributed under the License is distributed on an "AS IS" BASIS, 13f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * See the License for the specific language governing permissions and 15f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * limitations under the License. 16f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 17f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 18f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpackage java.security; 19f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 20f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.IOException; 21f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.InputStream; 22f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectimport java.io.OutputStream; 23f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 24f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project/** 25f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@code Certificate} represents an identity certificate, such as X.509 or PGP. 26f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Note: A {@code Certificate} instances does not make any statement about the 27f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * validity of itself. It's in the responsibility of the application to verify 28f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the validity of its certificates. 29f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * 30e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * @deprecated Replaced by behavior in {@link java.security.cert} 31f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see java.security.cert.Certificate 32f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 33f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project@Deprecated 34f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Projectpublic interface Certificate { 35f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 36f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 37f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Decodes a certificate from the given {@code InputStream}. The format of 38f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the data to encode must be that identified by {@link #getFormat()} and 39f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * encoded by {@link #encode(OutputStream)}. 40e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 41f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param stream 42f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the {@code InputStream} to read from. 43f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws KeyException 44f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if certificate information is incomplete or incorrect. 45f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IOException 46f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if an exception is thrown by accessing the provided stream. 47f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #encode(OutputStream) 48f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #getFormat() 49f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 50f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void decode(InputStream stream) throws KeyException, IOException; 51f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 52f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 53f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Encodes this certificate to an output stream. The 54f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@link #decode(InputStream)} method must be able to decode the format 55f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * written by this method. 56e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 57f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param stream 58f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the {@code OutputStream} to encode this certificate to. 59f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws KeyException 60f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if certificate information is incomplete or incorrect. 61f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @throws IOException 62f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * if an exception is thrown by accessing the provided stream. 63f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #decode(InputStream) 64f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 65f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public void encode(OutputStream stream) throws KeyException, IOException; 66f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 67f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 68f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a string identifying the format of this certificate. 69e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 70f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a string identifying the format of this certificate. 71f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 72f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String getFormat(); 73f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 74f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 75f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the guarantor of this certificate. That guarantor guarantees, 76f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * that the public key of this certificate is from the principal returned by 77f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * {@link #getPrincipal()}. 78e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 79f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the guarantor of this certificate. 80f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #getPrincipal() 81f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 82f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Principal getGuarantor(); 83f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 84f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 85f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the principal of this certificate. The principal is guaranteed by 86f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * the guarantor returned by {@link #getGuarantor()}. 87e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 88f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the principal of this certificate. 89f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #getGuarantor() 90f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 91f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public Principal getPrincipal(); 92f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 93f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 94f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns the public key of this certificate. The public key is guaranteed 95f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * by the guarantor to belong to the principal. 96e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 97f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return the public key of this certificate. 98f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see #getGuarantor() 99f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @see Certificate#getPrincipal() 100f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 101f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public PublicKey getPublicKey(); 102f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project 103f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project /** 104f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * Returns a string containing a concise, human-readable description of the 105f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * this {@code Certificate}. 106e7637fe9734c4e3bece51db6773505c04e49fabaElliott Hughes * 107f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @param detailed 108f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * whether or not this method should return detailed information. 109f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project * @return a string representation of this certificate. 110f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project */ 111f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project public String toString(boolean detailed); 112f6c387128427e121477c1b32ad35cdcaa5101ba3The Android Open Source Project} 113