Контекст, используемый для операции шифрования с открытым ключом, инициализируется для различной операции
Этот дефект происходит, когда вы инициализируете 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++ |
Значение по умолчанию: Off |
Синтаксис командной строки:
CRYPTO_PKEY_INCORRECT_INIT |
Удар: носитель |
ID CWE: 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