iOpcSignatureRelationshipReferenceSet::Create 方法 (msopc.h)

创建表示对 Relationships 部件的引用的 IOpcSignatureRelationshipReference 接口指针,并将新的接口指针添加到该集。 选择要引用的“关系”部件中存储的所有关系或一部分关系进行签名。

语法

HRESULT Create(
  [in]          IOpcUri                            *sourceUri,
  [in]          LPCWSTR                            digestMethod,
  [in]          OPC_RELATIONSHIPS_SIGNING_OPTION   relationshipSigningOption,
  [in]          IOpcRelationshipSelectorSet        *selectorSet,
  [in]          OPC_CANONICALIZATION_METHOD        transformMethod,
  [out, retval] IOpcSignatureRelationshipReference **relationshipReference
);

参数

[in] sourceUri

一个 IOpcUri 接口指针,表示要选择要进行签名的关系的源 URI。

[in] digestMethod

要用于所选关系的摘要方法。 若要使用默认摘要方法,请在此参数中传递 NULL

重要在调用 IOpcDigitalSignatureManager::Sign 之前,必须通过调用 IOpcSigningOptions::SetDefaultDigestMethod 方法来设置默认摘要方法。
 

[in] relationshipSigningOption

一个 值,该值指示为签名选择的关系是包括要引用的“关系”部件中所有关系还是部分关系。

有关 relationshipSigningOption 值对其他参数的影响的信息,请参阅备注。

[in] selectorSet

IOpcRelationshipSelectorSet 接口指针,可用于标识要选择要进行签名的“关系”部分中关系的子集。

如果 relationshipSigningOption 设置为 OPC_RELATIONSHIP_SIGN_PART则 selectorSetNULL

有关 selectorSet 值的信息,请参阅备注。

[in] transformMethod

一个 值,该值描述要应用于所选关系的关系标记的规范化方法。

如果将 relationshipSigningOption设置为OPC_RELATIONSHIP_SIGN_USING_SELECTORS,则忽略 transformMethod 的值。

有关 在 relationshipSigningOption 设置为 OPC_RELATIONSHIP_SIGN_USING_SELECTORS 时要应用的转换方法的详细信息,请参阅备注。

[out, retval] relationshipReference

表示引用的关系部分的新 IOpcSignatureRelationshipReference 接口指针。

返回值

该方法返回 HRESULT。 可能的值包括(但并不限于)下表中的项。

返回代码 说明
S_OK
方法成功。
E_INVALIDARG
relationshipSigningOption 参数中传递的值不是有效的 OPC_RELATIONSHIPS_SIGNING_OPTION 枚举值。
E_INVALIDARG
transformMethod 参数中传递的值不是有效的OPC_CANONICALIZATION_METHOD枚举值。
E_POINTER
sourceUri 参数为 NULL
E_UNEXPECTED
在向 relationshipSigningOption 参数传递值OPC_RELATIONSHIP_SIGN_PART时,selectorSet 参数未传递 NULL

注解

此方法创建对 Relationships 部件的引用。 生成签名时,可以对存储在引用的关系部件中的所有关系或部分关系进行签名。

若要对 Relationships 部件中的所有关系进行签名,请调用此方法,其中 relationshipSigningOption 参数值设置为 OPC_RELATIONSHIP_SIGN_PART,selectorSet 参数值设置为 NULL

若要对 Relationships 部件中关系的子集进行签名,请调用此方法,并将 relationshipSigningOption 参数值设置为 OPC_RELATIONSHIP_SIGN_USING_SELECTORS并将 selectorSet 参数值设置为 IOpcRelationshipSelectorSet 接口指针。 若要创建 IOpcRelationshipSelectorSet 接口指针,请调用 CreateRelationshipSelectorSet 方法。

下表汇总了此方法创建引用所需的参数值,该引用指示存储在要引用) 关系部件中存储的所有关系或关系的子集 (。

说明 relationshipSigningOption 价值 selectorSet 价值
对“关系”部分中的所有关系进行签名 OPC_RELATIONSHIP_SIGN_PART NULL
在“关系”部件中对关系的子集进行签名 OPC_RELATIONSHIP_SIGN_USING_SELECTORS IOpcRelationshipSelectorSet 接口指针
 

如果要对关系的子集进行签名,则忽略指定的转换方法。 相反,在生成签名时,应用的第一个转换是关系转换,第二个转换是 OPC_CANONICALIZATION_C14N 规范化方法。

创建 IOpcSignatureRelationshipReference 接口指针并将其添加到集时,保存包时保存它所表示的引用。

不会签名的关系可以删除、修改或添加到包中,而不会使签名失效。 如果已选择关系子集进行签名,并且该子集已更改,则签名将失效。

重要 如果在引用的“关系”部件中添加或修改的关系的关系类型与用于在子集中选择一个或多个关系的关系类型匹配,则可能会更改所选子集。
 

线程安全性

打包对象不是线程安全的。

有关详细信息,请参阅打包 API 的入门

要求

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

另请参阅

核心打包接口

使用打包 API 入门

IOpcDigitalSignatureManager

IOpcSignatureRelationshipReferenceSet

IOpcSigningOptions

OPC_CANONICALIZATION_METHOD

OPC_RELATIONSHIPS_SIGNING_OPTION

概述

打包 API 编程指南

打包 API 参考

打包 API 示例

打包数字签名接口

打包接口

引用