Spec-Zone.ru › OpenJDK 8

Класс 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 Encodings документации Java Cryptography Architecture Standard Algorithm Name. Обратитесь к документации релиза вашей реализации, чтобы узнать, какие другие типы или кодировки поддерживаются.
Since:
1.2
See Also:
Certificate, X509Certificate, CertPath, CRL, X509CRL

Конструкторы

Модификатор Конструктор и описание
protected CertificateFactory(CertificateFactorySpi certFacSpi, Provider provider, String type)

Создаёт объект CertificateFactory заданного типа и инкапсулирует заданную реализацию поставщика (объект SPI) в нём.

Методы

Модификатор и тип Метод и описание
Certificate generateCertificate(InputStream inStream)

Генерирует объект сертификата и инициализирует его данными, считанными из входного потока inStream.

Collection<? extends Certificate> generateCertificates(InputStream inStream)

Возвращает (возможно, пустую) коллекцию представлений сертификатов, прочитанных из данного входного потока inStream.

CertPath generateCertPath(InputStream inStream)

Генерирует объект CertPath и инициализирует его данными, считанными из InputStream inStream.

CertPath generateCertPath(InputStream inStream, String encoding)

Генерирует объект CertPath и инициализирует его данными, считанными из InputStream inStream.

CertPath generateCertPath(List<? extends Certificate> certificates)

Генерирует объект CertPath и инициализирует его с помощью List Certificate.

CRL generateCRL(InputStream inStream)

Генерирует объект списка отзыва сертификатов (CRL) и инициализирует его данными, считанными из входного потока inStream.

Collection<? extends CRL> generateCRLs(InputStream inStream)

Возвращает (возможно, пустую) коллекцию представлений CRL, прочитанных из данного входного потока inStream.

Iterator<String> getCertPathEncodings()

Возвращает итератор CertPath кодировок, поддерживаемых этой фабрикой сертификатов, с использованием первой по умолчанию кодировки.

static CertificateFactory getInstance(String type)

Возвращает объект фабрики сертификатов, реализующий указанный тип сертификата.

static CertificateFactory getInstance(String type, Provider provider)

Возвращает объект фабрики сертификатов для указанного типа сертификата.

static CertificateFactory getInstance(String type, String provider)

Возвращает объект фабрики сертификатов для указанного типа сертификата.

Provider getProvider()

Возвращает поставщика этой фабрики сертификатов.

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().

Параметры:
type - имя запрошенного типа сертификата. Сведения о стандартных типах сертификатов см. в разделе CertificateFactory документации Java Cryptography Architecture по стандартным именам алгоритмов .
Возвращает:
объект фабрики сертификатов для указанного типа.
Исключения:
CertificateException - если ни один поставщик не поддерживает реализацию CertificateFactorySpi для указанного типа.
См. также:
Provider

getInstance

public static final CertificateFactory getInstance(String type,
                                                   String provider)
                                            throws CertificateException,
                                                   NoSuchProviderException

Возвращает объект фабрики сертификатов для указанного типа сертификата.

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

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

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

getInstance

public static final CertificateFactory getInstance(String type,
                                                   Provider provider)
                                            throws CertificateException

Возвращает объект фабрики сертификатов для указанного типа сертификата.

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

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

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

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

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 Encodings документации Java Cryptography Architecture по стандартным именам алгоритмов .

Параметры:
inStream - InputStream содержащий данные
encoding - используемая кодировка данных
Возвращает:
объект CertPath инициализированный данными из InputStream
Исключения:
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, этот метод прочитает весь входной поток.

Parameters:
inStream - входной поток с сертификатами.
Returns:
коллекция представлений объектов java.security.cert.Certificate, инициализированных данными из входного потока.
Throws:
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.

Parameters:
inStream - входной поток с данными CRL.
Returns:
объект CRL, инициализированный данными из входного потока.
Throws:
CRLException - при ошибках парсинга.

generateCRLs

public final Collection<? extends CRL> generateCRLs(InputStream inStream)
                                             throws CRLException

Возвращает (возможно, пустую) коллекцию представлений списков отзыва сертификатов (CRLs), прочитанных из заданного входного потока inStream.

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

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

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

Parameters:
inStream - входной поток с CRL.
Returns:
коллекция представлений объектов java.security.cert.CRL, инициализированных данными из входного потока.
Throws:
CRLException - при ошибках парсинга.

© 1993, 2020, 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