Контекст, используемый в генерации ключей, сопоставлен параметрами 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
объект, длина ключа по умолчанию 1 024 битов используется:
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++ |
Значение по умолчанию: 'off' |
Синтаксис командной строки:
CRYPTO_PKEY_NO_PARAMS |
Удар: носитель |
ID CWE: 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