Контекст, используемый в операции шифрования с открытым ключом, инициализируется для различной операции
Этот дефект происходит, когда вы инициализируете 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 parameters for key generation
| Missing data for encryption, decryption or signing operation
| Missing peer key
| Missing private key
| Missing public key
| Nonsecure parameters for key generation