Контекст, используемый в операции криптографии, сопоставлен с открытым ключом 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 parameters for key generation
| Missing data for encryption, decryption or signing
| Missing peer key
| Missing private key
| Nonsecure parameters for key generation