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 以設定簽章方法。 |
|
指定的元件不存在。 |
|
密碼編譯 API 的 HRESULT 錯誤碼。 |
|
來自 Windows Web 服務 API 的 HRESULT 錯誤碼。 |
備註
這個方法會使用 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 |
標頭 | msopc.h |
另請參閱
概觀
參考