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。 可能的值包括(但并不限于)下表中的项。
返回代码/值 | 说明 |
---|---|
|
方法成功。 |
|
至少一个 signaturePartName、 newSignatureXml 和 digitalSignature 参数为 NULL。 |
|
newSignatureXml 缓冲区包含多个引用包 Object 元素的 Reference 元素,但只允许一个此类引用。 |
|
newSignatureXml 缓冲区包含多个具有相同 Id 属性的 SignatureProperty 元素。 |
|
在 newSignatureXml 缓冲区中, Reference 元素引用包外部的对象。 引用 元素必须指向内部的部件或 Object 元素。 |
|
在 newSignatureXml 缓冲区中请求或使用了不受支持的规范化方法。 |
|
在 newSignatureXml 缓冲区中,指示关系转换的使用和转换选择条件的 Transform 元素不符合 OPC 中指定的架构。 |
|
newSignatureXml 缓冲区不包含一个签名的签名标记。 |
|
newSignatureXml 缓冲区的大小为 0,但此缓冲区的大小必须大于 0。 |
|
在 newSignatureXml 缓冲区中,关系转换不后跟规范化方法;关系转换必须后跟规范化方法。 |
|
在 newSignatureXml 缓冲区中,找不到对包特定的 Object 元素的引用。 |
|
newSignatureXml 缓冲区中的签名标记未指定签名方法算法。 |
|
在 newSignatureXml 缓冲区中,找不到 SignatureProperties 元素。 |
|
在 newSignatureXml 缓冲区中,找不到 SignatureProperties 元素的 SignatureProperty 子元素。 |
|
在 newSignatureXml 缓冲区中,Id 属性值为“idSignatureTime”的 SignatureProperty 元素不存在或构造不正确。 |
|
在 newSignatureXml 缓冲区中,为 Reference 元素指定了多个关系转换,但只允许一个关系转换。 |
|
newSignatureXml 缓冲区中 Reference 元素的 URI 属性值不包括所引用部件的内容类型。 |
|
在 newSignatureXml 缓冲区中, SignatureProperty 元素缺少所需的 Target 属性。 |
|
NewSignatureXml 缓冲区中的 Reference 元素需要 URI 属性,但缺少该属性。 |
|
包未签名;因此,无法替换签名标记。 |
|
指定的部件不存在。 |
注解
此方法不验证从 newSignatureXml 参数中的新签名标记派生的签名。
调用方必须确认新签名标记(替换指定签名部件中的现有签名标记)不会破坏签名。
此方法更改现有签名标记;保留具有指定签名部分作为其源的证书和关系。
线程安全性
打包对象不是线程安全的。
有关详细信息,请参阅打包 API 的入门。
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 7 [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2008 R2 [仅限桌面应用] |
目标平台 | Windows |
标头 | msopc.h |
另请参阅
概述
引用