共用方式為


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 套件。

備註

新增簽章並不會藉由呼叫 LoadPackageFileLoadPackageStream 方法來覆寫讀取的原始檔案或數據流。 簽章將會新增至 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 Paper Specification

XPS 數位簽名 API 錯誤

XPS 檔案錯誤