java.security.cert

Class Certificate

Implemented Interfaces:
Serializable
Known Direct Subclasses:
X509Certificate

public abstract class Certificate
extends Object
implements Serializable

The Certificate class is an abstract class used to manage identity certificates. An identity certificate is a combination of a principal and a public key which is certified by another principal. This is the puprose of Certificate Authorities (CA).

This class is used to manage different types of certificates but have important common puposes. Different types of certificates like X.509 and OpenPGP share general certificate functions (like encoding and verifying) and information like public keys.

X.509, OpenPGP, and SDSI can be implemented by subclassing this class even though they differ in storage methods and information stored.

Since:
JDK 1.2
See Also:
CertificateFactory, X509Certificate, Serialized Form

Nested Class Summary

protected static class
Certificate.CertificateRep
Certificate.CertificateRep is an inner class used to provide an alternate storage mechanism for serialized Certificates.

Constructor Summary

Certificate(String type)
Constructs a new certificate of the specified type.

Method Summary

boolean
equals(Object other)
Compares this Certificate to other.
abstract byte[]
getEncoded()
Gets the DER ASN.1 encoded format for this Certificate.
abstract PublicKey
getPublicKey()
Returns the public key stored in the Certificate.
String
getType()
Returns the Certificate type.
int
hashCode()
Returns a hash code for this Certificate in its encoded form.
abstract String
toString()
Returns a string representing the Certificate.
abstract void
verify(PublicKey key)
Verifies that this Certificate was properly signed with the PublicKey that corresponds to its private key.
abstract void
verify(PublicKey key, String sigProvider)
Verifies that this Certificate was properly signed with the PublicKey that corresponds to its private key and uses the signature engine provided by the provider.
protected Object
writeReplace()
Returns a replacement for this certificate to be serialized.

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

Certificate

protected Certificate(String type)
Constructs a new certificate of the specified type. An example is "X.509".
Parameters:
type - a valid standard name for a certificate.

Method Details

equals

public boolean equals(Object other)
Compares this Certificate to other. It checks if the object if instanceOf Certificate and then checks if the encoded form matches.
Overrides:
equals in interface Object
Parameters:
other - An Object to test for equality
Returns:
true if equal, false otherwise

getEncoded

public abstract byte[] getEncoded()
            throws CertificateEncodingException
Gets the DER ASN.1 encoded format for this Certificate. It assumes each certificate has only one encoding format. Ex: X.509 is encoded as ASN.1 DER
Returns:
byte array containg encoded form
Throws:
CertificateEncodingException - if an error occurs

getPublicKey

public abstract PublicKey getPublicKey()
Returns the public key stored in the Certificate.
Returns:
The public key

getType

public final String getType()
Returns the Certificate type.
Returns:
a string representing the Certificate type

hashCode

public int hashCode()
Returns a hash code for this Certificate in its encoded form.
Overrides:
hashCode in interface Object
Returns:
A hash code of this class

toString

public abstract String toString()
Returns a string representing the Certificate.
Overrides:
toString in interface Object
Returns:
a string representing the Certificate.

verify

public abstract void verify(PublicKey key)
            throws CertificateException,
                   NoSuchAlgorithmException,
                   InvalidKeyException,
                   NoSuchProviderException,
                   SignatureException
Verifies that this Certificate was properly signed with the PublicKey that corresponds to its private key.
Parameters:
key - PublicKey to verify with
Throws:
CertificateException - encoding error
NoSuchAlgorithmException - unsupported algorithm
InvalidKeyException - incorrect key
NoSuchProviderException - no provider
SignatureException - signature error

verify

public abstract void verify(PublicKey key,
                            String sigProvider)
            throws CertificateException,
                   NoSuchAlgorithmException,
                   InvalidKeyException,
                   NoSuchProviderException,
                   SignatureException
Verifies that this Certificate was properly signed with the PublicKey that corresponds to its private key and uses the signature engine provided by the provider.
Parameters:
key - PublicKey to verify with
sigProvider - Provider to use for signature algorithm
Throws:
CertificateException - encoding error
NoSuchAlgorithmException - unsupported algorithm
InvalidKeyException - incorrect key
NoSuchProviderException - incorrect provider
SignatureException - signature error

writeReplace

protected Object writeReplace()
            throws ObjectStreamException
Returns a replacement for this certificate to be serialized. This method returns the equivalent to the following for this class:
new CertificateRep(getType(), getEncoded());

This thusly replaces the certificate with its name and its encoded form, which can be deserialized later with the CertificateFactory implementation for this certificate's type.

Returns:
The replacement object to be serialized.
Throws:
ObjectStreamException - If the replacement could not be created.

Certificate.java --- Certificate class Copyright (C) 1999, 2003, 2004 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath 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 for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.