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