Метод IXpsSignatureManager::Sign (xpsdigitalsignature.h)
Подписывает содержимое пакета XPS, как указано в параметрах подписи, и возвращает полученную цифровую подпись.
Синтаксис
HRESULT Sign(
[in] IXpsSigningOptions *signOptions,
[in] const CERT_CONTEXT *x509Certificate,
[out, retval] IXpsSignature **signature
);
Параметры
[in] signOptions
Указатель на интерфейс IXpsSigningOptions , содержащий параметры подписывания.
Свойства SignatureMethod и DigestMethod интерфейса IXpsSigningOptions должны быть инициализированы, прежде чем указатель на этот интерфейс можно будет использовать в параметре signOptions .
[in] x509Certificate
Указатель на структуру CERT_CONTEXT , содержащую сертификат X.509, используемый для подписи.
[out, retval] signature
Указатель на интерфейс IXpsSignature , содержащий новую цифровую подпись.
В случае успешного выполнения этот метод создает часть подписи, добавляет ее в пакет и в сигнатуре возвращает указатель на интерфейс этой части сигнатуры.
Возвращаемое значение
Метод возвращает HRESULT. Возможные значения включают, помимо прочего, значения в следующей таблице. Возвращаемые значения, не перечисленные в этой таблице, см. в разделах Ошибки API цифровой подписи XPS и Ошибки документа XPS.
Код возврата | Описание |
---|---|
|
Метод выполнен успешно. |
|
Значение XPS_SIGN_FLAGS указывает, что элементы совместимости разметки не ожидаются; однако были найдены элементы совместимости разметки. |
|
signOptions не указывает на реализацию распознанного интерфейса. Пользовательская реализация интерфейсов API документов XPS не поддерживается. |
|
Пакет XPS еще не открыт в диспетчере подписей. |
Комментарии
Добавление новой сигнатуры не перезаписывает исходный файл или поток, который был прочитан путем вызова метода LoadPackageFile или LoadPackageStream . Подпись будет добавлена в копию пакета XPS в памяти, пока пакет не будет сохранен (путем вызова метода SavePackageToFile или SavePackageToStream ).
Если новая сигнатура содержит части, содержащие элементы совместимости разметки, по умолчанию этот метод завершается ошибкой XPS_E_MARKUP_COMPATIBILITY_ELEMENTS. Чтобы переопределить это поведение, вызовите IXpsSigningOptions::SetFlags; Будет задан флаг XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY в интерфейсе IXpsSigningOptions , на который ссылается параметр signOptions .
Если этот метод возвращает значение HRESULT , которое отсутствует в списке возвращаемых значений, диспетчер подписей должен быть освобожден и повторно создан.
Этот метод будет успешным, даже если новая сигнатура нарушает существующие сигнатуры.
Требования
Требование | Значение |
---|---|
Минимальная версия клиента | Windows 7 [только классические приложения] |
Минимальная версия сервера | Windows Server 2008 R2 [только классические приложения] |
Целевая платформа | Windows |
Header | xpsdigitalsignature.h |