Контекст, используемый для операции криптографии, связан с закрытым ключом NULL или вообще не связан с закрытым ключом
Этот дефект возникает, когда объект контекста используется для расшифровки, подписи или получения общего секрета, но ранее объект не был связан с закрытым ключом, отличным от NULL.
Например, объект контекста инициализируется с помощью закрытого ключа NULL и используется для расшифровки позже.
ctx = EVP_PKEY_CTX_new(pkey, NULL); ... ret = EVP_PKEY_decrypt_init(ctx); ... ret = EVP_PKEY_decrypt(ctx, out, &out_len, in, in_len);
Аналогичная проверка Missing public key проверяет наличие открытого ключа в операциях шифрования и аутентификации. Контролер Missing peer 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++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
CRYPTO_PKEY_NO_PRIVATE_KEY |
| Воздействие: среднее |
| CWE ID: 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 public key | Nonsecure parameters for key generation