Контекст, используемый в операции обзора, инициализируется для различной операции обзора
Этот дефект происходит, когда вы инициализируете 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 |