Интерфейс KEMSpi
public interface KEMSpi
KEM. Поставщик безопасности реализует этот интерфейс, чтобы предоставить реализацию алгоритма механизма упаковки ключей (KEM). Алгоритм KEM может поддерживать семейство конфигураций. Каждая конфигурация может принимать различные типы ключей, криптографические примитивы и размеры общих секретов и сообщений об упаковке ключей. Конфигурация определяется именем алгоритма KEM, используемым ключом и необязательным AlgorithmParameterSpec аргументом, который указывается при создании инкапсулятора или декапсулятора. Результат вызова engineNewEncapsulator(java.security.PublicKey, java.security.spec.AlgorithmParameterSpec, java.security.SecureRandom) или engineNewDecapsulator(java.security.PrivateKey, java.security.spec.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);
}
// ...
}
// ...
}
- Since:
- 21
- См. также:
Краткое описание вложенных классов
| Модификатор и тип | Интерфейс | Описание |
|---|---|---|
static interface |
KEMSpi.DecapsulatorSpi |
Реализация декапсулятора KEM, сгенерированная методом engineNewDecapsulator(java.security.PrivateKey, java.security.spec.AlgorithmParameterSpec) со стороны получателя KEM. |
static interface |
KEMSpi.EncapsulatorSpi |
Реализация инкапсулятора KEM, сгенерированная методом engineNewEncapsulator(java.security.PublicKey, java.security.spec.AlgorithmParameterSpec, java.security.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, 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/KEMSpi.html