Класс 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. Список стандартных типов механизмов см. в разделе Поставщики сервисов обзора API.
Реализации KeyInfoFactory регистрируются и загружаются с помощью механизма Provider. Например, поставщик сервисов, поддерживающий механизм DOM, был бы указан в подклассе Provider следующим образом:
put("KeyInfoFactory.DOM", "org.example.DOMKeyInfoFactory"); Также, объекты XMLStructure созданные этой фабрикой, могут содержать состояние, специфичное для KeyInfo и не предназначены для повторного использования.
Реализация ДОЛЖНА поддерживать по умолчанию тип механизма: DOM.
Обратите внимание, что вызывающая сторона должна использовать тот же экземпляр KeyInfoFactory для создания объектов XMLStructure конкретного объекта KeyInfo. Поведение не определено, если объекты XMLStructure из разных поставщиков или разных типов механизмов используются совместно.
Доступ к нескольким потокам
Статические методы этого класса гарантированно потокобезопасны. Несколько потоков могут одновременно вызывать статические методы, определённые в этом классе, без негативных последствий.
Однако это не относится к методам, не являющимся статическими, определённым в этом классе. Если не указано иное в документации конкретного поставщика, потоки, которым необходимо получить доступ к одному экземпляру KeyInfoFactory одновременно, должны синхронизироваться между собой и обеспечить необходимые блокировки. Несколько потоков, работающих с разными экземплярами KeyInfoFactory , синхронизироваться не должны.
- Since:
- 1.6
Конструкторы
| Модификатор | Конструктор и описание |
|---|---|
protected |
KeyInfoFactory() Конструктор по умолчанию, для вызова подклассами. |
Методы
| Модификатор и тип | Метод и описание |
|---|---|
static KeyInfoFactory |
getInstance() Возвращает |
static KeyInfoFactory |
getInstance(String mechanismType) Возвращает |
static KeyInfoFactory |
getInstance(String mechanismType,
Provider provider) Возвращает |
static KeyInfoFactory |
getInstance(String mechanismType,
String provider) Возвращает |
String |
getMechanismType() Возвращает тип механизма обработки XML и поддерживаемого представления, используемого этим |
Provider |
getProvider() Возвращает поставщика этого |
abstract URIDereferencer |
getURIDereferencer() Возвращает ссылку на |
abstract boolean |
isFeatureSupported(String feature) Указывает, поддерживается ли указанная функция. |
abstract KeyInfo |
newKeyInfo(List content) Создаёт |
abstract KeyInfo |
newKeyInfo(List 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 other) Создаёт |
abstract PGPData |
newPGPData(byte[] keyPacket,
List other) Создаёт |
abstract RetrievalMethod |
newRetrievalMethod(String uri) Создаёт |
abstract RetrievalMethod |
newRetrievalMethod(String uri,
String type,
List 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().
- Параметры:
-
mechanismType- тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделе «Поставщики служб» в обзоре API. - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NullPointerException- еслиmechanismTypeявляетсяnull -
NoSuchMechanismException- если ни одинProviderне поддерживает реализациюKeyInfoFactoryдля указанного механизма - См. также:
Provider
getInstance
public static KeyInfoFactory getInstance(String mechanismType,
Provider provider) Возвращает KeyInfoFactory, который поддерживает запрашиваемый механизм обработки XML и тип представления (например, "DOM"), как предоставленный указанным поставщиком. Обратите внимание, что указанный объект Provider не обязательно должен быть зарегистрирован в списке поставщиков.
- Параметры:
-
mechanismType- тип механизма обработки XML и представления. Список стандартных типов механизмов см. в разделе «Поставщики служб» в обзоре API. -
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 и представления. Список стандартных типов механизмов см. в разделе «Поставщики служб» в обзоре API. -
provider- строковое имя поставщика - Возвращает:
- новый
KeyInfoFactory - Исключения:
-
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиmechanismTypeилиproviderявляютсяnull -
NoSuchMechanismException- если реализацияKeyInfoFactoryдля указанного механизма недоступна от указанного поставщика - См. также:
Provider
getInstance
public static KeyInfoFactory getInstance()
Возвращает KeyInfoFactory, который поддерживает стандартный механизм обработки XML и тип представления ("DOM").
Этот метод использует стандартный механизм поиска поставщиков JCA для поиска и создания реализации KeyInfoFactory стандартного типа механизма. Он перебирает список зарегистрированных поставщиков безопасности, начиная с наиболее предпочтительного Provider. Возвращается новый объект KeyInfoFactory из первого поставщика, который поддерживает механизм DOM.
Обратите внимание, что список зарегистрированных поставщиков можно получить с помощью метода 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 content)
Создаёт KeyInfo, содержащий указанный список типов информации о ключе.
- Параметры:
-
content- список одного или несколькихXMLStructure, представляющих типы информации о ключе. Список защищён от последующих изменений. - Возвращает:
KeyInfo- Исключения:
-
NullPointerException- еслиcontentявляетсяnull -
IllegalArgumentException- еслиcontentпуст -
ClassCastException- еслиcontentсодержит какие-либо записи, которые не являются типаXMLStructure
newKeyInfo
public abstract KeyInfo newKeyInfo(List 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 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 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 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 из механизм-специфичной XMLStructure (например, DOMStructure) экземпляра.
- Параметры:
-
xmlStructure— механизм-специфичная XML-структура, из которой десериализовать keyinfo - Возвращает:
- the
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.