IXpsSignatureManager::Sign 方法 (xpsdigitalsignature.h)

根据签名选项指定对 XPS 包的内容进行签名,并返回生成的数字签名。

语法

HRESULT Sign(
  [in]          IXpsSigningOptions *signOptions,
  [in]          const CERT_CONTEXT *x509Certificate,
  [out, retval] IXpsSignature      **signature
);

参数

[in] signOptions

指向包含签名选项的 IXpsSigningOptions 接口的指针。

注意  

必须先初始化 IXpsSigningOptions 接口的 SignatureMethod 和 DigestMethod 属性,然后才能在 signOptions 参数中使用指向该接口的指针。

 

[in] x509Certificate

指向 CERT_CONTEXT 结构的指针,该结构包含要用于签名的 X.509 证书。

[out, retval] signature

指向包含新数字签名的 IXpsSignature 接口的指针。

如果成功,此方法将创建签名部件,将其添加到包中,并在 签名 中返回指向该签名部件接口的指针。

返回值

该方法返回 HRESULT。 可能的值包括但不限于后面的表中的值。 有关此表中未列出的返回值,请参阅 XPS 数字签名 API 错误XPS 文档错误

返回代码 说明
S_OK
方法成功。
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
XPS_SIGN_FLAGS 值指定了预期没有标记兼容性元素;但是,已找到标记兼容性元素。
XPS_E_NO_CUSTOM_OBJECTS
signOptions 不指向已识别的接口实现。 不支持 XPS 文档 API 接口的自定义实现。
XPS_E_PACKAGE_NOT_OPENED
尚未在签名管理器中打开 XPS 包。

注解

添加新签名不会覆盖通过调用 LoadPackageFile 或 LoadPackageStream 方法读取的原始文件或 。 签名将添加到 XPS 包的内存中副本,直到通过) 调用 SavePackageToFileSavePackageToStream 方法 (保存包。

如果新签名包含包含标记兼容性元素的部件,则此方法默认失败并显示 XPS_E_MARKUP_COMPATIBILITY_ELEMENTS错误。 若要替代此行为,请调用 IXpsSigningOptions::SetFlags;这将在 signOptions 参数引用的 IXpsSigningOptions 接口中设置XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY标志。

如果此方法返回的 HRESULT 值不在返回值列表中,则应释放并重新创建签名管理器。

即使新签名中断了现有签名,此方法也会成功。

要求

要求
最低受支持的客户端 Windows 7 [仅限桌面应用]
最低受支持的服务器 Windows Server 2008 R2 [仅限桌面应用]
目标平台 Windows
标头 xpsdigitalsignature.h

另请参阅

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

XML 纸张规范

XPS 数字签名 API 错误

XPS 文档错误