Класс KEM
public final class KEM extends Object
Метод getInstance создаёт новый объект KEM, реализующий указанный алгоритм.
Объект KEM является неизменяемым. Безопасно вызывать несколько методов newEncapsulator и newDecapsulator на одном и том же объекте KEM одновременно.
Если поставщик не указан в методе getInstance при создании объекта KEM, методы newEncapsulator и newDecapsulator могут возвращать инкапсуляторы или деинкапсуляторы из разных поставщиков. Выбранный поставщик определяется параметрами, переданными в методы newEncapsulator или newDecapsulator: приватным или публичным ключом и необязательными AlgorithmParameterSpec. Методы KEM.Encapsulator.providerName() и KEM.Decapsulator.providerName() возвращают имя выбранного поставщика.
Объекты Encapsulator и Decapsulator также являются неизменяемыми. Безопасно вызывать несколько методов encapsulate и decapsulate на одном и том же объекте Encapsulator или Decapsulator одновременно. Каждый вызов encapsulate сгенерирует новый общий секрет и сообщение инкапсуляции ключа.
Пример:
// Receiver side
var kpg = KeyPairGenerator.getInstance("X25519");
var kp = kpg.generateKeyPair();
// Sender side
var kem1 = KEM.getInstance("DHKEM");
var sender = kem1.newEncapsulator(kp.getPublic());
var encapsulated = sender.encapsulate();
var k1 = encapsulated.key();
// Receiver side
var kem2 = KEM.getInstance("DHKEM");
var receiver = kem2.newDecapsulator(kp.getPrivate());
var k2 = receiver.decapsulate(encapsulated.encapsulation());
assert Arrays.equals(k1.getEncoded(), k2.getEncoded());
- С:
- 21
Краткое описание вложенных классов
| Модификатор и тип | Класс | Описание |
|---|---|---|
static final class |
KEM.Decapsulator |
Деинкапсулятор, сгенерированный методом newDecapsulator(java.security.PrivateKey) со стороны получателя KEM. |
static final class |
KEM.Encapsulated |
Этот класс определяет возвращаемое значение метода encapsulate механизма инкапсуляции ключей (KEM), включающее общий секрет (как SecretKey), сообщение инкапсуляции ключа и необязательные параметры. |
static final class |
KEM.Encapsulator |
Инкапсулятор, сгенерированный методом newEncapsulator(java.security.PublicKey) со стороны отправителя KEM. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
String |
getAlgorithm() |
Возвращает имя алгоритма для данного объекта KEM. |
static KEM |
getInstance |
Возвращает объект KEM, реализующий указанный алгоритм. |
static KEM |
getInstance |
Возвращает объект KEM, реализующий указанный алгоритм из указанного поставщика безопасности. |
static KEM |
getInstance |
Возвращает объект KEM, реализующий указанный алгоритм из указанного поставщика безопасности. |
KEM.Decapsulator |
newDecapsulator |
Создаёт деинкапсулятор KEM со стороны получателя KEM. |
KEM.Decapsulator |
newDecapsulator |
Создаёт деинкапсулятор KEM со стороны получателя KEM. |
KEM.Encapsulator |
newEncapsulator |
Создаёт инкапсулятор KEM со стороны отправителя KEM. |
KEM.Encapsulator |
newEncapsulator |
Создаёт инкапсулятор KEM со стороны отправителя KEM. |
KEM.Encapsulator |
newEncapsulator |
Создаёт инкапсулятор KEM со стороны отправителя KEM. |
Подробное описание методов
getInstance
public static KEM getInstance(String algorithm) throws NoSuchAlgorithmException
KEM, реализующий указанный алгоритм.- Параметры:
-
algorithm- имя алгоритма KEM. См. разделKEMв Спецификации имен стандартных алгоритмов Java Security для информации о стандартных именах алгоритмов KEM. - Возвращает:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException- если ни одинProviderне поддерживает реализациюKEMдля указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull
getInstance
public static KEM getInstance(String algorithm, Provider provider) throws NoSuchAlgorithmException
KEM , реализующий указанный алгоритм из указанного поставщика безопасности.- Параметры:
-
algorithm- имя алгоритма KEM. См. разделKEMв Спецификации имен стандартных алгоритмов Java Security для информации о стандартных именах алгоритмов KEM. -
provider- поставщик. Еслиnull, этот метод эквивалентенgetInstance(String). - Возвращает:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException- если указан поставщикproviderи он не поддерживает указанный алгоритм KEM, или еслиproviderявляетсяnullи нет поставщика, который поддерживает реализацию KEM указанного алгоритма -
NullPointerException- еслиalgorithmявляетсяnull
getInstance
public static KEM getInstance(String algorithm, String provider) throws NoSuchAlgorithmException, NoSuchProviderException
KEM , реализующий указанный алгоритм из указанного поставщика безопасности.- Параметры:
-
algorithm- имя алгоритма KEM. См. разделKEMв Спецификации имен стандартных алгоритмов Java Security для информации о стандартных именах алгоритмов KEM. -
provider- поставщик. Еслиnull, этот метод эквивалентенgetInstance(String). - Возвращает:
- новый объект
KEM - Исключения:
-
NoSuchAlgorithmException- если указан поставщикproviderи он не поддерживает указанный алгоритм KEM, или еслиproviderявляетсяnullи нет поставщика, который поддерживает реализацию KEM указанного алгоритма -
NoSuchProviderException- если указанный поставщик не зарегистрирован в списке поставщиков безопасности -
NullPointerException- еслиalgorithmявляетсяnull
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey) throws InvalidKeyException
Этот метод эквивалентен newEncapsulator(publicKey, null, null).
- Параметры:
-
publicKey- открытый ключ получателя, не должен бытьnull - Возвращает:
- инкапсулятор для этого ключа
- Исключения:
-
InvalidKeyException- еслиpublicKeyявляетсяnullили некорректен -
UnsupportedOperationException- если этот метод не поддерживается, так как должен быть предоставленAlgorithmParameterSpec
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, SecureRandom secureRandom) throws InvalidKeyException
Этот метод эквивалентен newEncapsulator(publicKey, null, secureRandom).
- Параметры:
-
publicKey- открытый ключ получателя, не должен бытьnull -
secureRandom- источник случайности для инкапсуляции. Если null, будет использован стандартный источник из реализации. - Возвращает:
- инкапсулятор для этого ключа
- Исключения:
-
InvalidKeyException- еслиpublicKeyявляетсяnullили некорректен -
UnsupportedOperationException- если этот метод не поддерживается, так как должен быть предоставленAlgorithmParameterSpec
newEncapsulator
public KEM.Encapsulator newEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException
Алгоритм может определить подкласс AlgorithmParameterSpec для предоставления дополнительной информации в этом методе. Это особенно полезно, если один и тот же ключ можно использовать для вывода общих секретов различными способами. Если любая дополнительная информация в этом объекте должна передаваться вместе с сообщением инкапсуляции ключа, чтобы получатель мог создать соответствующий декапсулятор, она будет включена в виде массива байтов в поле KEM.Encapsulated.params в выходе инкапсуляции. В этом случае поставщик безопасности должен предоставить реализацию AlgorithmParameters с тем же именем алгоритма, что и KEM. Получатель может инициировать такой экземпляр AlgorithmParameters с полученным массивом байтов params и восстановить объект AlgorithmParameterSpec для использования в вызове newDecapsulator(PrivateKey, AlgorithmParameterSpec).
- Параметры:
-
publicKey- открытый ключ получателя, не должен бытьnull -
spec- необязательный параметр, может бытьnull -
secureRandom- источник случайности для инкапсуляции. Если null, будет использован стандартный источник из реализации. - Возвращает:
- инкапсулятор для этого ключа
- Исключения:
-
InvalidAlgorithmParameterException- еслиspecнекорректен или требуется, ноspecявляетсяnull -
InvalidKeyException- еслиpublicKeyявляетсяnullили некорректен
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey) throws InvalidKeyException
Этот метод эквивалентен newDecapsulator(privateKey, null).
- Параметры:
-
privateKey- закрытый ключ получателя, не должен бытьnull - Возвращает:
- декапсулятор для этого ключа
- Исключения:
-
InvalidKeyException- еслиprivateKeyявляетсяnullили некорректен -
UnsupportedOperationException- если этот метод не поддерживается, так как должен быть предоставленAlgorithmParameterSpec
newDecapsulator
public KEM.Decapsulator newDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException
- Параметры:
-
privateKey- закрытый ключ получателя, не должен бытьnull -
spec- параметр, может бытьnull - Возвращает:
- декапсулятор для этого ключа
- Исключения:
-
InvalidAlgorithmParameterException- еслиspecнекорректен или требуется, ноspecявляетсяnull -
InvalidKeyException- еслиprivateKeyявляетсяnullили некорректен
getAlgorithm
public String getAlgorithm()
KEM.- Возвращает:
- имя алгоритма для этого объекта
KEM.
© 1993, 2023, 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/21/docs/api/java.base/javax/crypto/KEM.html