Контекст, используемый для операции криптографии, сопоставлен с открытым ключом NULL или не сопоставлен с открытым ключом вообще
Недостающий открытый ключ происходит, когда вы используете объект контекста для шифрования или аутентификации подписи, но вы ранее не сопоставили объект с непустым открытым ключом.
Например, вы инициализируете объект контекста с открытым ключом NULL и используете объект для шифрования позже.
ctx = EVP_PKEY_CTX_new(pkey, NULL); ... ret = EVP_PKEY_encrypt_init(ctx); ... ret = EVP_PKEY_encrypt(ctx, out, &out_len, in, in_len);
Средство проверки дубликата Missing private key
проверяет на закрытый ключ в операциях подписи и дешифровании.
Без открытого ключа, шифрования или шага аутентификации подписи не происходит. Избыточная операция часто указывает на ошибку кодирования.
Проверяйте размещение операции (шифрование или аутентификация подписи). Если операция предназначается, чтобы произойти, убедитесь, что вы выполнили эти шаги до операции:
Вы сгенерировали непустой открытый ключ.
Например:
EVP_PKEY *pkey = NULL; kctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); EVP_PKEY_keygen_init(kctx); EVP_PKEY_CTX_set_rsa_keygen_bits(kctx, RSA_2048BITS); EVP_PKEY_keygen(kctx, &pkey);
Вы сопоставили непустой объект контекста с открытым ключом.
Например:
ctx = EVP_PKEY_CTX_new(pkey, NULL);
Примечание: Если вы используете EVP_PKEY_CTX_new_id
вместо EVP_PKEY_CTX_new
, вы не сопоставляете объект контекста с открытым ключом.
Группа: криптография |
Язык: C | C++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки:
CRYPTO_PKEY_NO_PUBLIC_KEY |
Влияние: носитель |
ID CWE: 310, 320, 573, 664 |
Context initialized incorrectly for cryptographic operation
| Find defects (-checkers)
| Incorrect key for cryptographic algorithm
| Missing parameters for key generation
| Missing data for encryption, decryption or signing
| Missing peer key
| Missing private key
| Nonsecure parameters for key generation