Контекст, используемый для операции криптографии с открытым ключом, инициализирован для другой операции
Этот дефект возникает при инициализации EVP_PKEY_CTX объект для определенной операции криптографии с открытым ключом, но использовать объект для другой операции.
Например, инициализируется контекст для шифрования.
ret = EVP_PKEY_encrypt_init(ctx);
ret = EVP_PKEY_decrypt(ctx, out, &out_len, in, in_len);
Средство проверки обнаруживает, был ли объект контекста, используемый в этих функциях, инициализирован с помощью соответствующих функций инициализации: EVP_PKEY_paramgen, EVP_PKEY_keygen, EVP_PKEY_encrypt, EVP_PKEY_verify, EVP_PKEY_verify_recover,EVP_PKEY_decrypt, EVP_PKEY_sign, EVP_PKEY_derive, иEVP_PKEY_derive_set_peer.
Смешение различных операций в одном контексте может привести к затемнению кода. С первого взгляда трудно определить, используется ли текущий объект для шифрования, дешифрования, подписи или другой операции. Смешение также может привести к сбою в операции или неожиданному шифротексту.
После настройки контекста для определенного семейства операций используйте контекст только для этого семейства операций. Например, используйте эти пары функций для инициализации и использования EVP_PKEY_CTX объект контекста.
Для шифрования с помощью EVP_PKEY_encrypt, инициализировать контекст с помощью EVP_PKEY_encrypt_init.
Для проверки подписи с EVP_PKEY_verify, инициализировать контекст с помощью EVP_PKEY_verify_init.
Для генерации ключей с помощью EVP_PKEY_keygen, инициализировать контекст с помощью EVP_PKEY_keygen_init.
Если необходимо повторно использовать существующий объект контекста для другого семейства операций, повторно инициализируйте контекст.
| Группа: Криптография |
| Язык: C | C++ |
| По умолчанию: Откл. |
Синтаксис командной строки:
CRYPTO_PKEY_INCORRECT_INIT |
| Воздействие: среднее |
| CWE ID: 310, 325, 372, 573, 664 |
Find defects (-checkers) | Incorrect key for cryptographic algorithm | Missing data for encryption, decryption or signing operation | Missing parameters for key generation | Missing peer key | Missing private key | Missing public key | Nonsecure parameters for key generation