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