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