Контекст, используемый для операции обзора, инициализируется для различной операции обзора
Контекст, инициализированный неправильно для операции обзора, происходит, когда вы инициализируете объект контекста EVP_MD_CTX для определенной операции обзора, но используете контекст для различной операции.
Например, вы инициализируете контекст для создания дайджеста сообщения только.
ret = EVP_DigestInit(ctx, EVP_sha256())
ret = EVP_SignFinal(&ctx, out, &out_len, pkey);
EVP_DigestUpdate работает тождественно к EVP_SignUpdate.Спутывание различных операций на том же контексте может вести, чтобы затенить код. Трудно определить сразу, используется ли текущий объект для создания дайджеста сообщения, подписания или верификации. Путаница может также привести к отказу в операции или неожиданном дайджесте сообщения.
После того, как вы настроите контекст для определенного семейства операций, используйте контекст только для того семейства операций. Например, используйте эти пары функций для инициализации и последних шагов.
EVP_DigestInit: EVP_DigestFinal
EVP_DigestInit_ex: EVP_DigestFinal_ex
EVP_DigestSignInit: EVP_DigestSignFinal
Если вы хотите снова использовать существующий объект контекста для различного семейства операций, повторно инициализируйте контекст.
| Группа: криптография |
| Язык: C | C++ |
| Значение по умолчанию: 'off' |
Синтаксис командной строки:
CRYPTO_MD_BAD_FUNCTION |
| Влияние: носитель |
| ID CWE: 310, 353, 354, 372, 573, 664 |