Контекст, используемый для операции дайджеста, инициализируется для другой операции дайджеста
Этот дефект возникает при инициализации 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 |
| Влияние: Средний |
| ИДЕНТИФИКАТОР CWE: 310, 353, 354, 372, 573, 664 |