Получение подписи PKCS#7 с CryptSignHash

CryptSignMessage может создать подпись PKCS#7, передав соответствующий тип кодировки в параметре PCRYPT_SIGN_MESSAGE_PARA. Но я не могу найти способ сделать то же самое с функцией CryptSignHash.

Есть ли способ создать подпись PKCS#7 с помощью API CryptSignHash или есть какая-либо другая функция, которая может быть вызвана для преобразования вывода CryptSignHash в PKCS#7?

1 ответ

Нет, вы не можете преобразовать вывод CryptSignHash на выход CryptSignMessage,

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

С CryptSignHash Вы непосредственно подписываете данный хеш. И этот хеш выполняется непосредственно над данными. Поскольку хеш является одним из способов, вы не можете восстановить данные, поэтому вы не можете выполнить схему, требуемую CryptSignMessage,

Короче говоря, хотя названия этих методов кажутся похожими, обе функции выполняют криптографию на разных уровнях. Один - это просто криптографический примитив, другой - протокол прикладного уровня.

Другие вопросы по тегам