Метод IOpcDigitalSignatureManager::Sign (msopc.h)
Подписывает пакет, создав подпись с помощью указанного сертификата и указателя интерфейса IOpcSigningOptions . Итоговая сигнатура представлена указателем интерфейса IOpcDigitalSignature .
Синтаксис
HRESULT Sign(
[in] const CERT_CONTEXT *certificate,
[in] IOpcSigningOptions *signingOptions,
[out, retval] IOpcDigitalSignature **digitalSignature
);
Параметры
[in] certificate
Указатель на CERT_CONTEXT структуру, содержащую сертификат.
[in] signingOptions
Указатель интерфейса IOpcSigningOptions , используемый для создания подписи.
[out, retval] digitalSignature
Новый указатель интерфейса IOpcDigitalSignature , представляющий сигнатуру.
Возвращаемое значение
Метод возвращает HRESULT. Допустимые значения включают, но не ограничиваются, значения, приведенные в следующей таблице.
Возвращаемый код/значение | Описание |
---|---|
|
Метод выполнен успешно. |
|
Хотя бы один из параметров сертификата, signingOptions и digitalSignature имеет значение NULL. |
|
Метод дайджеста по умолчанию не задан; Чтобы задать его, вызовите метод IOpcSigningOptions::SetDefaultDigestMethod. |
|
Не удается получить значение дайджеста компонента пакета или элемента в разметке сигнатуры, на которую ссылается подпись. |
|
Формат времени сигнатуры не является допустимым значением перечисления OPC_SIGNATURE_TIME_FORMAT . |
|
Указанный параметр подписывания связи не является допустимым значением перечисления OPC_RELATIONSHIPS_SIGNING_OPTION . |
|
Подпись в пакете неправильно сформирована. Не удается получить значение сигнатуры. |
|
Метод сигнатуры не задан. Вызовите метод IOpcSigningOptions::SetSignatureMethod , чтобы задать метод подписи. |
|
Указанная часть не существует. |
|
Код ошибки HRESULT из API шифрования . |
|
Код ошибки HRESULT из API веб-служб Windows . |
Комментарии
Этот метод использует объекты Packaging для внесения изменений в пакет. Результирующий изменения не сохраняются, пока не будет сохранен сам пакет.
Перед вызовом этого метода для создания сигнатуры вызовите методы IOpcSigningOptions::SetDefaultDigestMethod и IOpcSigningOptions::SetSignatureMethod .
Чтобы создать указатель интерфейса IOpcSigningOptions , необходимый для этого метода, вызовите метод CreateSigningOptions .
- Часть "Источник цифровой подписи"
- Отношение пакета для типа связи источника цифровой подписи
- Одна часть подписи, содержащая разметку подписи
- Одна или несколько частей, содержащих сертификат
- Одно отношение, которое предназначено для части подписи и имеет часть источника цифровой подписи в качестве источника.
- Одно или несколько отношений, предназначенных для части подписи, содержащей сертификат, и которая имеет другую часть подписи в качестве источника
Если sign не удается, любая из указанных выше частей и связей может быть представлена в пакете объектами упаковки. Если метод возвращает OPC_E_DS_SIGNATURE_METHOD_NOT_SET или OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET код ошибки, пакет не был изменен.
При успешном выполнении sign значения дайджеста вычисляются для подписанных сущностей, а созданная сигнатура сериализуется как разметка подписи. Возможные подписанные сущности включают элемент Signature , ссылки, части, связи, а также элементы Object , относящиеся к конкретному пакету и приложению.
Ошибки, которые вводятся в сигнатуру пакета, когда вызывающий объект использует интерфейс IOpcSigningOptions для задания сведений о подписи, могут не предоставляться до вызова Sign .
Потокобезопасность
Объекты упаковки не являются потокобезопасны.
Дополнительные сведения см. в статье начало работы с помощью API упаковки.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | msopc.h |
См. также раздел
Общие сведения о цифровых подписях
начало работы с помощью API упаковки
Разделы общих сведений
Руководство по программированию API упаковки
Упаковка интерфейсов цифровой подписи
Справочные материалы