Данный пример создает подписанное CMS сообщение. Подпись осуществляется в поточном режиме. Так как в Microsoft .Net Framework 2.0 нет классов, позволяющих использовать поточную подпись, реализация использует P/Invoke вызовы на соответствующие функции операционной системы. Для файлов размером меньше 4 Гб используется DER кодирование, для больших - BER. Возможно создание как открепленной (detached) подписи, так PKCS #7/CMS содержащего сообщение и подпись. В подписанное сообщение добавляются сертификат подписавшего и все промежуточные сертификаты до корневого (не включая корневой).

Демонстрирует

Данный пример демонстрирует использование функция ОС CryptMsgOpenToEncode и CryptMsgUpdate.

Исходные тексты

Исходные тексты примера запакованы в файле Simple.zip. C# версия находится в файле CMS\cs\StreamSign.cs, Visual Basic версия находится в файле CMS\vb\StreamSign.vb. Кроме того, константы, делегаты, прототипы функций ОС объявлены в файле CMS\cs\StreamHelper.cs, Visual Basic версия находится в файле CMS\vb\StreamHelper.vb. Подробнее см. Сборка, запуск и местоположение простейших криптографических примеров.

Как собрать пример

При сборке данного примера в виде отдельной исполняемой программы требует указания двух исходных файлов (см. выше). Сборка не требует дополнительных параметров и библиотек. Побробнее см. Сборка, запуск и местоположение простейших криптографических примеров.

Как запустить пример

Перед запуском примера необходимо иметь секретный ключ и соответствующий ему сертификат. Сертификат должен быть установлен в хранилище MY со ссылкой на секретный ключ. Так же необходимо иметь исходный файл для подписи. В ходе работы пример создает файл (указываемый в командной строке), если файл уже существует он будет перезаписан.

Для запуска примера необходимо передать

  1. имя (Subject) сертификата

  2. Имя подписываемого файла

  3. Имя подписанного файла или имя файла содержащего подпись (для открепленной подписи).

Кроме того, можно передать четвертый параметр detached, если необходимо создание открепленной подписи. Если указаны только 3 параметра, то будет создан файл содержащий как подписываемое сообщение так и подпись.

Побробнее о возможных вариантах запуска см. Сборка, запуск и местоположение простейших криптографических примеров.

См. также