Класс CertPath
- Все реализованные интерфейсы:
Serializable
public abstract class CertPath extends Object implements Serializable
Это абстрактный класс, определяющий методы, общие для всех CertPath. Подклассы могут обрабатывать различные виды сертификатов (X.509, PGP и т. д.).
Все CertPath объекты имеют тип, список Certificate и один или несколько поддерживаемых кодировок. Поскольку класс CertPath является неизменяемым, объект CertPath не может быть изменён внешне после создания. Это ограничение применяется ко всем открытым полям и методам этого класса и любым добавленным или переопределённым подклассами.
Тип является String, который идентифицирует тип Certificate в пути сертификации. Для каждого сертификата cert в пути сертификации certPath, cert.getType().equals(certPath.getType()) должен быть true.
Список Certificate является упорядоченным List нуля или более Certificate. Этот List и все Certificate в нём должны быть неизменяемыми.
Каждый объект CertPath должен поддерживать один или несколько кодировок, чтобы объект мог быть преобразован в массив байтов для хранения или передачи другим сторонам. В идеале эти кодировки должны быть хорошо документированными стандартами (например, PKCS#7). Одна из поддерживаемых кодировок объекта CertPath считается кодировкой по умолчанию. Эта кодировка используется, если не запрошена явно другая кодировка (например, для метода getEncoded()).
Все объекты CertPath также Serializable. Объекты CertPath преобразуются в альтернативный объект CertPathRep во время сериализации. Это позволяет сериализовать объект CertPath в эквивалентное представление независимо от его реализации.
Объекты CertPath могут быть созданы с использованием CertificateFactory или возвращены другими классами, такими как CertPathBuilder.
По соглашению, пути сертификации X.509 (состоящие из X509Certificate), упорядочены, начиная с целевого сертификата и заканчивая сертификатом, выданным якорной точкой доверия. То есть, издатель одного сертификата является субъектом следующего. Сертификат, представляющий TrustAnchor, не должен быть включён в путь сертификации. Невалидированные пути сертификации X.509 могут не соответствовать этим соглашениям. 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<? extends Certificate> |
getCertificates() |
Возвращает список сертификатов в этом пути сертификации. |
abstract byte[] |
getEncoded() |
Возвращает закодированную форму этого пути сертификации, используя кодировку по умолчанию. |
abstract byte[] |
getEncoded |
Возвращает закодированную форму этого пути сертификации, используя указанную кодировку. |
abstract Iterator<String> |
getEncodings() |
Возвращает итератор поддерживаемых этим путём сертификации кодировок, причём кодировка по умолчанию указана первой. |
String |
getType() |
Возвращает тип Certificate в этом пути сертификации. |
int |
hashCode() |
Возвращает хэш-код для этого пути сертификации. |
String |
toString() |
Возвращает строковое представление этого пути сертификации. |
protected Object |
writeReplace() |
Заменяет CertPath на сериализацию объектом CertPathRep. |
Подробное описание конструкторов
CertPath
protected CertPath(String type)
CertPath указанного типа. Этот конструктор защищён, потому что большинство пользователей должны использовать CertificateFactory для создания CertPath.
- Параметры:
-
type- стандартное имя типаCertificateв этом пути
Подробное описание методов
getType
public String getType()
Certificate в этом сертификационном пути. Это та же строка, которая возвращалась бы методом cert.getType() для всех Certificate в сертификационном пути.- Возвращает:
- тип
Certificateв этом сертификационном пути (никогда не null)
getEncodings
public abstract Iterator<String> getEncodings()
Iterator с помощью метода remove приводят к UnsupportedOperationException.- Возвращает:
- итератор
Iteratorпо именам поддерживаемых кодировок (как строки)
equals
public boolean equals(Object other)
CertPath равны тогда и только тогда, когда их типы равны, и их сертификаты List (и, следовательно, Certificate в этих List ) равны. CertPath никогда не равен объекту, который не является CertPath. Этот алгоритм реализован в этом методе. При его переопределении указанное здесь поведение должно сохраняться.
- Переопределяет:
-
equalsв классеObject - Параметры:
-
other- объект для проверки на равенство с этим сертификационным путём - Возвращает:
- true, если указанный объект равен этому сертификационному пути, иначе false
- См. также:
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.- Переопределяет:
-
hashCodeв классеObject - Возвращает:
- значение хэш-кода для этого сертификационного пути
- См. также:
toString
public String toString()
toString для каждого из Certificate в пути.- Переопределяет:
-
toStringв классеObject - Возвращает:
- строковое представление этого сертификационного пути
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 должен быть неизменяемым и потокобезопасным.- Возвращает:
- неизменяемый
ListCertificate(может быть пустым, но не null)
writeReplace
protected Object writeReplace() throws ObjectStreamException
CertPath для сериализации объектом CertPathRep.- Возвращает:
CertPathRepдля сериализации- Выбрасывает:
-
ObjectStreamException- если объектCertPathRep, представляющий этот сертификационный путь, не удалось создать
© 1993, 2021, 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/17/docs/api/java.base/java/security/cert/CertPath.html