Я использую 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?