Класс KeyInfoFactory
public abstract class KeyInfoFactory extends Object
KeyInfo с нуля или для разбора объекта KeyInfo из соответствующего XML-представления. Каждый экземпляр KeyInfoFactory поддерживает определённый тип XML-механизма. Для создания KeyInfoFactory, вызовите один из статических методов getInstance, передав в него желаемый тип XML-механизма, например:
KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM");
Объекты, создаваемые этой фабрикой, будут основаны на 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 в Java Security Standard Algorithm Names Specification. - Возвращает:
- новый
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 в Java Security Standard Algorithm Names Specification. -
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 в Java Security Standard Algorithm Names Specification. -
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- списокTransforms. Список защищён от последующих изменений. Может быть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, 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.xml.crypto/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.html