001: /*
002: * @(#)CertAttrSet.java 1.21 06/10/10
003: *
004: * Copyright 1990-2006 Sun Microsystems, Inc. All Rights Reserved.
005: * DO NOT ALTER OR REMOVE COPYRIGHT NOTICES OR THIS FILE HEADER
006: *
007: * This program is free software; you can redistribute it and/or
008: * modify it under the terms of the GNU General Public License version
009: * 2 only, as published by the Free Software Foundation.
010: *
011: * This program is distributed in the hope that it will be useful, but
012: * WITHOUT ANY WARRANTY; without even the implied warranty of
013: * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
014: * General Public License version 2 for more details (a copy is
015: * included at /legal/license.txt).
016: *
017: * You should have received a copy of the GNU General Public License
018: * version 2 along with this work; if not, write to the Free Software
019: * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
020: * 02110-1301 USA
021: *
022: * Please contact Sun Microsystems, Inc., 4150 Network Circle, Santa
023: * Clara, CA 95054 or visit www.sun.com if you need additional
024: * information or have any questions.
025: *
026: */
027:
028: package sun.security.x509;
029:
030: import java.io.IOException;
031: import java.io.InputStream;
032: import java.io.OutputStream;
033: import java.security.cert.CertificateException;
034: import java.util.Enumeration;
035:
036: /**
037: * This interface defines the methods required of a certificate attribute.
038: * Examples of X.509 certificate attributes are Validity, Issuer_Name, and
039: * Subject Name. A CertAttrSet may comprise one attribute or many
040: * attributes.
041: * <p>
042: * A CertAttrSet itself can also be comprised of other sub-sets.
043: * In the case of X.509 V3 certificates, for example, the "extensions"
044: * attribute has subattributes, such as those for KeyUsage and
045: * AuthorityKeyIdentifier.
046: *
047: * @author Amit Kapoor
048: * @author Hemma Prafullchandra
049: * @version 1.14
050: * @see CertificateException
051: */
052: public interface CertAttrSet {
053: /**
054: * Returns a short string describing this certificate attribute.
055: *
056: * @return value of this certificate attribute in
057: * printable form.
058: */
059: String toString();
060:
061: /**
062: * Encodes the attribute to the output stream in a format
063: * that can be parsed by the <code>decode</code> method.
064: *
065: * @param out the OutputStream to encode the attribute to.
066: *
067: * @exception CertificateException on encoding or validity errors.
068: * @exception IOException on other errors.
069: */
070: void encode(OutputStream out) throws CertificateException,
071: IOException;
072:
073: /**
074: * Decodes the attribute in the input stream.
075: *
076: * @param in the InputStream to read the encoded attribute from.
077: *
078: * @exception CertificateException on decoding or validity errors.
079: * @exception IOException on other errors.
080: */
081: void decode(InputStream in) throws CertificateException,
082: IOException;
083:
084: /**
085: * Sets an attribute value within this CertAttrSet.
086: *
087: * @param name the name of the attribute (e.g. "x509.info.key")
088: * @param obj the attribute object.
089: *
090: * @exception CertificateException on attribute handling errors.
091: * @exception IOException on other errors.
092: */
093: void set(String name, Object obj) throws CertificateException,
094: IOException;
095:
096: /**
097: * Gets an attribute value for this CertAttrSet.
098: *
099: * @param name the name of the attribute to return.
100: *
101: * @exception CertificateException on attribute handling errors.
102: * @exception IOException on other errors.
103: */
104: Object get(String name) throws CertificateException, IOException;
105:
106: /**
107: * Deletes an attribute value from this CertAttrSet.
108: *
109: * @param name the name of the attribute to delete.
110: *
111: * @exception CertificateException on attribute handling errors.
112: * @exception IOException on other errors.
113: */
114: void delete(String name) throws CertificateException, IOException;
115:
116: /**
117: * Returns an enumeration of the names of the attributes existing within
118: * this attribute.
119: *
120: * @return an enumeration of the attribute names.
121: */
122: Enumeration getElements();
123:
124: /**
125: * Returns the name (identifier) of this CertAttrSet.
126: *
127: * @return the name of this CertAttrSet.
128: */
129: String getName();
130: }
|