Знак Hash с функциями криптографии Windows C ++ - PullRequest
2 голосов
/ 06 октября 2011

Я использую Visual Studio 2005 и C ++.

Здравствуйте, я использую очень хорошую функцию для подписи CryptSignMessage .С помощью этого я могу указать подписанные атрибуты, сертификат подписавшего, неподписанные атрибуты, если он отсоединен и т. Д.

Однако одним из параметров этой функции является «исходный документ», который в соответствии с документацией, которую он создаетхеш указанного содержимого и подписывает хеш

Интересно, смогу ли я создать сигнатурный эквивалент, используя только хеш документа.У меня нет документа, у меня есть только хэш.

Я нашел CryptSignHash , но эта функция не позволяет указывать параметры в виде подписанных атрибутов или неподписанных атрибутов и / или сертификата подписавшего.Согласно моим исследованиям, эта функция, кажется, возвращает PKCS # 1, где позже я должен установить структуру подписи PKCS # 7.Поэтому было бы полезно узнать, есть ли способ сделать подпись с помощью хеша и есть ли способ создать структуру PKCS # 7 из PKCS # 1, используя функции Windows.Или есть какой-либо способ подписать только хеш, который так же прост, как использование CryptSignMessage?

# update 1

CryptSignHash не возвращает PKCS # 1.Вернуть байтовый массив с отступом PKCS # 1.Я пытался использовать CryptMsgOpenToEncode и CryptSignMessage , передавая содержимое как "NULL" и добавляя хэш к подписанным атрибутам, они вычисляют пустой хеш.

Есть ли какой-либоспособ сделать это с помощью функций Windows?

1 Ответ

0 голосов
/ 09 октября 2011

Плохая идея подписывать хеш, не вычисляя хеш самостоятельно.См. Подписание хэша , Создание дайджеста и подписи отдельно и MFSA 2006-60 .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...