Интерфейс KEMSpi
public interface KEMSpi
KEM. Поставщик криптографических услуг реализует этот интерфейс, чтобы предоставить реализацию алгоритма механизма инкапсуляции ключей (KEM). Алгоритм KEM может поддерживать семейство конфигураций. Каждая конфигурация может принимать различные типы ключей и криптографических примитивов, а также различные размеры общих секретов и сообщений инкапсуляции ключа. Конфигурация определяется именем алгоритма KEM, используемым ключом и необязательным аргументом AlgorithmParameterSpec, который задаётся при создании инкапсулятора или декапсулятора. Вызов engineNewEncapsulator(PublicKey, AlgorithmParameterSpec, SecureRandom) или engineNewDecapsulator(PrivateKey, AlgorithmParameterSpec) должен возвращать инкапсулятор или декапсулятор, соответствующий одной конфигурации, у которого методы engineSecretSize() и engineEncapsulationSize() возвращают постоянные значения.
Реализация KEMSpi должна быть неизменяемой. Должна быть обеспечена возможность одновременного вызова нескольких методов engineNewEncapsulator и engineNewDecapsulator.
Реализации EncapsulatorSpi и DecapsulatorSpi также должны быть неизменяемыми. Должна быть обеспечена возможность одновременного вызова нескольких методов encapsulate и decapsulate. Каждый вызов encapsulate должен генерировать новый общий секрет и сообщение инкапсуляции ключа.
Например:
public static class MyKEMImpl implements KEMSpi {
@Override
public KEMSpi.EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey,
AlgorithmParameterSpec spec, SecureRandom secureRandom)
throws InvalidAlgorithmParameterException, InvalidKeyException {
if (!checkPublicKey(publicKey)) {
throw new InvalidKeyException("unsupported key");
}
if (!checkParameters(spec)) {
throw new InvalidAlgorithmParameterException("unsupported params");
}
return new MyEncapsulator(publicKey, spec, secureRandom);
}
class MyEncapsulator implements KEMSpi.EncapsulatorSpi {
MyEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec,
SecureRandom secureRandom){
this.spec = spec != null ? spec : getDefaultParameters();
this.secureRandom = secureRandom != null
? secureRandom
: getDefaultSecureRandom();
this.publicKey = publicKey;
}
@Override
public KEM.Encapsulated encapsulate(int from, int to, String algorithm) {
byte[] encapsulation;
byte[] secret;
// calculating...
return new KEM.Encapsulated(
new SecretKeySpec(secret, from, to - from, algorithm),
encapsulation, null);
}
// ...
}
// ...
}
- Начиная с:
- 21
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
KEMSpi.DecapsulatorSpi |
Реализация декапсулятора KEM, создаваемая методом engineNewDecapsulator(PrivateKey, AlgorithmParameterSpec) на стороне получателя KEM. |
static interface |
KEMSpi.EncapsulatorSpi |
Реализация инкапсулятора KEM, создаваемая методом engineNewEncapsulator(PublicKey, AlgorithmParameterSpec, SecureRandom) на стороне отправителя KEM. |
Краткое описание методов
| Модификатор и тип | Метод | Описание |
|---|---|---|
KEMSpi.DecapsulatorSpi |
engineNewDecapsulator |
Создаёт декапсулятор KEM на стороне получателя KEM. |
KEMSpi.EncapsulatorSpi |
engineNewEncapsulator |
Создаёт инкапсулятор KEM на стороне отправителя KEM. |
Подробное описание методов
engineNewEncapsulator
KEMSpi.EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException
- Параметры:
-
publicKey— открытый ключ получателя; не должен бытьnull -
spec— необязательный параметр; может бытьnull -
secureRandom— источник случайных данных для инкапсуляции. Еслиnull, реализация должна предоставить значение по умолчанию. - Возвращает:
- инкапсулятор для этого ключа
- Вызывает исключения:
-
InvalidAlgorithmParameterException— еслиspecнедопустим или обязателен, ноspecимеет значениеnull -
InvalidKeyException— еслиpublicKeyимеет значениеnullили недопустим - См. также:
engineNewDecapsulator
KEMSpi.DecapsulatorSpi engineNewDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException
- Параметры:
-
privateKey— закрытый ключ получателя; не должен бытьnull -
spec— необязательный параметр; может бытьnull - Возвращает:
- декапсулятор для этого ключа
- Вызывает исключения:
-
InvalidAlgorithmParameterException— еслиspecнедопустим или обязателен, ноspecимеет значениеnull -
InvalidKeyException— еслиprivateKeyимеет значениеnullили недопустим - См. также:
© 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://docs.oracle.com/en/java/javase/25/docs/api/java.base/javax/crypto/KEMSpi.html