Spec-Zone.ru › OpenJDK 21

Интерфейс 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);
        }

        // ...
    }

    // ...
}
Since:
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, 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

Spec-Zone.ru

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