Класс KeyInfoFactory
public abstract class KeyInfoFactory extends Object
KeyInfo с нуля или для разархивирования объекта KeyInfo из соответствующего XML-представления. Каждый экземпляр KeyInfoFactory поддерживает определённый тип XML-механизма. Для создания KeyInfoFactory, вызовите один из статических методов getInstance, передав желаемый тип XML-механизма, например:
KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
Создаваемые этой фабрикой объекты основаны на DOM и соответствуют требованиям междоменной совместимости, определённым в Требованиях к механизму DOM. Список стандартных типов механизмов см. в разделе KeyInfoFactory спецификации Стандартных имён алгоритмов Java Security.
Реализации KeyInfoFactory регистрируются и загружаются с помощью механизма Provider. Например, поставщик услуг, поддерживающий механизм DOM, будет указан в подклассе Provider как:
put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory");
Кроме того, объекты XMLStructure , созданные этой фабрикой, могут содержать состояние, специфичное для KeyInfo , и не предназначены для повторного использования.
Реализация ДОЛЖНА минимально поддерживать тип механизма по умолчанию: DOM.
Обратите внимание, что вызывающий метод должен использовать тот же экземпляр KeyInfoFactory для создания объектов XMLStructure конкретного объекта KeyInfo. Поведение не определено, если объекты XMLStructure из разных поставщиков или разных типов механизмов используются вместе.
Доступ к нескольким потокам
Статические методы этого класса гарантированно потокобезопасны. Несколько потоков могут одновременно вызывать статические методы, определённые в этом классе, без каких-либо последствий.
Однако это не относится к методам, не являющимся статическими, определённым в этом классе. Если не указано иначе конкретным поставщиком, потоки, которым необходимо получить одновременный доступ к одному экземпляру объекта KeyInfoFactory, должны синхронизироваться между собой и обеспечить необходимую блокировку. Несколько потоков, манипулирующих разными экземплярами объекта KeyInfoFactory , синхронизироваться не должны.
- Since:
- 1.6
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected |
Конструктор по умолчанию, для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static KeyInfoFactory |
getInstance() |
Возвращает KeyInfoFactory , который поддерживает механизм обработки XML по умолчанию и тип представления ("DOM"). |
static KeyInfoFactory |
getInstance |
Возвращает KeyInfoFactory , который поддерживает указанный механизм обработки XML и тип представления (например, "DOM"). |
static KeyInfoFactory |
getInstance |
Возвращает KeyInfoFactory , который поддерживает запрашиваемый механизм обработки XML и тип представления (например, "DOM"), предоставленные указанным поставщиком. |
static KeyInfoFactory |
getInstance |
Возвращает KeyInfoFactory , который поддерживает запрашиваемый механизм обработки XML и тип представления (например, "DOM"), предоставленные указанным поставщиком. |
final String |
getMechanismType() |
Возвращает тип механизма обработки XML и поддерживаемого этим KeyInfoFactory представления (например, "DOM"). |
final Provider |
getProvider() |
Возвращает поставщика этого KeyInfoFactory. |
abstract URIDereferencer |
getURIDereferencer() |
Возвращает ссылку на URIDereferencer , используемый по умолчанию для дезархивирования URI в объектах RetrievalMethod. |
abstract boolean |
isFeatureSupported |
Указывает, поддерживается ли указанная функция. |
abstract KeyInfo |
newKeyInfo |
Создаёт KeyInfo , содержащий указанный список типов информации о ключе. |
abstract KeyInfo |
newKeyInfo |
Создаёт KeyInfo , содержащий указанный список типов информации о ключе и необязательный идентификатор. |
abstract KeyName |
newKeyName |
Создаёт KeyName из указанного имени. |
abstract KeyValue |
newKeyValue |
Создаёт KeyValue из указанного открытого ключа. |
abstract PGPData |
newPGPData |
Создаёт PGPData из указанного идентификатора открытого ключа PGP. |
abstract PGPData |
newPGPData |
Создаёт PGPData из указанного идентификатора открытого ключа PGP и необязательного пакета с ключевыми материалами и списка внешних элементов. |
abstract PGPData |
newPGPData |
Создаёт PGPData из указанного пакета с ключевыми материалами PGP и необязательного списка внешних элементов. |
abstract RetrievalMethod |
newRetrievalMethod |
Создаёт RetrievalMethod из указанного URI. |
abstract RetrievalMethod |
newRetrievalMethod |
Создаёт RetrievalMethod из указанных параметров. |
abstract X509Data |
newX509Data |
Создаёт X509Data , содержащий указанный список содержимого X.509. |
abstract X509IssuerSerial |
newX509IssuerSerial |
Создаёт X509IssuerSerial из указанного имени отметки издателя X.500 и серийного номера. |
abstract KeyInfo |
unmarshalKeyInfo |
Разархивирует новый экземпляр KeyInfo из механизм-специфичного экземпляра XMLStructure (например, DOMStructure). |
Подробное описание конструкторов
KeyInfoFactory
protected KeyInfoFactory()
Подробное описание методов
getInstance
public static KeyInfoFactory getInstance(String mechanismType)
KeyInfoFactory, который поддерживает указанный механизм обработки XML и тип представления (например, "DOM"). Этот метод использует стандартный механизм поиска поставщиков JCA для поиска и создания экземпляра реализации KeyInfoFactory желаемого типа механизма. Он проходит по списку зарегистрированных Provider безопасности, начиная с наиболее предпочтительного Provider. Возвращается новый объект KeyInfoFactory от первого Provider , который поддерживает указанный механизм.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Описание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Параметры:
-
mechanismType- тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделеKeyInfoFactoryв Спецификации Java Security Standard Algorithm Names. - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NullPointerException- еслиmechanismTypeявляетсяnull -
NoSuchMechanismException- если ни одинProviderне поддерживает реализациюKeyInfoFactoryдля указанного механизма - См. также:
getInstance
public static KeyInfoFactory getInstance(String mechanismType, Provider provider)
KeyInfoFactory, который поддерживает затребованный механизм обработки XML и тип представления (например, "DOM"), предоставленный указанным поставщиком. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.- Параметры:
-
mechanismType- тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделеKeyInfoFactoryв Спецификации Java Security Standard Algorithm Names. -
provider- объектProvider - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NullPointerException- еслиmechanismTypeилиproviderявляютсяnull -
NoSuchMechanismException- если реализацияKeyInfoFactoryдля указанного механизма недоступна от указанного объектаProvider - См. также:
getInstance
public static KeyInfoFactory getInstance(String mechanismType, String provider) throws NoSuchProviderException
KeyInfoFactory, который поддерживает затребованный механизм обработки XML и тип представления (например, "DOM"), предоставленный указанным поставщиком. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности. Список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
mechanismType- тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделеKeyInfoFactoryв Спецификации Java Security Standard Algorithm Names. -
provider- имя строки поставщика - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиmechanismTypeилиproviderявляютсяnull -
NoSuchMechanismException- если реализацияKeyInfoFactoryдля указанного механизма недоступна от указанного поставщика - См. также:
getInstance
public static KeyInfoFactory getInstance()
KeyInfoFactory, который поддерживает значения по умолчанию для механизма обработки XML и типа представления ("DOM"). Этот метод использует стандартный механизм поиска поставщиков JCA для поиска и создания экземпляра реализации KeyInfoFactory типа механизма по умолчанию. Он проходит по списку зарегистрированных поставщиков Provider безопасности, начиная с наиболее предпочтительного Provider. Возвращается новый объект KeyInfoFactory от первого Provider , который поддерживает механизм DOM.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Описание реализации:
- Реализация JDK дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Это может отличаться от порядка поставщиков, возвращаемого методомSecurity.getProviders(). - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NoSuchMechanismException- если ни одинProviderне поддерживает реализациюKeyInfoFactoryдля механизма DOM - См. также:
getMechanismType
public final String getMechanismType()
KeyInfoFactory (например, "DOM")- Возвращает:
- тип механизма обработки XML, поддерживаемый этим
KeyInfoFactory
getProvider
public final Provider getProvider()
KeyInfoFactory.- Возвращает:
- поставщик этого
KeyInfoFactory
newKeyInfo
public abstract KeyInfo newKeyInfo(List<? extends XMLStructure> content)
KeyInfo, содержащий указанный список типов информации о ключе.- Параметры:
-
content- список одного или нескольких объектовXMLStructure, представляющих типы информации о ключе. Список копируется для защиты от последующих изменений. - Возвращает:
- объект
KeyInfo - Исключения:
-
NullPointerException- еслиcontentявляетсяnull -
IllegalArgumentException- еслиcontentпуст -
ClassCastException- еслиcontentсодержит записи, не являющиеся объектами типаXMLStructure
newKeyInfo
public abstract KeyInfo newKeyInfo(List<? extends XMLStructure> content, String id)
KeyInfo, содержащий указанный список типов информации о ключе и необязательный идентификатор. Параметр id представляет значение атрибута XML ID и полезен для ссылки на KeyInfo из других XML-структур.- Параметры:
-
content- список одного или нескольких объектовXMLStructure, представляющих типы информации о ключе. Список копируется для защиты от последующих изменений. -
id- значение атрибута XMLID(может бытьnull) - Возвращает:
- объект
KeyInfo - Исключения:
-
NullPointerException- еслиcontentявляетсяnull -
IllegalArgumentException- еслиcontentпуст -
ClassCastException- еслиcontentсодержит записи, не являющиеся объектами типаXMLStructure
newKeyName
public abstract KeyName newKeyName(String name)
KeyName из указанного имени.- Параметры:
-
name- имя, идентифицирующее ключ - Возвращает:
- объект
KeyName - Исключения:
-
NullPointerException- еслиnameявляетсяnull
newKeyValue
public abstract KeyValue newKeyValue(PublicKey key) throws KeyException
KeyValue из указанного открытого ключа.- Parameters:
-
key- открытый ключ - Returns:
- a
KeyValue - Throws:
-
KeyException- если алгоритмkeyне распознан или не поддерживается этимKeyInfoFactory -
NullPointerException- еслиkeynull
newPGPData
public abstract PGPData newPGPData(byte[] keyId)
PGPData из указанного идентификатора открытого ключа PGP.- Parameters:
-
keyId- идентификатор открытого ключа PGP, как определено в RFC 2440, раздел 11.2. Массив клонируется для защиты от последующих изменений. - Returns:
- a
PGPData - Throws:
-
NullPointerException- еслиkeyIdnull -
IllegalArgumentException- если идентификатор ключа имеет неверный формат
newPGPData
public abstract PGPData newPGPData(byte[] keyId, byte[] keyPacket, List<? extends XMLStructure> other)
PGPData из указанного идентификатора открытого ключа PGP, и опционального пакета ключевого материала и списка внешних элементов.- Parameters:
-
keyId- идентификатор открытого ключа PGP, как определено в RFC 2440, раздел 11.2. Массив клонируется для защиты от последующих изменений. -
keyPacket- пакет ключевого материала PGP, как определено в RFC 2440, раздел 5.5. Массив клонируется для защиты от последующих изменений. Может бытьnull. -
other- списокXMLStructureобъектов, представляющих элементы из внешнего пространства имён. Список защищён от последующих изменений. Может бытьnullили пустым. - Returns:
- a
PGPData - Throws:
-
NullPointerException- еслиkeyIdnull -
IllegalArgumentException- еслиkeyIdилиkeyPacketимеют неверный формат. ДляkeyPacket, проверяется формат заголовка пакета и тег, чтобы он был типа ключевого материала. Содержимое и формат тела пакета не проверяются. -
ClassCastException- еслиotherсодержит какие-либо записи, которые не являются типаXMLStructure
newPGPData
public abstract PGPData newPGPData(byte[] keyPacket, List<? extends XMLStructure> other)
PGPData из указанного пакета ключевого материала PGP и опционального списка внешних элементов.- Parameters:
-
keyPacket- пакет ключевого материала PGP, как определено в RFC 2440, раздел 5.5. Массив клонируется для защиты от последующих изменений. -
other- списокXMLStructureобъектов, представляющих элементы из внешнего пространства имён. Список защищён от последующих изменений. Может бытьnullили пустым. - Returns:
- a
PGPData - Throws:
-
NullPointerException- еслиkeyPacketnull -
IllegalArgumentException- еслиkeyPacketимеет неверный формат. ДляkeyPacket, проверяется формат заголовка пакета и тег, чтобы он был типа ключевого материала. Содержимое и формат тела пакета не проверяются. -
ClassCastException- еслиotherсодержит какие-либо записи, которые не являются типаXMLStructure
newRetrievalMethod
public abstract RetrievalMethod newRetrievalMethod(String uri)
RetrievalMethod из указанного URI.- Parameters:
-
uri- URI, идентифицирующий информациюKeyInfoдля извлечения - Returns:
- a
RetrievalMethod - Throws:
-
NullPointerException- еслиurinull -
IllegalArgumentException- еслиuriне соответствует RFC 2396
newRetrievalMethod
public abstract RetrievalMethod newRetrievalMethod(String uri, String type, List<? extends Transform> transforms)
RetrievalMethod из указанных параметров.- Parameters:
-
uri- URI, идентифицирующий информациюKeyInfoдля извлечения -
type- URI, идентифицирующий тип информацииKeyInfoдля извлечения (может бытьnull) -
transforms- списокTransformобъектов. Список защищён от последующих изменений. Может бытьnullили пустым. - Returns:
- a
RetrievalMethod - Throws:
-
NullPointerException- еслиurinull -
IllegalArgumentException- еслиuriне соответствует RFC 2396 -
ClassCastException- еслиtransformsсодержит какие-либо записи, которые не являются типаTransform
newX509Data
public abstract X509Data newX509Data(List<?> content)
X509Data, содержащий указанный список данных X.509.- Parameters:
-
content- список одного или нескольких типов содержимого X.509. Допустимые типы:String(имена субъектов),byte[](идентификаторы открытых ключей субъектов),X509Certificate,X509CRLилиXMLStructure(X509IssuerSerialобъекты или элементы из внешнего пространства имён). Имена субъектов — это строковые имена в формате RFC 2253. Реализации ДОЛЖНЫ поддерживать ключевые слова типов атрибутов, определённые в RFC 2253 (CN, L, ST, O, OU, C, STREET, DC и UID). Реализации МОГУТ поддерживать дополнительные ключевые слова. Список защищён от последующих изменений. - Returns:
- a
X509Data - Throws:
-
NullPointerException- еслиcontentnull -
IllegalArgumentException- еслиcontentпуст, или имя субъекта не соответствует RFC 2253, или одно из ключевых слов типа атрибута не распознано. -
ClassCastException- еслиcontentсодержит какие-либо записи, которые не соответствуют одному из допустимых типов, упомянутых выше
newX509IssuerSerial
public abstract X509IssuerSerial newX509IssuerSerial(String issuerName, BigInteger serialNumber)
X509IssuerSerial из указанного имени субъекта X.500 и номера серии.- Parameters:
-
issuerName- имя субъекта-издателя в формате строки RFC 2253. Реализации ДОЛЖНЫ поддерживать ключевые слова типов атрибутов, определённые в RFC 2253 (CN, L, ST, O, OU, C, STREET, DC и UID). Реализации МОГУТ поддерживать дополнительные ключевые слова. -
serialNumber- номер серии - Returns:
- an
X509IssuerSerial - Throws:
-
NullPointerException- еслиissuerNameилиserialNumbernull -
IllegalArgumentException- если имя издателя не соответствует RFC 2253, или одно из ключевых слов типа атрибута не распознано.
isFeatureSupported
public abstract boolean isFeatureSupported(String feature)
- Parameters:
-
feature- имя свойства (как абсолютный URI) - Returns:
-
trueесли указанное свойство поддерживается,falseв противном случае - Throws:
-
NullPointerException- еслиfeaturenull
getURIDereferencer
public abstract URIDereferencer getURIDereferencer()
URIDereferencer, используемую по умолчанию для обработки URI в объектах RetrievalMethod.- Returns:
- ссылка на по умолчанию
URIDereferencer
unmarshalKeyInfo
public abstract KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure) throws MarshalException
KeyInfo из механически-специфичного XMLStructure (например, DOMStructure) экземпляра.- Parameters:
-
xmlStructure- механически-специфичная структура XML, из которой десериализовать keyinfo - Returns:
- the
KeyInfo - Throws:
-
NullPointerException- еслиxmlStructurenull -
ClassCastException- если типxmlStructureне подходит для этой фабрики -
MarshalException- если во время десериализации произошла невосстановимая ошибка
© 1993, 2023, 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/21/docs/api/java.xml.crypto/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.html