Spec-Zone.ru › OpenJDK 24

Класс 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 Security Standard Algorithm Names. Обратитесь к документации релиза вашей реализации, чтобы узнать, какие другие типы или кодировки поддерживаются.
С:
1.2
См. также:
  • 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()
Возвращает имя типа сертификата, связанного с этой фабрикой сертификатов.

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

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

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

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 Security Standard Algorithm Names для получения информации о стандартных типах сертификатов.
Возвращает:
объект фабрики сертификатов для указанного типа
Исключения:
CertificateException - если ни один Provider не поддерживает реализацию CertificateFactorySpi для указанного типа
NullPointerException - если type является null
См. также:
  • Provider

getInstance

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

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

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

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

getInstance

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

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

Параметры:
type - тип сертификата. См. раздел CertificateFactory в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных типах сертификатов.
provider - поставщик.
Возвращает:
объект фабрики сертификатов для указанного типа
Исключения:
CertificateException - если реализация CertificateFactorySpi для указанного алгоритма недоступна от указанного объекта Provider
IllegalArgumentException - если provider является null
NullPointerException - если type является null
С момента:
1.4
См. также:
  • 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 Encodings в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах кодировки и их форматах.

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

Возвращает:
итератор по именам поддерживаемых кодировок CertPath (в виде строк)
С момента:
1.4

generateCertPath

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

generateCertPath

public final CertPath generateCertPath(InputStream inStream, String encoding) throws CertificateException
Генерирует объект CertPath и инициализирует его данными, считанными из потока ввода InputStream. Данные предполагаются в указанной кодировке. См. раздел CertPath Encodings в Спецификации Java Security Standard Algorithm Names для получения информации о стандартных именах кодировки и их форматах.
Параметры:
inStream - поток ввода, содержащий данные
encoding - кодировка, используемая для данных
Возвращает:
объект CertPath, инициализированный данными из потока ввода
Исключения:
CertificateException - если произошла ошибка при декодировании или запрошенная кодировка не поддерживается
С момента:
1.4

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. Например, если эта фабрика сертификатов реализует X.509 CRL, возвращаемый объект 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. Например, если эта фабрика сертификатов реализует X.509 CRL, элементы возвращаемой коллекции можно привести к классу X509CRL.

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

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

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

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/java/security/cert/CertificateFactory.html

Spec-Zone.ru

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