APIdia Launch Partner
Top Description Inners Fields Constructors Methods
java.security.cert

public abstract Class CertPath

extends Object
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable
Known Direct Subclasses
sun.security.provider.certpath.X509CertPath
Imports
java.io.ByteArrayInputStream, .NotSerializableException, .ObjectStreamException, .Serializable, java.util.Iterator, .List

An immutable sequence of certificates (a certification path).

This is an abstract class that defines the methods common to all CertPaths. Subclasses can handle different kinds of certificates (X.509, PGP, etc.).

All CertPath objects have a type, a list of Certificates, and one or more supported encodings. Because the CertPath class is immutable, a CertPath cannot change in any externally visible way after being constructed. This stipulation applies to all public fields and methods of this class and any added or overridden by subclasses.

The type is a String that identifies the type of Certificates in the certification path. For each certificate cert in a certification path certPath, cert.getType().equals(certPath.getType()) must be true.

The list of Certificates is an ordered List of zero or more Certificates. This List and all of the Certificates contained in it must be immutable.

Each CertPath object must support one or more encodings so that the object can be translated into a byte array for storage or transmission to other parties. Preferably, these encodings should be well-documented standards (such as PKCS#7). One of the encodings supported by a CertPath is considered the default encoding. This encoding is used if no encoding is explicitly requested (for the getEncoded() method, for instance).

All CertPath objects are also Serializable. CertPath objects are resolved into an alternate CertPathRep object during serialization. This allows a CertPath object to be serialized into an equivalent representation regardless of its underlying implementation.

CertPath objects can be created with a CertificateFactory or they can be returned by other classes, such as a CertPathBuilder.

By convention, X.509 CertPaths (consisting of X509Certificates), are ordered starting with the target certificate and ending with a certificate issued by the trust anchor. That is, the issuer of one certificate is the subject of the following one. The certificate representing the TrustAnchor should not be included in the certification path. Unvalidated X.509 CertPaths may not follow these conventions. PKIX CertPathValidators will detect any departure from these conventions that cause the certification path to be invalid and throw a CertPathValidatorException.

Every implementation of the Java platform is required to support the following standard CertPath encodings:

These encodings are described in the CertPath Encodings section of the Java Security Standard Algorithm Names Specification. Consult the release documentation for your implementation to see if any other encodings are supported.

Concurrent Access

All CertPath objects must be thread-safe. That is, multiple threads may concurrently invoke the methods defined in this class on a single CertPath object (or more than one) with no ill effects. This is also true for the List returned by CertPath.getCertificates.

Requiring CertPath objects to be immutable and thread-safe allows them to be passed around to various pieces of code without worrying about coordinating access. Providing this thread-safety is generally not difficult, since the CertPath and List objects in question are immutable.

Author
Yassir Elley
Since
1.4
External Specification
Java Security Standard Algorithm Names
See Also
CertificateFactory, CertPathBuilder

Nested and Inner Type Summary

Modifier and TypeClass and Description
protected static class
CertPath.CertPathRep

Alternate CertPath class for serialization.

Field Summary

Modifier and TypeField and Description
private static final long
private final transient String
type

The type of certificates in this chain.

Constructor Summary

AccessConstructor and Description
protected
CertPath(String
the standard name of the type of Certificates in this path
type
)

Creates a CertPath of the specified type.

Method Summary

Modifier and TypeMethod and Description
public boolean

Returns:

true if the specified object is equal to this certification path, false otherwise
equals
(Object
the object to test for equality with this certification path
other
)

Overrides java.lang.Object.equals.

Compares this certification path for equality with the specified object.

public abstract List<? extends Certificate>

Returns:

an immutable List of Certificates (may be empty, but not null)
getCertificates
()

Returns the list of certificates in this certification path.

public abstract byte[]

Returns:

the encoded bytes
getEncoded
()

Returns the encoded form of this certification path, using the default encoding.

public abstract byte[]

Returns:

the encoded bytes
getEncoded
(String
the name of the encoding to use
encoding
)

Returns the encoded form of this certification path, using the specified encoding.

public abstract Iterator<String>

Returns:

an Iterator over the names of the supported encodings (as Strings)
getEncodings
()

Returns an iteration of the encodings supported by this certification path, with the default encoding first.

public String

Returns:

the type of Certificates in this certification path (never null)
getType
()

Returns the type of Certificates in this certification path.

public int

Returns:

the hashcode value for this certification path
hashCode
()

Overrides java.lang.Object.hashCode.

Returns the hashcode value for this certification path.

public String

Returns:

a string representation of this certification path
toString
()

Overrides java.lang.Object.toString.

Returns a string representation of this certification path.

protected Object

Returns:

a CertPathRep containing the Certificate type and encoded bytes of the CertPath
writeReplace
()

Replaces the CertPath to be serialized with a CertPathRep object containing the Certificate type and encoded bytes of the CertPath.

Inherited from java.lang.Object:
clonefinalizegetClassnotifynotifyAllwaitwaitwait

Field Detail

serialVersionUIDback to summary
private static final long serialVersionUID
Annotations
@Serial
typeback to summary
private final transient String type

The type of certificates in this chain.

Constructor Detail

CertPathback to summary
protected CertPath(String type)

Creates a CertPath of the specified type.

This constructor is protected because most users should use a CertificateFactory to create CertPaths.

Parameters
type:String

the standard name of the type of Certificates in this path

Method Detail

equalsback to summary
public boolean equals(Object other)

Overrides java.lang.Object.equals.

Compares this certification path for equality with the specified object. Two CertPaths are equal if and only if their types are equal and their certificate Lists (and by implication the Certificates in those Lists) are equal. A CertPath is never equal to an object that is not a CertPath.

This algorithm is implemented by this method. If it is overridden, the behavior specified here must be maintained.

Parameters
other:Object

the object to test for equality with this certification path

Returns:boolean

true if the specified object is equal to this certification path, false otherwise

Annotations
@Override
getCertificatesback to summary
public abstract List<? extends Certificate> getCertificates()

Returns the list of certificates in this certification path. The List returned must be immutable and thread-safe.

Returns:List<? extends Certificate>

an immutable List of Certificates (may be empty, but not null)

getEncodedback to summary
public abstract byte[] getEncoded() throws CertificateEncodingException

Returns the encoded form of this certification path, using the default encoding.

Returns:byte[]

the encoded bytes

Exceptions
CertificateEncodingException:
if an encoding error occurs
getEncodedback to summary
public abstract byte[] getEncoded(String encoding) throws CertificateEncodingException

Returns the encoded form of this certification path, using the specified encoding.

Parameters
encoding:String

the name of the encoding to use

Returns:byte[]

the encoded bytes

Exceptions
CertificateEncodingException:
if an encoding error occurs or the encoding requested is not supported
getEncodingsback to summary
public abstract Iterator<String> getEncodings()

Returns an iteration of the encodings supported by this certification path, with the default encoding first. Attempts to modify the returned Iterator via its remove method result in an UnsupportedOperationException.

Returns:Iterator<String>

an Iterator over the names of the supported encodings (as Strings)

getTypeback to summary
public String getType()

Returns the type of Certificates in this certification path. This is the same string that would be returned by cert.getType() for all Certificates in the certification path.

Returns:String

the type of Certificates in this certification path (never null)

hashCodeback to summary
public int hashCode()

Overrides java.lang.Object.hashCode.

Returns the hashcode value for this certification path. The hash code of a certification path is defined to be the result of the following calculation:

hashCode = path.getType().hashCode();
 hashCode = 31*hashCode + path.getCertificates().hashCode();
This ensures that path1.equals(path2) implies that path1.hashCode()==path2.hashCode() for any two certification paths, path1 and path2, as required by the general contract of Object.hashCode.
Returns:int

the hashcode value for this certification path

Annotations
@Override
toStringback to summary
public String toString()

Overrides java.lang.Object.toString.

Returns a string representation of this certification path. This calls the toString method on each of the Certificates in the path.

Returns:String

a string representation of this certification path

writeReplaceback to summary
protected Object writeReplace() throws ObjectStreamException

Replaces the CertPath to be serialized with a CertPathRep object containing the Certificate type and encoded bytes of the CertPath.

Returns:Object

a CertPathRep containing the Certificate type and encoded bytes of the CertPath

Annotations
@Serial
Exceptions
ObjectStreamException:
if a CertPathRep object representing this certification path could not be created
java.security.cert back to summary

protected Class CertPath.CertPathRep

extends Object
implements Serializable
Class Inheritance
All Implemented Interfaces
java.io.Serializable

Alternate CertPath class for serialization.
Since
1.4

Field Summary

Modifier and TypeField and Description
private final byte[]
private static final long
private final String

Constructor Summary

AccessConstructor and Description
protected
CertPathRep(String
the standard name of a Certificate type
type
,
byte[]
the encoded form of the certification path
data
)

Creates a CertPathRep with the specified type and encoded form of a certification path.

Method Summary

Modifier and TypeMethod and Description
protected Object

Returns:

the resolved CertPath object
readResolve
()

Returns a CertPath constructed from the type and data of this CertPathRep.

Inherited from java.lang.Object:
cloneequalsfinalizegetClasshashCodenotifynotifyAlltoStringwaitwaitwait

Field Detail

databack to summary
private final byte[] data
serialVersionUIDback to summary
private static final long serialVersionUID
Annotations
@Serial
typeback to summary
private final String type

Constructor Detail

CertPathRepback to summary
protected CertPathRep(String type, byte[] data)

Creates a CertPathRep with the specified type and encoded form of a certification path.

Parameters
type:String

the standard name of a Certificate type

data:byte[]

the encoded form of the certification path

Method Detail

readResolveback to summary
protected Object readResolve() throws ObjectStreamException

Returns a CertPath constructed from the type and data of this CertPathRep.

Returns:Object

the resolved CertPath object

Annotations
@Serial
Exceptions
ObjectStreamException:
if a CertPath object could not be constructed