Контекст, используемый для операции криптографии, связан с открытым ключом NULL или не связан с открытым ключом вообще
Этот дефект возникает, когда вы используете объект контекста для шифрования или проверки подлинности подписи, но ранее вы не связывали объект с открытым ключом, отличным от 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
проверяет наличие закрытого ключа в операциях дешифрования и подписи.
Без открытого ключа шаг шифрования или проверки подлинности подписи не выполняется. Избыточная операция часто указывает на ошибку кодирования.
Проверьте размещение операции (шифрование или аутентификация подписи). Если операция должна произойти, убедитесь, что вы сделали следующие шаги перед операцией:
Вы сгенерировали открытый ключ, отличный от NULL.
Для образца:
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);
Вы связали объект контекста, не являющийся NULL, с открытым ключом.
Для образца:
ctx = EVP_PKEY_CTX_new(pkey, NULL);
Примечание: Если вы используете EVP_PKEY_CTX_new_id
вместо EVP_PKEY_CTX_new
объект контекста не связывается с открытым ключом.
Группа: Криптография |
Язык: C | C++ |
По умолчанию: Off |
Синтаксис командной строки
: CRYPTO_PKEY_NO_PUBLIC_KEY |
Влияние: Средний |
ИДЕНТИФИКАТОР CWE : 310, 320, 573, 664 |
Context initialized incorrectly for cryptographic operation
| Find defects (-checkers)
| Incorrect key for cryptographic algorithm
| Missing data for encryption, decryption or signing
| Missing parameters for key generation
| Missing peer key
| Missing private key
| Nonsecure parameters for key generation