Spec-Zone.ru › OpenJDK 27

Класс CertificateFactory

java.lang.Object
java.security.cert.CertificateFactory
public class CertificateFactory extends Object
Этот класс определяет функциональность фабрики сертификатов, которая используется для создания объектов сертификатов, путей сертификации (CertPath) и списков отзыва сертификатов (CRL) из их кодировок.

Для кодировок, содержащих несколько сертификатов, используйте generateCertificates, если требуется разобрать коллекцию потенциально не связанных между собой сертификатов. В противном случае используйте generateCertPath, если требуется создать CertPath (цепочку сертификатов), а затем проверить её с помощью CertPathValidator.

Фабрика сертификатов для X.509 должна возвращать сертификаты, являющиеся экземплярами java.security.cert.X509Certificate, и CRL, являющиеся экземплярами java.security.cert.X509CRL.

В следующем примере считывается файл с сертификатами в кодировке Base64, каждый из которых ограничен в начале строкой -----BEGIN CERTIFICATE-----, а в конце — строкой -----END CERTIFICATE-----. Мы преобразуем FileInputStream (который не поддерживает mark и reset) в BufferedInputStream (который поддерживает эти методы), чтобы каждый вызов generateCertificate считывал только один сертификат, а позиция чтения входного потока указывала на следующий сертификат в файле:

FileInputStream fis = new FileInputStream(filename);
BufferedInputStream bis = new BufferedInputStream(fis);

CertificateFactory cf = CertificateFactory.getInstance("X.509");

while (bis.available() > 0) {
   Certificate cert = cf.generateCertificate(bis);
   System.out.println(cert.toString());
}

В следующем примере разбирается ответ с сертификатами в формате PKCS#7, сохранённый в файле, и извлекаются все сертификаты из него:

FileInputStream fis = new FileInputStream(filename);
CertificateFactory cf = CertificateFactory.getInstance("X.509");
Collection c = cf.generateCertificates(fis);
Iterator i = c.iterator();
while (i.hasNext()) {
   Certificate cert = (Certificate)i.next();
   System.out.println(cert);
}

Каждая реализация платформы Java должна поддерживать следующий стандартный тип CertificateFactory:

  • X.509
и следующие стандартные кодировки CertPath:
  • PKCS7
  • PkiPath
Тип и кодировки описаны в разделе CertificateFactory и разделе Кодировки CertPath спецификации стандартных имён алгоритмов безопасности Java. Сведения о поддержке других типов или кодировок см. в документации к выпуску вашей реализации.
Начиная с:
1.2
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Certificate
  • X509Certificate
  • CertPath
  • CRL
  • X509CRL

Краткое описание конструкторов

CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
Модификатор Конструктор Описание
protected
Создаёт объект CertificateFactory указанного типа и инкапсулирует в нём указанную реализацию поставщика (объект SPI).

Краткое описание методов

Модификатор и тип Метод Описание
final Certificate generateCertificate(InputStream inStream)
Создаёт объект сертификата и инициализирует его данными, считанными из входного потока inStream.
final Collection<? extends Certificate> generateCertificates(InputStream inStream)
Возвращает представление коллекции (возможно, пустой) сертификатов, считанных из указанного входного потока inStream.
final CertPath generateCertPath(InputStream inStream)
Создаёт объект CertPath и инициализирует его данными, считанными из InputStream inStream.
final CertPath generateCertPath(InputStream inStream, String encoding)
Создаёт объект CertPath и инициализирует его данными, считанными из InputStream inStream.
final CertPath generateCertPath(List<? extends Certificate> certificates)
Создаёт объект CertPath и инициализирует его List объектов Certificate.
final CRL generateCRL(InputStream inStream)
Создаёт объект списка отзыва сертификатов (CRL) и инициализирует его данными, считанными из входного потока inStream.
final Collection<? extends CRL> generateCRLs(InputStream inStream)
Возвращает представление коллекции (возможно, пустой) CRL, считанных из указанного входного потока inStream.
final Iterator<String> getCertPathEncodings()
Возвращает итерацию кодировок CertPath, поддерживаемых этой фабрикой сертификатов; первой указана кодировка по умолчанию.
static final CertificateFactory getInstance(String type)
Возвращает объект фабрики сертификатов, реализующий указанный тип сертификата.
static final CertificateFactory getInstance(String type, String provider)
Возвращает объект фабрики сертификатов для указанного типа сертификата.
static final CertificateFactory getInstance(String type, Provider provider)
Возвращает объект фабрики сертификатов для указанного типа сертификата.
final Provider getProvider()
Возвращает поставщика этой фабрики сертификатов.
final String getType()
Возвращает имя типа сертификата, связанного с этой фабрикой сертификатов.

Методы, объявленные в классе Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Модификатор и тип Метод Описание
protected Object clone()
Создаёт и возвращает копию этого объекта.
boolean equals(Object obj)
Указывает, равен ли этот объект какому-либо другому объекту.
protected void finalize()
Устарело, будет удалено: этот элемент API подлежит удалению в будущей версии.
Финализация объявлена устаревшей и подлежит удалению в одном из будущих выпусков.
final Class<?> getClass()
Возвращает класс времени выполнения этого Object.
int hashCode()
Возвращает значение хеш-кода этого объекта.
final void notify()
Пробуждает один поток, ожидающий на мониторе этого объекта.
final void notifyAll()
Пробуждает все потоки, ожидающие на мониторе этого объекта.
String toString()
Возвращает строковое представление объекта.
final void wait()
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова уведомления или прерывания.
final void wait(long timeoutMillis)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова уведомления или прерывания, либо пока не истечёт определённое время.
final void wait(long timeoutMillis, int nanos)
Заставляет текущий поток ожидать пробуждения, обычно в результате вызова уведомления или прерывания, либо пока не истечёт определённое время.

Подробное описание конструкторов

CertificateFactory

protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)
Создаёт объект CertificateFactory указанного типа и инкапсулирует в нём указанную реализацию поставщика (объект SPI).
Параметры:
certFacSpi — реализация поставщика.
provider — поставщик.
type — тип сертификата.

Подробное описание методов

getInstance

public static final CertificateFactory getInstance(String type) throws CertificateException
Возвращает объект фабрики сертификатов, реализующий указанный тип сертификата.

Этот метод перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного. Возвращается новый объект CertificateFactory, инкапсулирующий реализацию CertificateFactorySpi первого поставщика, поддерживающего указанный тип.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Примечание по реализации:
Эталонная реализация JDK дополнительно использует свойство jdk.security.provider.preferred Security, чтобы определить предпочтительный порядок поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемых методом Security.getProviders().
Параметры:
type — имя запрошенного типа сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory спецификации стандартных имён алгоритмов безопасности Java.
Возвращает:
объект фабрики сертификатов для указанного типа
Исключения:
CertificateException — если ни один Provider не поддерживает реализацию CertificateFactorySpi для указанного типа
NullPointerException — если type имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

getInstance

public static final CertificateFactory getInstance(String type, String provider) throws CertificateException, NoSuchProviderException
Возвращает объект фабрики сертификатов для указанного типа сертификата.

Возвращается новый объект CertificateFactory, инкапсулирующий реализацию CertificateFactorySpi указанного поставщика. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.

Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().

Параметры:
type — тип сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory спецификации стандартных имён алгоритмов безопасности Java.
provider — имя поставщика.
Возвращает:
объект фабрики сертификатов для указанного типа
Исключения:
CertificateException — если у указанного поставщика недоступна реализация CertificateFactorySpi для указанного алгоритма
IllegalArgumentException — если имя поставщика равно null или пусто
NoSuchProviderException — если указанный поставщик не зарегистрирован в списке поставщиков безопасности
NullPointerException — если type имеет значение null
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

getInstance

public static final CertificateFactory getInstance(String type, Provider provider) throws CertificateException
Возвращает объект фабрики сертификатов для указанного типа сертификата.

Возвращается новый объект CertificateFactory, инкапсулирующий реализацию CertificateFactorySpi из указанного объекта Provider. Обратите внимание, что указанный объект Provider необязательно должен быть зарегистрирован в списке поставщиков.

Параметры:
type — тип сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory спецификации стандартных имён алгоритмов безопасности Java.
provider — поставщик.
Возвращает:
объект фабрики сертификатов для указанного типа
Исключения:
CertificateException — если указанная реализация CertificateFactorySpi для алгоритма недоступна у указанного объекта Provider
IllegalArgumentException — если provider имеет значение null
NullPointerException — если type имеет значение null
Начиная с:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java
См. также:
  • Provider

getProvider

public final Provider getProvider()
Возвращает поставщика этой фабрики сертификатов.
Возвращает:
поставщика этой фабрики сертификатов.

getType

public final String getType()
Возвращает имя типа сертификата, связанного с этой фабрикой сертификатов.
Возвращает:
имя типа сертификата, связанного с этой фабрикой сертификатов.

generateCertificate

public final Certificate generateCertificate(InputStream inStream) throws CertificateException
Создаёт объект сертификата и инициализирует его данными, считанными из входного потока inStream.

Чтобы воспользоваться специализированным форматом сертификатов, поддерживаемым этой фабрикой сертификатов, возвращаемый объект сертификата можно привести к соответствующему классу сертификата. Например, если эта фабрика сертификатов реализует сертификаты X.509, возвращаемый объект сертификата можно привести к классу X509Certificate.

Для фабрики сертификатов X.509 предоставленный в inStream сертификат должен иметь кодировку DER и может быть представлен в двоичной или печатной (Base64) кодировке. Если сертификат представлен в кодировке Base64, в начале он должен быть ограничен строкой -----BEGIN CERTIFICATE-----, а в конце — строкой -----END CERTIFICATE-----.

Обратите внимание: если указанный входной поток не поддерживает mark и reset, этот метод прочитает весь входной поток. В противном случае каждый вызов метода считывает один сертификат, а позиция чтения входного потока устанавливается на следующий доступный байт после встроенного маркера конца сертификата. Если данные входного потока не содержат встроенного маркера конца сертификата (кроме EOF), а после разбора сертификата остаются дополнительные данные, будет выброшено исключение CertificateException.

Параметры:
inStream — входной поток с данными сертификата.
Возвращает:
объект сертификата, инициализированный данными из входного потока.
Исключения:
CertificateException — при ошибках разбора.

getCertPathEncodings

public final Iterator<String> getCertPathEncodings()
Возвращает итерацию кодировок CertPath, поддерживаемых этой фабрикой сертификатов; первой указана кодировка по умолчанию. Сведения о стандартных именах кодировок и их форматах см. в разделе «Кодировки CertPath» спецификации стандартных имён алгоритмов безопасности Java.

Попытки изменить возвращённый Iterator с помощью его метода remove приводят к исключению UnsupportedOperationException.

Возвращает:
Iterator по именам поддерживаемых кодировок CertPath (в виде String)
Начиная с:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java

generateCertPath

public final CertPath generateCertPath(InputStream inStream) throws CertificateException
Создаёт объект CertPath и инициализирует его данными, считанными из InputStream inStream. Предполагается, что данные имеют кодировку по умолчанию. Имя кодировки по умолчанию является первым элементом Iterator, возвращаемого методом getCertPathEncodings.
Параметры:
inStream — InputStream, содержащий данные
Возвращает:
CertPath, инициализированный данными из InputStream
Исключения:
CertificateException — если при декодировании возникает исключение
Начиная с:
1.4

generateCertPath

public final CertPath generateCertPath(InputStream inStream, String encoding) throws CertificateException
Создаёт объект CertPath и инициализирует его данными, считанными из InputStream inStream. Предполагается, что данные имеют указанную кодировку. Сведения о стандартных именах кодировок и их форматах см. в разделе «Кодировки CertPath» спецификации стандартных имён алгоритмов безопасности Java.
Параметры:
inStream — InputStream, содержащий данные
encoding — кодировка, используемая для данных
Возвращает:
CertPath, инициализированный данными из InputStream
Исключения:
CertificateException — если при декодировании возникает исключение или запрошенная кодировка не поддерживается
Начиная с:
1.4
Внешние спецификации
  • Стандартные имена алгоритмов безопасности Java

generateCertPath

public final CertPath generateCertPath(List<? extends Certificate> certificates) throws CertificateException
Создаёт объект CertPath и инициализирует его List объектов Certificate.

Предоставленные сертификаты должны иметь тип, поддерживаемый CertificateFactory. Они будут скопированы из предоставленного объекта List.

Параметры:
certificates — List объектов Certificate
Возвращает:
CertPath, инициализированный предоставленным списком сертификатов
Исключения:
CertificateException — если возникает исключение
Начиная с:
1.4

generateCertificates

public final Collection<? extends Certificate> generateCertificates(InputStream inStream) throws CertificateException
Возвращает представление коллекции (возможно, пустой) сертификатов, считанных из указанного входного потока inStream.

Чтобы воспользоваться специализированным форматом сертификатов, поддерживаемым этой фабрикой сертификатов, каждый элемент возвращённого представления коллекции можно привести к соответствующему классу сертификата. Например, если эта фабрика сертификатов реализует сертификаты X.509, элементы возвращённой коллекции можно привести к классу X509Certificate.

Для фабрики сертификатов X.509 inStream может содержать последовательность сертификатов в кодировке DER в форматах, описанных для метода generateCertificate. Кроме того, inStream может содержать цепочку сертификатов PKCS#7. Это объект PKCS#7 SignedData, единственным значимым полем которого является certificates. В частности, подпись и содержимое игнорируются. Этот формат позволяет загружать несколько сертификатов одновременно. Если сертификаты отсутствуют, возвращается пустая коллекция.

Обратите внимание: если указанный входной поток не поддерживает mark и reset, этот метод прочитает весь входной поток.

Параметры:
inStream — входной поток с сертификатами.
Возвращает:
представление коллекции (возможно, пустой) объектов java.security.cert.Certificate, инициализированных данными из входного потока.
Исключения:
CertificateException — при ошибках разбора.

generateCRL

public final CRL generateCRL(InputStream inStream) throws CRLException
Создаёт объект списка отзыва сертификатов (CRL) и инициализирует его данными, считанными из входного потока inStream.

Чтобы воспользоваться специализированным форматом CRL, поддерживаемым этой фабрикой сертификатов, возвращаемый объект CRL можно привести к соответствующему классу CRL. Например, если эта фабрика сертификатов реализует CRL X.509, возвращаемый объект CRL можно привести к классу X509CRL.

Обратите внимание: если указанный входной поток не поддерживает mark и reset, этот метод прочитает весь входной поток. В противном случае каждый вызов метода считывает один CRL, а позиция чтения входного потока устанавливается на следующий доступный байт после встроенного маркера конца CRL. Если данные входного потока не содержат встроенного маркера конца CRL (кроме EOF), а после разбора CRL остаются дополнительные данные, будет выброшено исключение CRLException.

Параметры:
inStream — входной поток с данными CRL.
Возвращает:
объект CRL, инициализированный данными из входного потока.
Исключения:
CRLException — при ошибках разбора.

generateCRLs

public final Collection<? extends CRL> generateCRLs(InputStream inStream) throws CRLException
Возвращает представление коллекции (возможно, пустой) CRL, считанных из указанного входного потока inStream.

Чтобы воспользоваться специализированным форматом CRL, поддерживаемым этой фабрикой сертификатов, каждый элемент возвращённого представления коллекции можно привести к соответствующему классу CRL. Например, если эта фабрика сертификатов реализует CRL X.509, элементы возвращённой коллекции можно привести к классу X509CRL.

Для фабрики сертификатов X.509 inStream может содержать последовательность CRL в кодировке DER. Кроме того, inStream может содержать набор CRL PKCS#7. Это объект PKCS#7 SignedData, единственным значимым полем которого является crls. В частности, подпись и содержимое игнорируются. Этот формат позволяет загружать несколько CRL одновременно. Если CRL отсутствуют, возвращается пустая коллекция.

Обратите внимание: если указанный входной поток не поддерживает mark и reset, этот метод прочитает весь входной поток.

Параметры:
inStream — входной поток с CRL.
Возвращает:
представление коллекции (возможно, пустой) объектов java.security.cert.CRL, инициализированных данными из входного потока.
Исключения:
CRLException — при ошибках разбора.

Сообщить об ошибке или предложить улучшение
Дополнительные справочные материалы по API и документацию для разработчиков см. в документации Java SE, содержащей более подробные описания для разработчиков, обзор концепций, определения терминов, обходные решения и примеры работающего кода. Другие версии.
Java является товарным знаком или зарегистрированным товарным знаком Oracle и/или её аффилированных лиц в США и других странах.
Авторское право © 1993, 2026, Oracle и/или её аффилированные лица, 500 Oracle Parkway, Redwood Shores, CA 94065 USA.
Все права защищены. Использование регулируется условиями лицензии и политикой распространения документации.

© 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.

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API