Класс KeyInfoFactory
- java.lang.Object
-
- javax.xml.crypto.dsig.keyinfo.KeyInfoFactory
public abstract class KeyInfoFactory extends Object
Фабрика для создания объектов KeyInfo с нуля или для разбора объекта KeyInfo из соответствующего XML-представления.
Каждый экземпляр KeyInfoFactory поддерживает определённый тип XML-механизма. Для создания KeyInfoFactory, вызовите один из статических методов getInstance, передав желаемый тип XML-механизма, например:
KeyInfoFactory factory = KeyInfoFactory.getInstance("DOM"); Объекты, создаваемые этой фабрикой, будут основаны на DOM и будут соответствовать требованиям межплатформенной совместимости DOM, как определено в разделе Требования к механизму DOM обзора API. Дополнительную информацию см. в документе Стандартные имена алгоритмов Java Security.
Реализации KeyInfoFactory регистрируются и загружаются с помощью механизма Provider. Например, поставщик услуг, поддерживающий механизм DOM, был бы указан в подклассе Provider следующим образом:
put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory"); Кроме того, объекты XMLStructure, создаваемые этой фабрикой, могут содержать состояние, специфичное для KeyInfo, и не предназначены для повторного использования.
Реализация ДОЛЖНА минимально поддерживать тип механизма по умолчанию: DOM.
Обратите внимание, что вызывающая сторона должна использовать тот же экземпляр KeyInfoFactory для создания объектов XMLStructure конкретного объекта KeyInfo. Поведение не определено, если объекты XMLStructure из разных поставщиков или разных типов механизмов используются вместе.
Доступность из нескольких потоков
Статические методы этого класса гарантированно потокобезопасны. Несколько потоков могут одновременно вызывать статические методы, определенные в этом классе, без каких-либо негативных последствий.
Однако это не относится к нестатическим методам, определенным этим классом. За исключением случаев, документально подтверждённых конкретным поставщиком, потоки, которым необходимо одновременное обращение к одному экземпляру KeyInfoFactory , должны синхронизироваться между собой и обеспечить необходимые блокировки. Несколько потоков, каждый из которых манипулирует разными экземплярами KeyInfoFactory , синхронизироваться не должны.
- С момента:
- 1.6
Краткое описание конструкторов
| Модификатор | Конструктор | Описание |
|---|---|---|
protected | KeyInfoFactory() | Конструктор по умолчанию, для вызова подклассами. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
static KeyInfoFactory | getInstance() | Возвращает |
static KeyInfoFactory | getInstance(String mechanismType) | Возвращает |
static KeyInfoFactory | getInstance(String mechanismType,
String provider) | Возвращает |
static KeyInfoFactory | getInstance(String mechanismType,
Provider provider) | Возвращает |
String | getMechanismType() | Возвращает тип механизма и представления XML, поддерживаемого этим |
Provider | getProvider() | Возвращает поставщика этого |
abstract URIDereferencer | getURIDereferencer() | Возвращает ссылку на |
abstract boolean | isFeatureSupported(String feature) | Указывает, поддерживается ли указанное свойство. |
abstract KeyInfo | newKeyInfo(List<? extends XMLStructure> content) | Создает |
abstract KeyInfo | newKeyInfo(List<? extends XMLStructure> content,
String id) | Создает |
abstract KeyName | newKeyName(String name) | Создаёт |
abstract KeyValue | newKeyValue(PublicKey key) | Создает |
abstract PGPData | newPGPData(byte[] keyId) | Создает |
abstract PGPData | newPGPData(byte[] keyId,
byte[] keyPacket,
List<? extends XMLStructure> other) | Создает |
abstract PGPData | newPGPData(byte[] keyPacket,
List<? extends XMLStructure> other) | Создаёт |
abstract RetrievalMethod | newRetrievalMethod(String uri) | Создаёт |
abstract RetrievalMethod | newRetrievalMethod(String uri,
String type,
List<? extends Transform> transforms) | Создает |
abstract X509Data | newX509Data(List<?> content) | Создает |
abstract X509IssuerSerial | newX509IssuerSerial(String issuerName,
BigInteger serialNumber) | Создаёт |
abstract KeyInfo | unmarshalKeyInfo(XMLStructure xmlStructure) | Десериализует новый экземпляр |
Методы, унаследованные от класса java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait Конструкторы
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 и представления. Дополнительную информацию см. в документе Стандартные имена алгоритмов Java Security. - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NullPointerException- еслиmechanismTypeявляетсяnull -
NoSuchMechanismException- если ни одинProviderне поддерживает реализациюKeyInfoFactoryдля указанного механизма - См. также:
Provider
getInstance
public static KeyInfoFactory getInstance(String mechanismType,
Provider provider) Возвращает KeyInfoFactory, который поддерживает затребованный механизм обработки XML и тип представления (например, "DOM"), предоставленный указанным поставщиком. Указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
mechanismType- тип механизма обработки XML и представления. Дополнительную информацию см. в документе Стандартные имена алгоритмов Java Security. -
provider- объектProvider - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NullPointerException- еслиmechanismTypeилиproviderявляютсяnull -
NoSuchMechanismException- если реализацияKeyInfoFactoryдля указанного механизма недоступна от указанного объектаProvider - См. также:
Provider
getInstance
public static KeyInfoFactory getInstance(String mechanismType,
String provider)
throws NoSuchProviderException Возвращает KeyInfoFactory, который поддерживает затребованный механизм обработки XML и тип представления (например, "DOM"), предоставленный указанным поставщиком. Указанный поставщик должен быть зарегистрирован в списке поставщиков безопасности.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода Security.getProviders().
- Параметры:
-
mechanismType- тип механизма обработки XML и представления. Дополнительную информацию см. в документе Стандартные имена алгоритмов Java Security. -
provider- строковое имя поставщика - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиmechanismTypeилиproviderявляютсяnull -
NoSuchMechanismException- если реализацияKeyInfoFactoryдля указанного механизма недоступна от указанного поставщика - См. также:
Provider
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 - См. также:
Provider
getMechanismType
public final String getMechanismType()
Возвращает тип механизма обработки XML и представления, поддерживаемого этим 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- если алгоритм открытого ключа не распознан или не поддерживается этим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или пустым. - Возвращает:
- a
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или пустым. - Возвращает:
- a
PGPData - Исключение:
-
NullPointerException— еслиkeyPacketравенnull -
IllegalArgumentException— еслиkeyPacketне имеет правильного формата. ДляkeyPacket, проверяется формат заголовка пакета и проверяется, что тег относится к типу данных ключа. Содержимое и формат тела пакета не проверяются. -
ClassCastException— еслиotherсодержит элементы, не являющиеся объектами типаXMLStructure
newRetrievalMethod
public abstract RetrievalMethod newRetrievalMethod(String uri)
Создаёт RetrievalMethod из указанного URI.
- Параметры:
-
uri— URI, идентифицирующий информациюKeyInfoдля извлечения. - Возвращает:
- a
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или пустым. - Возвращает:
- a
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). Реализации МОГУТ поддерживать дополнительные ключевые слова. Список защищён от копирования, чтобы предотвратить последующие изменения. - Возвращает:
- a
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— серийный номер - Возвращает:
- an
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 из механически-специфической структуры XML (например, DOMStructure).
- Параметры:
-
xmlStructure— механически-специфическая XML-структура для разбора keyinfo - Возвращает:
- экземпляр
KeyInfo - Исключение:
-
NullPointerException— еслиxmlStructureравенnull -
ClassCastException— если типxmlStructureне подходит для этого фабричного метода -
MarshalException— если во время разбора произошла непреодолимая ошибка
© 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.
https://docs.oracle.com/en/java/javase/11/docs/api/java.xml.crypto/javax/xml/crypto/dsig/keyinfo/KeyInfoFactory.html