共用方式為


IOpcDigitalSignatureManager::ReplaceSignatureXml 方法 (msopc.h)

取代儲存在指定簽章部分的現有簽章標記。

語法

HRESULT ReplaceSignatureXml(
  [in]          IOpcPartUri          *signaturePartName,
  [in]          const UINT8          *newSignatureXml,
  [in]          UINT32               count,
  [out, retval] IOpcDigitalSignature **digitalSignature
);

參數

[in] signaturePartName

IOpcPartUri 介面指標,代表儲存現有簽章標記之簽章元件的元件名稱。

[in] newSignatureXml

緩衝區,其中包含將取代現有標記的簽章標記。

[in] count

newSignatureXml 緩衝區的大小。

[out, retval] digitalSignature

IOpcDigitalSignature 介面的指標,代表衍生自 newSignatureXml 中傳遞之簽章標記的簽章。

傳回值

方法會傳回 HRESULT。 可能的值包括 (但不限於) 下表中的這些值。

傳回碼/值 描述
S_OK
此方法已成功。
E_POINTER
至少其中一個 signaturePartNamenewSignatureXmldigitalSignature 參數為 NULL
OPC_E_DS_DUPLICATE_PACKAGE_OBJECT_REFERENCES
0x8051002D
newSignatureXml 緩衝區包含多個參考封裝 Object 元素的 Reference 元素,但只允許一個這類 Reference
OPC_E_DS_DUPLICATE_SIGNATURE_PROPERTY_ELEMENT
0x80510028
newSignatureXml 緩衝區包含多個具有相同 Id 屬性的 SignatureProperty 元素。
OPC_E_DS_EXTERNAL_SIGNATURE_REFERENCE
0x8051002F
newSignatureXml 緩衝區中, Reference 元素是指封裝外部的物件。 參考 項目必須指向內部的元件或 Object 元素。
OPC_E_DS_INVALID_CANONICALIZATION_METHOD
0x80510022
newSignatureXml 緩衝區中要求或使用不支援的標準方法。
OPC_E_DS_INVALID_RELATIONSHIP_TRANSFORM_XML
0x80510021
newSignatureXml 緩衝區中,表示使用關聯性轉換的 Transform 元素,以及轉換的選取準則不符合 OPC 中指定的架構。
OPC_E_DS_INVALID_SIGNATURE_COUNT
0x8051002B
newSignatureXml 緩衝區未包含一個簽章的簽章標記。
OPC_E_DS_INVALID_SIGNATURE_XML
0x8051002A
newSignatureXml 緩衝區的大小為0,但此緩衝區的大小必須大於0。
OPC_E_DS_MISSING_CANONICALIZATION_TRANSFORM
0x80510032
newSignatureXml 緩衝區中,關聯性轉換後面不會接著標準化方法;關聯性轉換後面必須接著標準化方法。
OPC_E_DS_MISSING_PACKAGE_OBJECT_REFERENCE
0x8051002E
newSignatureXml 緩衝區中,找不到封裝特定 Object 元素的參考
OPC_E_DS_MISSING_SIGNATURE_ALGORITHM
0x8051002C
newSignatureXml 緩衝區中的簽章標記未指定簽章方法演算法。
OPC_E_DS_MISSING_SIGNATURE_PROPERTIES_ELEMENT
0x80510026
newSignatureXml 緩衝區中,找不到 SignatureProperties 元素。
OPC_E_DS_MISSING_SIGNATURE_PROPERTY_ELEMENT
0x80510027
newSignatureXml 緩衝區中,找不到 SignatureProperties 元素的 SignatureProperty 子元素。
OPC_E_DS_MISSING_SIGNATURE_TIME_PROPERTY
0x80510029
newSignatureXml 緩衝區中,標識符屬性值為 “idSignatureTime” 的 SignatureProperty 元素不存在或未正確建構。
OPC_E_DS_MULTIPLE_RELATIONSHIP_TRANSFORMS
0x80510031
newSignatureXml 緩衝區中,會針對 Reference 元素指定多個關聯性轉換,但只允許一個關聯性轉換。
OPC_E_DS_REFERENCE_MISSING_CONTENT_TYPE
0x80510030
newSignatureXml 緩衝區中 Reference 元素的 URI 屬性值不包含參考元件的內容類型。
OPC_E_DS_SIGNATURE_PROPERTY_MISSING_TARGET
0x80510045
newSignatureXml 緩衝區中, SignatureProperty 元素遺漏必要的 Target 屬性。
OPC_E_DS_SIGNATURE_REFERENCE_MISSING_URI
0x80510043
位於 newSignatureXml 緩衝區中的 Reference 元素需要 URI 屬性,但屬性遺失。
OPC_E_DS_UNSIGNED_PACKAGE
0x80510055
套件未簽署;因此,無法取代簽章標記。
OPC_E_NO_SUCH_PART
0x80510018
指定的元件不存在。

備註

這個方法不會驗證衍生自 newSignatureXml 參數中之新簽章標記的簽章。

呼叫端必須確認新的簽章標記會取代指定簽章部分的現有簽章標記,將不會中斷簽章。

此方法會變更現有的簽章標記;保留具有指定簽章元件的憑證和關聯性。

執行緒安全性

封裝物件不是安全線程。

如需詳細資訊,請參閱使用封裝 API 使用者入門

規格需求

需求
最低支援的用戶端 Windows 7 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2008 R2 [僅限傳統型應用程式]
目標平台 Windows
標頭 msopc.h

另請參閱

核心封裝介面

數位簽名概觀

使用封裝 API 使用者入門

IOpcDigitalSignatureManager

概觀

封裝 API 程式設計指南

封裝 API 參考

封裝 API 範例

封裝數位簽名介面

封裝介面

參考