Класс CertPath
- Все реализованные интерфейсы:
Serializable
public abstract class CertPath extends Object implements Serializable
Это абстрактный класс, определяющий методы, общие для всех CertPaths. Подклассы могут работать с различными типами сертификатов (X.509, PGP и т. д.).
Все объекты CertPath имеют тип, список Certificates и одну или несколько поддерживаемых кодировок. Поскольку класс CertPath является неизменяемым, объект CertPath не может измениться каким-либо внешне наблюдаемым образом после создания. Это требование распространяется на все открытые поля и методы этого класса, а также на добавленные или переопределённые подклассами.
Тип — это String, определяющий тип Certificates в пути сертификации. Для каждого сертификата cert в пути сертификации certPath, cert.getType().equals(certPath.getType()) должен быть true.
Список Certificates — это упорядоченная List из нуля или более Certificates. Эта List и все содержащиеся в ней Certificates должны быть неизменяемыми.
Каждый объект CertPath должен поддерживать одну или несколько кодировок, чтобы его можно было преобразовать в массив байтов для хранения или передачи другим сторонам. Предпочтительно, чтобы эти кодировки соответствовали хорошо документированным стандартам (например, PKCS#7). Одна из кодировок, поддерживаемых объектом CertPath, считается кодировкой по умолчанию. Она используется, если кодировка явно не указана (например, для метода getEncoded()).
Все объекты CertPath также являются Serializable. Объекты CertPath при сериализации преобразуются в альтернативный объект CertPathRep. Это позволяет сериализовать объект CertPath в эквивалентное представление независимо от его базовой реализации.
Объекты CertPath можно создавать с помощью CertificateFactory или получать из других классов, например из CertPathBuilder.
По соглашению, X.509 CertPaths (состоящие из X509Certificates) упорядочиваются от целевого сертификата до сертификата, выданного центром доверия. То есть издатель одного сертификата является субъектом следующего сертификата. Сертификат, представляющий TrustAnchor, не следует включать в путь сертификации. Непроверенные X.509 CertPaths могут не соответствовать этим соглашениям. CertPathValidators PKIX обнаруживают любые отступления от этих соглашений, приводящие к недействительности пути сертификации, и выбрасывают CertPathValidatorException.
Каждая реализация платформы Java обязана поддерживать следующие стандартные кодировки CertPath:
PKCS7PkiPath
Параллельный доступ
Все объекты CertPath должны быть потокобезопасными. То есть несколько потоков могут одновременно вызывать методы, определённые в этом классе, для одного или нескольких объектов CertPath без каких-либо нежелательных последствий. Это также относится к List, возвращаемому методом CertPath.getCertificates.
Требование неизменяемости и потокобезопасности объектов CertPath позволяет передавать их различным фрагментам кода, не беспокоясь о координации доступа. Обеспечить такую потокобезопасность обычно несложно, поскольку рассматриваемые объекты CertPath и List являются неизменяемыми.
- С версии:
- 1.4
- Внешние спецификации
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
protected static class |
CertPath.CertPathRep |
Альтернативный класс CertPath для сериализации. |
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Создаёт CertPath указанного типа. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
boolean |
equals |
Сравнивает этот путь сертификации с указанным объектом на равенство. |
abstract List |
getCertificates() |
Возвращает список сертификатов в этом пути сертификации. |
abstract byte[] |
getEncoded() |
Возвращает закодированное представление этого пути сертификации, используя кодировку по умолчанию. |
abstract byte[] |
getEncoded |
Возвращает закодированное представление этого пути сертификации, используя указанную кодировку. |
abstract Iterator |
getEncodings() |
Возвращает итератор по кодировкам, поддерживаемым этим путём сертификации, начиная с кодировки по умолчанию. |
String |
getType() |
Возвращает тип Certificates в этом пути сертификации. |
int |
hashCode() |
Возвращает значение хэш-кода этого пути сертификации. |
String |
toString() |
Возвращает строковое представление этого пути сертификации. |
protected Object |
writeReplace() |
Заменяет сериализуемый объект CertPath объектом CertPathRep, содержащим тип Certificate и закодированные байты CertPath. |
Подробное описание конструкторов
CertPath
protected CertPath(String type)
CertPath указанного типа. Этот конструктор является защищённым, поскольку большинству пользователей следует использовать CertificateFactory для создания CertPaths.
- Параметры:
-
type— стандартное имя типаCertificates в этом пути
Подробное описание методов
getType
public String getType()
Certificates в этом пути сертификации. Это та же строка, которую возвращал бы метод cert.getType() для всех Certificates в пути сертификации.- Возвращает:
- тип
Certificates в этом пути сертификации (никогда не null)
getEncodings
public abstract Iterator<String> getEncodings()
Iterator с помощью его метода remove приводит к UnsupportedOperationException.- Возвращает:
Iteratorпо именам поддерживаемых кодировок (в виде строк)
equals
public boolean equals(Object other)
CertPath равны тогда и только тогда, когда их типы совпадают и совпадают их List сертификатов (а значит, и Certificates в этих Lists). Объект CertPath никогда не равен объекту, который не является CertPath. Этот алгоритм реализован данным методом. Если он переопределён, необходимо сохранить описанное здесь поведение.
hashCode
public int hashCode()
hashCode = path.getType().hashCode();
hashCode = 31*hashCode + path.getCertificates().hashCode();
Это гарантирует, что path1.equals(path2) означает path1.hashCode()==path2.hashCode() для любых двух путей сертификации, path1 и path2, как того требует общий контракт метода Object.hashCode.toString
getEncoded
public abstract byte[] getEncoded() throws CertificateEncodingException
- Возвращает:
- закодированные байты
- Выбрасывает:
-
CertificateEncodingException— если произошла ошибка кодирования
getEncoded
public abstract byte[] getEncoded(String encoding) throws CertificateEncodingException
- Параметры:
-
encoding— имя используемой кодировки - Возвращает:
- закодированные байты
- Выбрасывает:
-
CertificateEncodingException— если произошла ошибка кодирования или запрошенная кодировка не поддерживается
getCertificates
public abstract List<? extends Certificate> getCertificates()
List должен быть неизменяемым и потокобезопасным.- Возвращает:
- неизменяемую
ListизCertificates (может быть пустой, но не null)
writeReplace
protected Object writeReplace() throws ObjectStreamException
CertPath объектом CertPathRep, содержащим тип Certificate и закодированные байты CertPath.- Возвращает:
CertPathRep, содержащий типCertificateи закодированные байтыCertPath- Выбрасывает:
-
ObjectStreamException— если не удалось создать объектCertPathRep, представляющий этот путь сертификации
© 1993, 2025, Oracle and/or its affiliates. All rights reserved.
Documentation extracted from Debian's OpenJDK Development Kit package.
Licensed under the GNU General Public License, version 2, with the Classpath Exception.
Various third party code in OpenJDK is licensed under different licenses (see Debian package).
Java and OpenJDK are trademarks or registered trademarks of Oracle and/or its affiliates.
https://docs.oracle.com/en/java/javase/25/docs/api/java.base/java/security/cert/CertPath.html