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