Класс 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
- См. также:
-
KeyGenerator,SecretKey
Конструкторы
| Конструктор | Описание |
|---|---|
KeyAgreementSpi() |
Методы
| Модификатор и тип | Метод | Описание |
|---|---|---|
protected abstract Key |
engineDoPhase(Key key,
boolean lastPhase) |
Выполняет следующую фазу согласования ключей с заданным ключом, полученным от одной из других сторон, участвующих в этом согласовании ключей. |
protected abstract byte[] |
engineGenerateSecret() |
Генерирует общий секрет и возвращает его в новом буфере. |
protected abstract int |
engineGenerateSecret(byte[] sharedSecret,
int 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, так что он может быть повторно использован для дальнейших согласований ключей. Если это согласование ключей не будет повторно инициализировано одним из методов engineInit, одни и те же приватная информация и параметры алгоритма будут использоваться для последующих согласований ключей.
- Возвращает:
- новый буфер с общим секретом
- Исключения:
-
IllegalStateException- если это согласование ключей еще не завершено
engineGenerateSecret
protected abstract int engineGenerateSecret(byte[] sharedSecret,
int offset)
throws IllegalStateException,
ShortBufferException
Генерирует общий секрет и помещает его в буфер sharedSecret, начиная с позиции offset включительно.
Если буфер sharedSecret слишком мал для размещения результата, генерируется исключение ShortBufferException. В этом случае этот вызов нужно повторить с большим буфером вывода.
Этот метод сбрасывает этот объект KeyAgreementSpi, так что он может быть повторно использован для дальнейших согласований ключей. Если это согласование ключей не будет повторно инициализировано одним из методов engineInit, одни и те же приватная информация и параметры алгоритма будут использоваться для последующих согласований ключей.
- Параметры:
-
sharedSecret- буфер для общего секрета -
offset- смещение вsharedSecret, где будет храниться общий секрет - Возвращает:
- количество байтов, помещенных в
sharedSecret - Исключения:
-
IllegalStateException- если это согласование ключей еще не завершено -
ShortBufferException- если заданный буфер вывода слишком мал для хранения секрета
engineGenerateSecret
protected abstract SecretKey engineGenerateSecret(String algorithm)
throws IllegalStateException,
NoSuchAlgorithmException,
InvalidKeyException
Создаёт общий секрет и возвращает его как объект секретного ключа запрошенного типа алгоритма.
Этот метод сбрасывает этот объект KeyAgreementSpi, так что он может быть повторно использован для дальнейших согласований ключей. Если это согласование ключей не будет повторно инициализировано одним из методов engineInit, одни и те же приватная информация и параметры алгоритма будут использоваться для последующих согласований ключей.
- Параметры:
-
algorithm- запрашиваемый алгоритм секретного ключа - Возвращает:
- ключ общего секрета
- Исключения:
-
IllegalStateException- если это согласование ключей ещё не завершено -
NoSuchAlgorithmException- если запрашиваемый алгоритм секретного ключа недоступен -
InvalidKeyException- если материал общего секретного ключа не может быть использован для генерации секретного ключа запрошенного типа алгоритма (например, материал ключа слишком короткий)
© 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.base/javax/crypto/KeyAgreementSpi.html