- /*
- * @(#)Key.java 1.47 00/02/02
- *
- * Copyright 1996-2000 Sun Microsystems, Inc. All Rights Reserved.
- *
- * This software is the proprietary information of Sun Microsystems, Inc.
- * Use is subject to license terms.
- *
- */
-
- package java.security;
-
- /**
- * The Key interface is the top-level interface for all keys. It
- * defines the functionality shared by all key objects. All keys
- * have three characteristics:
- *
- * <UL>
- *
- * <LI>An Algorithm
- *
- * <P>This is the key algorithm for that key. The key algorithm is usually
- * an encryption or asymmetric operation algorithm (such as DSA or
- * RSA), which will work with those algorithms and with related
- * algorithms (such as MD5 with RSA, SHA-1 with RSA, Raw DSA, etc.)
- * The name of the algorithm of a key is obtained using the
- * {@link #getAlgorithm() getAlgorithm} method.<P>
- *
- * <LI>An Encoded Form
- *
- * <P>This is an external encoded form for the key used when a standard
- * representation of the key is needed outside the Java Virtual Machine,
- * as when transmitting the key to some other party. The key
- * is encoded according to a standard format (such as X.509 or PKCS#8), and
- * is returned using the {@link #getEncoded() getEncoded} method.<P>
- *
- * <LI>A Format
- *
- * <P>This is the name of the format of the encoded key. It is returned
- * by the {@link #getFormat() getFormat} method.<P>
- *
- * </UL>
- *
- * Keys are generally obtained through key generators, certificates,
- * or various Identity classes used to manage keys.
- * Keys may also be obtained from key specifications (transparent
- * representations of the underlying key material) through the use of a key
- * factory (see {@link KeyFactory}).
- *
- * @see PublicKey
- * @see PrivateKey
- * @see KeyPair
- * @see KeyPairGenerator
- * @see KeyFactory
- * @see java.security.spec.KeySpec
- * @see Identity
- * @see Signer
- *
- * @version 1.47 00/02/02
- * @author Benjamin Renaud
- */
-
- public interface Key extends java.io.Serializable {
-
- // Declare serialVersionUID to be compatible with JDK1.1
-
- /**
- * The class fingerprint that is set to indicate
- * serialization compatibility with a previous
- * version of the class.
- */
- static final long serialVersionUID = 6603384152749567654L;
-
- /**
- * Returns the standard algorithm name for this key. For
- * example, "DSA" would indicate that this key is a DSA key.
- * See Appendix A in the <a href=
- * "../../../guide/security/CryptoSpec.html#AppA">
- * Java Cryptography Architecture API Specification & Reference </a>
- * for information about standard algorithm names.
- *
- * @return the name of the algorithm associated with this key.
- */
- public String getAlgorithm();
-
- /**
- * Returns the name of the primary encoding format of this key,
- * or null if this key does not support encoding.
- * The primary encoding format is
- * named in terms of the appropriate ASN.1 data format, if an
- * ASN.1 specification for this key exists.
- * For example, the name of the ASN.1 data format for public
- * keys is <I>SubjectPublicKeyInfo</I>, as
- * defined by the X.509 standard; in this case, the returned format is
- * <code>"X.509"</code>. Similarly,
- * the name of the ASN.1 data format for private keys is
- * <I>PrivateKeyInfo</I>,
- * as defined by the PKCS #8 standard; in this case, the returned format is
- * <code>"PKCS#8"</code>.
- *
- * @return the primary encoding format of the key.
- */
- public String getFormat();
-
- /**
- * Returns the key in its primary encoding format, or null
- * if this key does not support encoding.
- *
- * @return the encoded key, or null if the key does not support
- * encoding.
- */
- public byte[] getEncoded();
- }