В другой функции для получения сеансовых ключей я сначала импортирую ключи с помощью NCryptImportKey и создаю секретное соглашение NCryptSecretAgreement. Далее я использую NCryptSetProperty для установки значений хеш-функции и соли, а затем использую NCryptDeriveKey для получения ключей сеанса. Но NCryptSetProperty возвращает ошибку. Ошибка NCryptSetProperty: 0x80090026
Вот блок кода, который я использую:
Код: Выделить всё
int deriveSessionKeys(uint64_t pub_key_handle, const uint8_t *peer_pub_key,
SessionKeys *keys_out) {
NCryptProvider provider;
NCRYPT_SECRET_HANDLE hSharedSecret = NULL;
NCRYPT_KEY_HANDLE hPubKeyHandle = NULL;
SECURITY_STATUS status;
try {
// Step 1: Import public key
hPubKeyHandle = importEphemeralPublicKey(provider.handle, peer_pub_key);
// Step 2: Create secret agreement
status = NCryptSecretAgreement((NCRYPT_KEY_HANDLE)pub_key_handle, hPubKeyHandle,
&hSharedSecret, 0);
if (status != ERROR_SUCCESS) {
std::cerr
Подробнее здесь: [url]https://stackoverflow.com/questions/79886589/ncryptsetproperty-returns-error-0x80090026-while-deriving-session-keys-using-ncr[/url]
Мобильная версия