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