Я пытаюсь использовать BCryptEncrypt
для аутентификации некоторых AAD, но функция не работает с STATUS_INVALID_PARAMETER
. BCryptEncrypt
принимает 10 параметров. Один из параметров BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
. BCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
принимает еще 13 параметров.
Запуск моей тестовой программы приводит к:
>.\bcrypt-gmac.exe
BCryptEncrypt error, 0xc000000d (STATUS_INVALID_PARAMETER)
STATUS_INVALID_PARAMETER
в этом случае не очень помогает.
Мой вопрос: как определить, какой из 23 параметров вызывает ошибку при использовании Bcrypt?
Есть ли способ получить расширенную информацию об ошибке, например, через BcryptPropertyGet
(может быть, LAST_ERROR_PARAMETER
или что-то подобное)?
Или Microsoft ожидает, что мы догадаемся о проблеме? В этом случае, я думаю, ответ будет "вы не можете".
Документы Microsoft не содержат примеров использования Bcrypt. Я также не могу найти полезные примеры в Stack Overflow или MSDN. Даже Writing Secure Code for Windows Vista не обеспечивает Примеры.
Вот обработка в Написание безопасного кода для Windows Vista. Это равносильно псевдокоду, что очень разочаровывает:
STATUS_INVALID_PARAMETER
. 23 потенциальных параметра (с комбинациями) слишком много, чтобы исключить их путем угадывания. - person jww   schedule 14.08.2019BCryptEncrypt
существует (здесь, например), хотя, по-видимому, не поддерживает режим шифрования с проверкой подлинности. Поля дляBCRYPT_AUTHENTICATED_CIPHER_MODE_INFO
кажутся прилично задокументировано однако. Я также мог бы найти пример аутентифицированного шифрования на SO здесь. - person Hasturkun   schedule 14.08.2019STATUS_INVALID_PARAMETER
? - person jww   schedule 14.08.2019