/* * * * Copyright 1990-2009 Sun Microsystems, Inc. All Rights Reserved. * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER * * This program is free software; you can redistribute it and/or * modify it under the terms of the GNU General Public License version * 2 only, as published by the Free Software Foundation. * * This program is distributed in the hope that it will be useful, but * WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU * General Public License version 2 for more details (a copy is * included at /legal/license.txt). * * You should have received a copy of the GNU General Public License * version 2 along with this work; if not, write to the Free Software * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA * 02110-1301 USA * * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa * Clara, CA 95054 or visit www.sun.com if you need additional * information or have any questions. */ package javax.microedition.pki; import java.lang.String; /** * Interface common to certificates. * The features abstracted of <CODE>Certificates</CODE> include subject, * issuer, type, version, serial number, signing algorithm, dates of valid use, * and serial number. * <p> * <b>Printable Representation for Binary Values</b></p> * <p> * A non-string values in a certificate are represented as strings with each * byte as two hex digits (capital letters for A-F) separated by ":" (Unicode * U+003A).</p> * <p> * For example: <tt>0C:56:FA:80</tt></p> * <p> * <b>Printable Representation for X.509 Distinguished Names</b></p> * <p> * For a X.509 certificate the value returned is the printable version of * the distinguished name (DN) from the certificate.</p> * <p> * An X.509 distinguished name of is set of attributes, each attribute is a * sequence of an object ID and a value. For string comparison purposes, the * following rules define a strict printable representation.</p> * <p> * <ol> * <li>There is no added white space around separators.</li> * * <li>The attributes are in the same order as in the certificate; * attributes are not reordered.</li> * * <li>If an object ID is in the table below, the label from the table * will be substituted for the object ID, else the ID is formatted as * a string using the binary printable representation above.</li> * * <li>Each object ID or label and value within an attribute will be * separated by a "=" (Unicode U+003D), even if the value is empty.</li> * * <li>If value is not a string, then it is formatted as a string using the * binary printable representation above.</li> * * <li>Attributes will be separated by a ";" (Unicode U+003B)</li> * </ol> * </p> * <br><b>Labels for X.500 Distinguished Name Attributes</b> * <table border="1" cellpadding=4 cellspacing=0 width="100%"> * * <tr> * <th bgcolor="#CCCCFF">Object ID</th> * <th bgcolor="#CCCCFF">Binary</th> * <th bgcolor="#CCCCFF">Label</th> * <tr> * <td>id-at-commonName</td> * <td><tt>55:04:03</tt></td> * <td>CN</td> * </tr> * <tr> * <td>id-at-surname</td> * <td><tt>55:04:04</tt></td> * <td>SN</td> * </tr> * <tr> * <td>id-at-countryName</td> * <td><tt>55:04:06</tt></td> * <td>C</td> * </tr> * <tr> * <td>id-at-localityName</td> * <td><tt>55:04:07</tt></td> * <td>L</td> * </tr> * <tr> * <td>id-at-stateOrProvinceName</td> * <td><tt>55:04:08</tt></td> * <td>ST</td> * </tr> * <tr> * <td>id-at-streetAddress</td> * <td><tt>55:04:09</tt></td> * <td>STREET</td> * </tr> * <tr> * <td>id-at-organizationName</td> * <td><tt>55:04:0A</tt></td> * <td>O</td> * </tr> * <tr> * <td>id-at-organizationUnitName</td> * <td><tt>55:04:0B</tt></td> * <td>OU</td> * </tr> * <tr> * <td>emailAddress</td> * <td><tt>2A:86:48:86:F7:0D:01:09:01</tt></td> * <td>EmailAddress</td> * </tr> * </table> * <p> * Example of a printable distinguished name:</p> * <blockquote> * <tt>C=US;O=Any Company, Inc.;CN=www.anycompany.com</tt></blockquote> * */ public interface Certificate { /** * Gets the name of this certificate's subject. * @return The subject of this <CODE>Certificate</CODE>; * the value MUST NOT be <CODE>null</CODE>. */ public String getSubject(); /** * Gets the name of this certificate's issuer. * @return The issuer of the <CODE>Certificate</CODE>; * the value MUST NOT be <CODE>null</CODE>. */ public String getIssuer(); /** * Get the type of the <CODE>Certificate</CODE>. * For X.509 Certificates the value returned is "X.509". * * @return The type of the <CODE>Certificate</CODE>; * the value MUST NOT be <CODE>null</CODE>. */ public String getType(); /** * Gets the version number of this <CODE>Certificate</CODE>. * The format of the version number depends on the specific * type and specification. * For a X.509 certificate per RFC 2459 it would be "2". * @return The version number of the <CODE>Certificate</CODE>; * the value MUST NOT be <CODE>null</CODE>. */ public String getVersion(); /** * Gets the name of the algorithm used to sign the * <CODE>Certificate</CODE>. * The algorithm names returned should be the labels * defined in RFC2459 Section 7.2. * @return The name of signature algorithm; * the value MUST NOT be <CODE>null</CODE>. */ public String getSigAlgName(); /** * Gets the time before which this <CODE>Certificate</CODE> may not be used * from the validity period. * * @return The time in milliseconds before which the * <CODE>Certificate</CODE> is not valid; it MUST be positive, * <CODE>0</CODE> is returned if the certificate does not * have its validity restricted based on the time. */ public long getNotBefore(); /** * Gets the time after which this <CODE>Certificate</CODE> may not be used * from the validity period. * @return The time in milliseconds after which the * <CODE>Certificate</CODE> is not valid (expiration date); * it MUST be positive; <CODE>Long.MAX_VALUE</CODE> is returned if * the certificate does not have its validity restricted based on the * time. */ public long getNotAfter(); /** * Gets the printable form of the serial number of this * <CODE>Certificate</CODE>. * If the serial number within the <CODE>certificate</CODE> * is binary it should be formatted as a string using the binary printable * representation in class description. * For example, 0C:56:FA:80. * @return A string containing the serial number * in user-friendly form; <CODE>null</CODE> is returned * if there is no serial number. */ public String getSerialNumber(); }