Метод SignedData.Sign

[Метод Sign доступен для использования в операционных системах, указанных в разделе Требования. Вместо этого используйте класс SignedCms в пространстве имен System.Security.Cryptography.Pkcs .]

Метод Sign создает цифровую подпись для подписываемого содержимого. Цифровая подпись состоит из хэша подписываемого содержимого, зашифрованного с помощью закрытого ключа подписывателя. Этот метод можно использовать только после инициализации свойства SignedData.Content . Если метод Sign вызывается для объекта, который уже имеет сигнатуру, заменяется старая сигнатура. Подпись создается с помощью алгоритма подписывания SHA1.

Синтаксис

SignedData.Sign( _
  [ ByVal Signer ], _
  [ ByVal bDetached ], _
  [ ByVal EncodingType ] _
)

Параметры

Подписыватель [в, необязательно]

Ссылка на объект Signer подписывателя данных. Объект Signer должен иметь доступ к закрытому ключусертификата , используемого для подписи. Этот параметр может иметь значение NULL; Дополнительные сведения см. в разделе Примечания.

bDetached [in, необязательно]

Если задано значение True, подписываемые данные отсоединяются; т. е. подписанное содержимое не включается в состав подписанного объекта. Чтобы проверить подпись отсоединяемого содержимого, приложение должно иметь копию исходного содержимого. Отсоединяемое содержимое часто используется для уменьшения размера подписанного объекта, отправляемого через Интернет, если получатель подписанного сообщения имеет исходную копию подписанных данных. Значение по умолчанию равно False.

EncodingType [in, необязательный]

Значение перечисления CAPICOM_ENCODING_TYPE , указывающее способ кодирования подписанных данных. Значение по умолчанию — CAPICOM_ENCODE_BASE64. Этот параметр может принимать одно из указанных ниже значений.

Значение Значение
CAPICOM_ENCODE_ANY
Этот тип кодирования используется только в том случае, если входные данные имеют неизвестный тип кодирования. Если это значение используется для указания типа кодирования выходных данных, вместо него будет использоваться CAPICOM_ENCODE_BASE64. Представлено в CAPICOM 2.0.
CAPICOM_ENCODE_BASE64
Данные сохраняются в виде строки в кодировке Base64.
CAPICOM_ENCODE_BINARY
Данные сохраняются в виде чистой двоичной последовательности.

 

Возвращаемое значение

Этот метод возвращает строку, содержащую закодированные подписанные данные.

Если этот метод завершается сбоем, возникает ошибка. Объект Err будет содержать дополнительные сведения об ошибке.

Комментарии

Важно!

При вызове этого метода из веб-скрипта сценарий должен использовать закрытый ключ для создания цифровой подписи. Разрешение ненадежным веб-сайтам использовать закрытый ключ является угрозой безопасности. При первом вызове этого метода появится диалоговое окно с запросом, может ли веб-сайт использовать закрытый ключ. Если разрешить скрипту использовать закрытый ключ для создания цифровой подписи и выбрать "Больше не показывать это диалоговое окно", диалоговое окно больше не будет отображаться для сценариев в этом домене, использующего закрытый ключ для создания цифровой подписи. Однако скрипты за пределами этого домена, которые пытаются использовать закрытый ключ для создания цифровой подписи, по-прежнему приводят к появляется это диалоговое окно. Если вы не разрешите скрипту использовать закрытый ключ и установите флажок "Больше не показывать это диалоговое окно", скриптам в этом домене автоматически будет отказано в использовании закрытого ключа для создания цифровых подписей.

 

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

Следующие результаты относятся к значению параметра Signer :

  • Если параметр Signer не равен NULL, этот метод использует закрытый ключ, на который указывает связанный сертификат, для шифрования подписи. Если закрытый ключ, на который указывает сертификат, недоступен, метод завершается ошибкой.
  • Если параметр Signer имеет значение NULL и в хранилище CURRENT_USER MY имеется только один сертификат, имеющий доступ к закрытому ключу, этот сертификат используется для создания подписи.
  • Если параметр Signer имеет значение NULL, свойство Settings.EnablePromptForCertificateUI имеет значение true, а в хранилище CURRENT_USER MY имеется несколько сертификатов с доступным закрытым ключом, появится диалоговое окно, позволяющее пользователю выбрать используемый сертификат.
  • Если параметр Signer имеет значение NULL , а свойство Settings.EnablePromptForCertificateUI имеет значение false, метод завершается ошибкой.
  • Если параметр Signer имеет значение NULL и в хранилище CURRENT_USER MY нет сертификата с доступным закрытым ключом, метод завершается ошибкой.

Требования

Требование Значение
Распространяемые компоненты
CAPICOM 2.0 или более поздней версии в Windows Server 2003 и Windows XP
DLL
Capicom.dll

См. также раздел

Объекты шифрования

SignedData