Spec-Zone.ru › OpenJDK 24

Интерфейс KEMSpi

public interface KEMSpi
Этот класс определяет интерфейс поставщика сервиса (SPI) для класса 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);
        }

        // ...
    }

    // ...
}
С тех пор:
21
См. также:
  • KEM

Краткое описание вложенных классов

Модификатор и тип Интерфейс Описание
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(PrivateKey privateKey, AlgorithmParameterSpec spec)
Создает декапсулятор KEM на стороне получателя KEM.
KEMSpi.EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom)
Создает инкапсулятор KEM на стороне отправителя KEM.

Подробное описание методов

engineNewEncapsulator

KEMSpi.EncapsulatorSpi engineNewEncapsulator(PublicKey publicKey, AlgorithmParameterSpec spec, SecureRandom secureRandom) throws InvalidAlgorithmParameterException, InvalidKeyException
Создает инкапсулятор KEM на стороне отправителя KEM.
Параметры:
publicKey - открытый ключ получателя, не должен быть null
spec - необязательный параметр, может быть null
secureRandom - источник случайности для инкапсуляции. Если null, реализация должна предоставить значение по умолчанию.
Возвращает:
инкапсулятор для данного ключа
Исключения:
InvalidAlgorithmParameterException - если spec недействителен или необходим, но spec является null
InvalidKeyException - если publicKey является null или недействительным
См. также:
  • KEM.newEncapsulator(PublicKey, AlgorithmParameterSpec, SecureRandom)

engineNewDecapsulator

KEMSpi.DecapsulatorSpi engineNewDecapsulator(PrivateKey privateKey, AlgorithmParameterSpec spec) throws InvalidAlgorithmParameterException, InvalidKeyException
Создает декапсулятор KEM на стороне получателя KEM.
Параметры:
privateKey - закрытый ключ получателя, не должен быть null
spec - необязательный параметр, может быть null
Возвращает:
декапсулятор для данного ключа
Исключения:
InvalidAlgorithmParameterException - если spec недействителен или необходим, но spec является null
InvalidKeyException - если privateKey является null или недействительным
См. также:
  • KEM.newDecapsulator(PrivateKey, AlgorithmParameterSpec)

© 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://download.java.net/java/early_access/jdk24/docs/api/java.base/javax/crypto/KEMSpi.html

Spec-Zone.ru

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