Home | History | Annotate | Download | only in x509
      1 /*
      2  * Copyright (c) 1997, 2003, Oracle and/or its affiliates. All rights reserved.
      3  * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER.
      4  *
      5  * This code is free software; you can redistribute it and/or modify it
      6  * under the terms of the GNU General Public License version 2 only, as
      7  * published by the Free Software Foundation.  Oracle designates this
      8  * particular file as subject to the "Classpath" exception as provided
      9  * by Oracle in the LICENSE file that accompanied this code.
     10  *
     11  * This code is distributed in the hope that it will be useful, but WITHOUT
     12  * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
     13  * FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
     14  * version 2 for more details (a copy is included in the LICENSE file that
     15  * accompanied this code).
     16  *
     17  * You should have received a copy of the GNU General Public License version
     18  * 2 along with this work; if not, write to the Free Software Foundation,
     19  * Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA.
     20  *
     21  * Please contact Oracle, 500 Oracle Parkway, Redwood Shores, CA 94065 USA
     22  * or visit www.oracle.com if you need additional information or have any
     23  * questions.
     24  */
     25 
     26 package sun.security.x509;
     27 
     28 import java.io.IOException;
     29 import java.io.OutputStream;
     30 import java.security.cert.CertificateException;
     31 import java.util.Enumeration;
     32 
     33 /**
     34  * This interface defines the methods required of a certificate attribute.
     35  * Examples of X.509 certificate attributes are Validity, Issuer_Name, and
     36  * Subject Name. A CertAttrSet may comprise one attribute or many
     37  * attributes.
     38  * <p>
     39  * A CertAttrSet itself can also be comprised of other sub-sets.
     40  * In the case of X.509 V3 certificates, for example, the "extensions"
     41  * attribute has subattributes, such as those for KeyUsage and
     42  * AuthorityKeyIdentifier.
     43  *
     44  * @author Amit Kapoor
     45  * @author Hemma Prafullchandra
     46  * @see CertificateException
     47  */
     48 public interface CertAttrSet<T> {
     49     /**
     50      * Returns a short string describing this certificate attribute.
     51      *
     52      * @return value of this certificate attribute in
     53      *         printable form.
     54      */
     55     String toString();
     56 
     57     /**
     58      * Encodes the attribute to the output stream in a format
     59      * that can be parsed by the <code>decode</code> method.
     60      *
     61      * @param out the OutputStream to encode the attribute to.
     62      *
     63      * @exception CertificateException on encoding or validity errors.
     64      * @exception IOException on other errors.
     65      */
     66     void encode(OutputStream out)
     67         throws CertificateException, IOException;
     68 
     69     /**
     70      * Sets an attribute value within this CertAttrSet.
     71      *
     72      * @param name the name of the attribute (e.g. "x509.info.key")
     73      * @param obj the attribute object.
     74      *
     75      * @exception CertificateException on attribute handling errors.
     76      * @exception IOException on other errors.
     77      */
     78     void set(String name, Object obj)
     79         throws CertificateException, IOException;
     80 
     81     /**
     82      * Gets an attribute value for this CertAttrSet.
     83      *
     84      * @param name the name of the attribute to return.
     85      *
     86      * @exception CertificateException on attribute handling errors.
     87      * @exception IOException on other errors.
     88      */
     89     Object get(String name)
     90         throws CertificateException, IOException;
     91 
     92     /**
     93      * Deletes an attribute value from this CertAttrSet.
     94      *
     95      * @param name the name of the attribute to delete.
     96      *
     97      * @exception CertificateException on attribute handling errors.
     98      * @exception IOException on other errors.
     99      */
    100     void delete(String name)
    101         throws CertificateException, IOException;
    102 
    103     /**
    104      * Returns an enumeration of the names of the attributes existing within
    105      * this attribute.
    106      *
    107      * @return an enumeration of the attribute names.
    108      */
    109     Enumeration<T> getElements();
    110 
    111     /**
    112      * Returns the name (identifier) of this CertAttrSet.
    113      *
    114      * @return the name of this CertAttrSet.
    115      */
    116     String getName();
    117 }
    118