Spec-Zone.ru › OpenJDK 24

Класс KeyAgreementSpi

java.lang.Object
javax.crypto.KeyAgreementSpi
public abstract class KeyAgreementSpi extends Object
Этот класс определяет интерфейс поставщика услуг (SPI) для класса KeyAgreement. Все абстрактные методы в этом классе должны быть реализованы каждым поставщиком криптографических услуг, желающим предоставить реализацию определенного алгоритма согласования ключей.

Ключи, участвующие в установлении общего секрета, создаются одним из генераторов ключей (KeyPairGenerator или KeyGenerator), KeyFactory или в результате промежуточной фазы протокола согласования ключей (engineDoPhase).

Для каждого корреспондента в обмене ключами необходимо вызвать engineDoPhase. Например, если обмен ключами происходит с одной другой стороной, необходимо вызвать engineDoPhase один раз, установив флаг lastPhase в значение true. Если обмен ключами происходит с двумя другими сторонами, необходимо вызвать engineDoPhase дважды, первый раз установив флаг lastPhase в значение false, а второй раз — в значение true. В обмене ключами может участвовать любое количество сторон.

Since:
1.4
See Also:
  • KeyGenerator
  • SecretKey

Краткое описание конструкторов

Конструктор Описание
KeyAgreementSpi()
Конструктор для вызова подклассами.

Краткое описание методов

Модификатор и тип Метод Описание
protected abstract Key engineDoPhase(Key key, boolean lastPhase)
Выполняет следующую фазу согласования ключей с заданным ключом, полученным от одной из других сторон, участвующих в этом согласовании ключей.
protected abstract byte[] engineGenerateSecret()
Генерирует общий секрет и возвращает его в новом буфере.
protected abstract int engineGenerateSecret(byte[] sharedSecret, int offset)
Генерирует общий секрет и помещает его в буфер sharedSecret, начиная с позиции offset включительно.
protected abstract SecretKey engineGenerateSecret(String algorithm)
Создает общий секрет и возвращает его как объект секретного ключа запрошенного типа алгоритма.
protected abstract void engineInit(Key key, SecureRandom random)
Инициализирует это согласование ключей с заданным ключом и источником случайности.
protected abstract void engineInit(Key key, AlgorithmParameterSpec params, SecureRandom random)
Инициализирует это согласование ключей с заданным ключом, набором параметров алгоритма и источником случайности.

Методы, унаследованные от класса java.lang.Object

clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait

Подробное описание конструкторов

KeyAgreementSpi

public KeyAgreementSpi()
Конструктор для вызова подклассами.

Подробное описание методов

engineInit

protected abstract void engineInit(Key key, SecureRandom random) throws InvalidKeyException
Инициализирует это соглашение о ключе заданным ключом и источником случайности. Указанный ключ должен содержать все параметры алгоритма, необходимые для этого соглашения о ключе.

Если алгоритм соглашения о ключе требует случайных байтов, он получает их от заданного источника случайности, random. Однако, если реализация базового алгоритма не требует никаких случайных байтов, random игнорируется.

Параметры:
key - приватная информация стороны. Например, в случае соглашения о ключе Диффи-Хеллмана это будет собственный приватный ключ Диффи-Хеллмана стороны.
random - источник случайности
Исключения:
InvalidKeyException - если заданный ключ не подходит для этого соглашения о ключе, например, имеет неправильный тип или несовместимый тип алгоритма.

engineInit

protected abstract void engineInit(Key key, AlgorithmParameterSpec params, SecureRandom random) throws InvalidKeyException, InvalidAlgorithmParameterException
Инициализирует это соглашение о ключе заданным ключом, набором параметров алгоритма и источником случайности.
Параметры:
key - приватная информация стороны. Например, в случае соглашения о ключе Диффи-Хеллмана это будет собственный приватный ключ Диффи-Хеллмана стороны.
params - параметры соглашения о ключе
random - источник случайности
Исключения:
InvalidKeyException - если заданный ключ не подходит для этого соглашения о ключе, например, имеет неправильный тип или несовместимый тип алгоритма.
InvalidAlgorithmParameterException - если заданные параметры не подходят для этого соглашения о ключе.

engineDoPhase

protected abstract Key engineDoPhase(Key key, boolean lastPhase) throws InvalidKeyException, IllegalStateException
Выполняет следующую фазу этого соглашения о ключе с заданным ключом, полученным от одной из других сторон, участвующих в этом соглашении о ключе.
Параметры:
key - ключ для этой фазы. Например, в случае Диффи-Хеллмана между 2 сторонами это будет открытый ключ Диффи-Хеллмана другой стороны.
lastPhase - флаг, указывающий, является ли эта фаза последней фазой этого соглашения о ключе.
Возвращает:
промежуточный ключ, полученный в результате этой фазы, или null, если эта фаза не приводит к получению ключа
Исключения:
InvalidKeyException - если заданный ключ не подходит для этой фазы.
IllegalStateException - если это соглашение о ключе не было инициализировано.

engineGenerateSecret

protected abstract byte[] engineGenerateSecret() throws IllegalStateException
Генерирует общий секрет и возвращает его в новом буфере.

Этот метод сбрасывает этот объект KeyAgreementSpi в состояние, в котором он находился после последнего вызова одного из методов init. После вызова generateSecret объект можно повторно использовать для дальнейших операций соглашения о ключе, вызвав doPhase для предоставления новых ключей, а затем вызвав generateSecret для создания нового секрета. В этом случае приватная информация и параметры алгоритма, предоставленные методу init, будут использоваться для нескольких операций соглашения о ключе. Метод init можно вызвать после generateSecret для изменения приватной информации, используемой в последующих операциях.

Возвращает:
новый буфер с общим секретом
Исключения:
IllegalStateException - если это соглашение о ключе не было инициализировано или если doPhase не был вызван для предоставления ключей для всех сторон в соглашении

engineGenerateSecret

protected abstract int engineGenerateSecret(byte[] sharedSecret, int offset) throws IllegalStateException, ShortBufferException
Генерирует общий секрет и помещает его в буфер sharedSecret, начиная с позиции offset включительно.

Если буфер sharedSecret слишком мал для размещения результата, выбрасывается исключение ShortBufferException. В этом случае вызов необходимо повторить с более крупным буфером вывода.

Этот метод сбрасывает этот объект KeyAgreementSpi в состояние, в котором он находился после последнего вызова одного из методов init. После вызова generateSecret объект можно повторно использовать для дальнейших операций соглашения о ключе, вызвав doPhase для предоставления новых ключей, а затем вызвав generateSecret для создания нового секрета. В этом случае приватная информация и параметры алгоритма, предоставленные методу init, будут использоваться для нескольких операций соглашения о ключе. Метод init можно вызвать после generateSecret для изменения приватной информации, используемой в последующих операциях.

Параметры:
sharedSecret - буфер для общего секрета
offset - смещение в sharedSecret, где будет храниться общий секрет
Возвращает:
количество байтов, помещенных в sharedSecret
Исключения:
IllegalStateException - если это соглашение о ключе не было инициализировано или если doPhase не был вызван для предоставления ключей для всех сторон в соглашении
ShortBufferException - если заданный буфер вывода слишком мал для хранения секрета

engineGenerateSecret

protected abstract SecretKey engineGenerateSecret(String algorithm) throws IllegalStateException, NoSuchAlgorithmException, InvalidKeyException
Создает общий секрет и возвращает его как объект секретного ключа запрошенного типа алгоритма.

Этот метод сбрасывает этот объект KeyAgreementSpi в состояние, в котором он находился после последнего вызова одного из методов init. После вызова generateSecret объект можно повторно использовать для дальнейших операций соглашения о ключе, вызвав doPhase для предоставления новых ключей, а затем вызвав generateSecret для создания нового секрета. В этом случае приватная информация и параметры алгоритма, предоставленные методу init, будут использоваться для нескольких операций соглашения о ключе. Метод init можно вызвать после generateSecret для изменения приватной информации, используемой в последующих операциях.

Параметры:
algorithm - запрашиваемый алгоритм секретного ключа
Возвращает:
секретный ключ общего доступа
Исключения:
IllegalStateException - если это соглашение о ключе не было инициализировано или если doPhase не был вызван для предоставления ключей для всех сторон в соглашении
NoSuchAlgorithmException - если запрашиваемый алгоритм секретного ключа недоступен
InvalidKeyException - если материал общего секретного ключа не может быть использован для генерации секретного ключа запрошенного типа алгоритма (например, материал ключа слишком короткий)

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/KeyAgreementSpi.html

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API