Spec-Zone.ru › OpenJDK 8

Класс 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)

Генерирует общий секрет и помещает его в буфер sharedSecret, начиная с позиции offset включительно.

protected abstract SecretKey engineGenerateSecret(String algorithm)

Создаёт общий секрет и возвращает его в виде объекта секретного ключа требуемого типа алгоритма.

protected abstract void engineInit(Key key, AlgorithmParameterSpec params, SecureRandom random)

Инициализирует это согласование ключей с заданным ключом, набором параметров алгоритма и источником случайных чисел.

protected abstract void engineInit(Key key, 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.

Spec-Zone.ru

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