Контекст, используемый для создания ключа, связан с параметрами NULL
Этот дефект возникает при выполнении шага создания ключа с объектом контекста без предварительного связывания объекта с требуемыми параметрами.
Например, вы связываете EVP_PKEY_CTX объект контекста с пустым EVP_PKEY объект params перед генерацией ключа:
EVP_PKEY * params = EVP_PKEY_new(); ... EVP_PKEY_CTX * ctx = EVP_PKEY_CTX_new(params, NULL); ... EVP_PKEY_keygen(ctx, &pkey);
Без соответствующих параметров шаг генерации ключа не выполняется. Избыточная операция часто указывает на ошибку кодирования.
Проверьте размещение шага генерации ключа. Если операция предназначена, убедитесь, что параметры заданы перед генерацией ключа.
Некоторые алгоритмы используют параметры по умолчанию. Например, если указать алгоритм DSA при создании EVP_PKEY_CTX объект, используется ключевая длина по умолчанию 1024 бита:
kctx = EVP_PKEY_CTX_new_id(EVP_PKEY_DSA, NULL);
Однако параметры по умолчанию могут генерировать ключи, которые слишком слабы для шифрования. Слабые параметры могут вызвать еще один дефект. Чтобы изменить параметры по умолчанию, используйте функции, специфичные для алгоритма. Например, для установки параметров можно использовать следующие функции:
Диффи-Хеллман (DH): Использование EVP_PKEY_CTX_set_dh_paramgen_prime_len и EVP_PKEY_CTX_set_dh_paramgen_generator.
Алгоритм цифровой подписи (DSA): использование EVP_PKEY_CTX_set_dsa_paramgen_bits.
RSA: Использовать EVP_PKEY_CTX_set_rsa_padding, EVP_PKEY_CTX_set_rsa_pss_saltlen, EVP_PKEY_CTX_set_rsa_rsa_keygen_bits, и EVP_PKEY_CTX_set_rsa_keygen_pubexp.
Эллиптическая кривая (EC): Использовать EVP_PKEY_CTX_set_ec_paramgen_curve_nid и EVP_PKEY_CTX_set_ec_param_enc.
| Группа: Криптография |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
CRYPTO_PKEY_NO_PARAMS |
| Воздействие: среднее |
| CWE ID: 310, 325, 372, 573 |
Context initialized incorrectly for cryptographic operation | Find defects (-checkers) | Incorrect key for cryptographic algorithm | Missing data for encryption, decryption or signing | Missing peer key | Missing private key | Missing public key | Nonsecure parameters for key generation