Перейти к контенту

Некорректная работа CryptGetKeyParam


Рекомендуемые сообщения

Добрый день. 

Обнаружил некорректную работу CryptGetKeyParam при получении размера сгенерированного эфемерного ключа по алгоритму с идентификатором CALG_DH_EL_EPHEM.

Пример кода:

    HCRYPTPROV hProvResponder = 0;
	
	if (!CryptAcquireContextA(&hProvResponder, NULL, NULL, 2, CRYPT_VERIFYCONTEXT)) {
		std::cout << std::hex << GetLastError() << std::endl;
		return -1;
	}			

	HCRYPTKEY phKey = 0;
	if (!CryptGenKey(hProvResponder, CALG_DH_EL_EPHEM, AT_KEYEXCHANGE, &phKey)) {
		std::cout << std::hex << GetLastError() << std::endl;
		return -2;
	}

	DWORD data_len = 0;
	if (!CryptGetKeyParam(phKey, KP_KEYLEN, NULL, &data_len, 0)) {
		std::cout << std::hex << GetLastError() << std::endl;
		return -3;
	}
	
	DWORD dwData = 0;
	if (!CryptGetKeyParam(phKey, KP_KEYLEN, (BYTE*)(&dwData), &data_len, 0)) {
		std::cout << std::hex << GetLastError() << std::endl;
		return -4;
	}

    std:cout << dwData;

Результат: 0, а должно быть 512. 

Это ошибка или я что-то не так делаю? 

Кроме этого вопрос по документации: 

В ViPNet_CSP_Developer_Guide_Ru.pdf в разделе "Формирование ключа" сказано:

AlgId [in] — идентификатор алгоритма шифрования или электронной подписи, для которого должен быть произведен ключ. Допустима передача любого из поддерживаемых алгоритмов (см. Идентификаторы алгоритмов (на стр. 13)). Кроме этого могут быть использованы следующие значения:

CSP_2012_256_EXCHANGE_ID_EPHEM Создание эфемерной пары ключей по алгоритму ГОСТ Р 34.10-2012 с длиной секретного ключа 256 бит.
CSP_2012_512_EXCHANGE_ID_EPHEM Создание эфемерной пары ключей по алгоритму ГОСТ Р 34.10-2012 с длиной секретного ключа 512 бит.

Вопрос, откуда брать значения этих констант?

Ссылка на комментарий
Поделиться на других сайтах

Присоединиться к обсуждению

Вы можете ответить сейчас, а зарегистрироваться позже. Если у вас уже есть аккаунт, войдите, чтобы ответить от своего имени.

Гость
Ответить в этой теме...

×   Вы вставили отформатированный текст.   Удалить форматирование

  Допустимо не более 75 смайлов.

×   Ваша ссылка была автоматически заменена на медиа-контент.   Отображать как ссылку

×   Ваши публикации восстановлены.   Очистить редактор

×   Вы не можете вставить изображения напрямую. Загрузите или вставьте изображения по ссылке.

×
×
  • Создать...

Важная информация

Продолжая пользоваться сайтом вы принимаете Условия использования.