Класс 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.
Реализации KeyInfoFactory регистрируются и загружаются с помощью механизма Provider. Например, поставщик услуг, поддерживающий механизм DOM, указывается в подклассе Provider следующим образом:
put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory");
Кроме того, объекты XMLStructure, создаваемые этой фабрикой, могут содержать состояние, специфичное для KeyInfo, и не предназначены для повторного использования.
Реализация ДОЛЖНА как минимум поддерживать тип механизма по умолчанию: DOM.
Обратите внимание, что вызывающий код должен использовать один и тот же экземпляр KeyInfoFactory для создания объектов XMLStructure конкретного объекта KeyInfo. Поведение не определено, если совместно используются объекты XMLStructure от разных поставщиков или для разных типов механизмов.
Параллельный доступ
Потокобезопасность статических методов этого класса гарантируется. Несколько потоков могут одновременно вызывать статические методы, определённые в этом классе, без нежелательных последствий.
Однако это не относится к нестатическим методам, определённым этим классом. Если документация конкретного поставщика не указывает иное, потоки, которым необходимо одновременно обращаться к одному экземпляру KeyInfoFactory, должны синхронизировать свои действия и обеспечивать необходимую блокировку. Потокам, каждый из которых работает с отдельным экземпляром KeyInfoFactory, синхронизация не требуется.
- Начиная с:
- 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 Reference Implementation дополнительно использует свойство
jdk.security.provider.preferredSecurityдля определения предпочтительного порядка поставщиков для указанного алгоритма. Этот порядок может отличаться от порядка поставщиков, возвращаемых методомSecurity.getProviders(). - Параметры:
-
mechanismType— тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделеKeyInfoFactoryспецификации Стандартные имена алгоритмов безопасности Java. - Возвращает:
- новый
KeyInfoFactory - Вызывает:
-
NullPointerException— еслиmechanismTypeимеет значениеnull -
NoSuchMechanismException— если ни одинProviderне поддерживает реализациюKeyInfoFactoryдля указанного механизма - Внешние спецификации
- См. также:
getInstance
public static KeyInfoFactory getInstance(String mechanismType, Provider provider)
KeyInfoFactory, поддерживающий запрошенный механизм обработки XML и тип представления (например, "DOM"), предоставляемый указанным поставщиком. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.- Параметры:
-
mechanismType— тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделеKeyInfoFactoryспецификации Стандартные имена алгоритмов безопасности Java. -
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. -
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 Reference Implementation дополнительно использует свойство
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 из указанного открытого ключа.- Параметры:
-
key— открытый ключ - Возвращает:
KeyValue- Вызывает:
-
KeyException— если алгоритмkeyне распознан или не поддерживается этойKeyInfoFactory -
NullPointerException— еслиkeyимеет значениеnull
newPGPData
public abstract PGPData newPGPData(byte[] keyId)
PGPData из указанного идентификатора открытого ключа PGP.- Параметры:
-
keyId— идентификатор открытого ключа PGP, определенный в RFC 2440, раздел 11.2. Массив копируется для защиты от последующего изменения. - Возвращает:
PGPData- Вызывает:
-
NullPointerException— еслиkeyIdимеет значениеnull -
IllegalArgumentException— если идентификатор ключа имеет неправильный формат
newPGPData
public abstract PGPData newPGPData(byte[] keyId, byte[] keyPacket, List<? extends XMLStructure> other)
PGPData из указанного идентификатора открытого ключа PGP, необязательного пакета с материалом ключа и списка внешних элементов.- Параметры:
-
keyId— идентификатор открытого ключа PGP, определенный в RFC 2440, раздел 11.2. Массив копируется для защиты от последующего изменения. -
keyPacket— пакет с материалом ключа PGP, определенный в RFC 2440, раздел 5.5. Массив копируется для защиты от последующего изменения. Может иметь значениеnull. -
other— список объектовXMLStructure, представляющих элементы из внешнего пространства имен. Список копируется для защиты от последующего изменения. Может иметь значениеnullили быть пустым. - Возвращает:
PGPData- Вызывает:
-
NullPointerException— еслиkeyIdимеет значениеnull -
IllegalArgumentException— еслиkeyIdилиkeyPacketимеет неправильный формат. ДляkeyPacketпроверяется формат заголовка пакета и подтверждается, что его тег соответствует типу материала ключа. Содержимое и формат тела пакета не проверяются. -
ClassCastException— еслиotherсодержит записи, тип которых отличается отXMLStructure
newPGPData
public abstract PGPData newPGPData(byte[] keyPacket, List<? extends XMLStructure> other)
PGPData из указанного пакета с материалом ключа PGP и необязательного списка внешних элементов.- Параметры:
-
keyPacket— пакет с материалом ключа PGP, определенный в RFC 2440, раздел 5.5. Массив копируется для защиты от последующего изменения. -
other— список объектовXMLStructure, представляющих элементы из внешнего пространства имен. Список копируется для защиты от последующего изменения. Может иметь значениеnullили быть пустым. - Возвращает:
PGPData- Вызывает:
-
NullPointerException— еслиkeyPacketимеет значениеnull -
IllegalArgumentException— еслиkeyPacketимеет неправильный формат. ДляkeyPacketпроверяется формат заголовка пакета и подтверждается, что его тег соответствует типу материала ключа. Содержимое и формат тела пакета не проверяются. -
ClassCastException— еслиotherсодержит записи, тип которых отличается отXMLStructure
newRetrievalMethod
public abstract RetrievalMethod newRetrievalMethod(String uri)
RetrievalMethod из указанного URI.- Параметры:
-
uri— URI, идентифицирующий извлекаемые сведения оKeyInfo - Возвращает:
RetrievalMethod- Вызывает:
-
NullPointerException— еслиuriимеет значениеnull -
IllegalArgumentException— еслиuriне соответствует RFC 2396
newRetrievalMethod
public abstract RetrievalMethod newRetrievalMethod(String uri, String type, List<? extends Transform> transforms)
RetrievalMethod из указанных параметров.- Параметры:
-
uri— URI, идентифицирующий извлекаемые сведения оKeyInfo -
type— URI, идентифицирующий тип извлекаемых сведений оKeyInfo(может иметь значениеnull) -
transforms— список объектовTransform. Список копируется для защиты от последующего изменения. Может иметь значениеnullили быть пустым. - Возвращает:
RetrievalMethod- Вызывает:
-
NullPointerException— еслиuriимеет значениеnull -
IllegalArgumentException— еслиuriне соответствует RFC 2396 -
ClassCastException— еслиtransformsсодержит записи, тип которых отличается отTransform
newX509Data
public abstract X509Data newX509Data(List<?> content)
X509Data, содержащий указанный список данных X.509.- Параметры:
-
content— список из одного или нескольких типов данных X.509. Допустимые типы:String(имена субъектов),byte[](идентификаторы ключей субъектов),X509Certificate,X509CRLилиXMLStructure(объектыX509IssuerSerialили элементы из внешнего пространства имен). Имена субъектов представляют собой различительные имена в строковом формате RFC 2253. Реализации ДОЛЖНЫ поддерживать ключевые слова типов атрибутов, определенные в RFC 2253 (CN, L, ST, O, OU, C, STREET, DC и UID). Реализации МОГУТ поддерживать дополнительные ключевые слова. Список копируется для защиты от последующего изменения. - Возвращает:
X509Data- Вызывает:
-
NullPointerException— еслиcontentимеет значениеnull -
IllegalArgumentException— еслиcontentпуст, имя субъекта не соответствует RFC 2253 или одно из ключевых слов типов атрибутов не распознано. -
ClassCastException— еслиcontentсодержит записи, тип которых не входит в список допустимых типов, указанных выше
newX509IssuerSerial
public abstract X509IssuerSerial newX509IssuerSerial(String issuerName, BigInteger serialNumber)
X509IssuerSerial из указанного различительного имени издателя X.500 и серийного номера.- Параметры:
-
issuerName— различительное имя издателя в строковом формате RFC 2253. Реализации ДОЛЖНЫ поддерживать ключевые слова типов атрибутов, определенные в RFC 2253 (CN, L, ST, O, OU, C, STREET, DC и UID). Реализации МОГУТ поддерживать дополнительные ключевые слова. -
serialNumber— серийный номер - Возвращает:
X509IssuerSerial- Вызывает:
-
NullPointerException— еслиissuerNameилиserialNumberимеют значениеnull -
IllegalArgumentException— если имя издателя не соответствует RFC 2253 или одно из ключевых слов типов атрибутов не распознано.
isFeatureSupported
public abstract boolean isFeatureSupported(String feature)
- Параметры:
-
feature— имя функции (в виде абсолютного URI) - Возвращает:
-
true, если указанная функция поддерживается, иначеfalse - Вызывает:
-
NullPointerException— еслиfeatureимеет значениеnull
getURIDereferencer
public abstract URIDereferencer getURIDereferencer()
URIDereferencer, используемый по умолчанию для разыменования URI в объектах RetrievalMethod.- Возвращает:
- ссылку на
URIDereferencer, используемый по умолчанию
unmarshalKeyInfo
public abstract KeyInfo unmarshalKeyInfo(XMLStructure xmlStructure) throws MarshalException
KeyInfo из зависящего от механизма экземпляра XMLStructure (например, DOMStructure).- Параметры:
-
xmlStructure— зависящая от механизма структура XML, из которой десериализуются сведения о ключе - Возвращает:
KeyInfo- Вызывает:
-
NullPointerException— еслиxmlStructureимеет значениеnull -
ClassCastException— если типxmlStructureне подходит для этой фабрики -
MarshalException— если во время десериализации возникает неисправимая ошибка
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.xml.crypto/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.html