Контекст, используемый для операции криптографии, сопоставлен с открытым ключом NULL или не сопоставлен с открытым ключом вообще
Этот дефект происходит, когда вы используете объект контекста для шифрования или аутентификации подписи, но вы ранее не сопоставили объект с непустым открытым ключом.
Например, вы инициализируете объект контекста открытым ключом NULL и используете объект для шифрования позже.
ctx = EVP_PKEY_CTX_new(pkey, NULL); ... ret = EVP_PKEY_encrypt_init(ctx); ... ret = EVP_PKEY_encrypt(ctx, out, &out_len, in, in_len);
Средство проверки дубликата Missing private key
проверки на закрытый ключ в дешифровании и операциях подписи.
Без открытого ключа, шифрования или шага аутентификации подписи не происходит. Избыточная операция часто указывает на ошибку кодирования.
Проверяйте размещение операции (шифрование или аутентификация подписи). Если операция предназначается, чтобы произойти, убедитесь, что вы выполнили эти шаги до операции:
Вы сгенерировали непустой открытый ключ.
Например:
EVP_PKEY *pkey = NULL; kctx = EVP_PKEY_CTX_new_id(EVP_PKEY_RSA, NULL); EVP_PKEY_keygen_init(kctx); EVP_PKEY_CTX_set_rsa_keygen_bits(kctx, RSA_2048BITS); EVP_PKEY_keygen(kctx, &pkey);
Вы сопоставили непустой объект контекста с открытым ключом.
Например:
ctx = EVP_PKEY_CTX_new(pkey, NULL);
Примечание: Если вы используете EVP_PKEY_CTX_new_id
вместо EVP_PKEY_CTX_new
, вы не сопоставляете объект контекста с открытым ключом.
Группа: криптография |
Язык: C | C++ |
Значение по умолчанию: Off |
Синтаксис командной строки:
CRYPTO_PKEY_NO_PUBLIC_KEY |
Удар: Средняя |
ID CWE: 310, 320, 573, 664 |
Context initialized incorrectly for cryptographic operation
| Find defects (-checkers)
| Incorrect key for cryptographic algorithm
| Missing data for encryption, decryption or signing
| Missing parameters for key generation
| Missing peer key
| Missing private key
| Nonsecure parameters for key generation