Поделиться через


Метод 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
По крайней мере один из параметров signaturePartName, newSignatureXml и digitalSignature имеет значение NULL.
OPC_E_DS_DUPLICATE_PACKAGE_OBJECT_REFERENCES
0x8051002D
Буфер newSignatureXml содержит более одного элемента Reference , который ссылается на элемент package Object , но разрешен только один такой элемент Reference .
OPC_E_DS_DUPLICATE_SIGNATURE_PROPERTY_ELEMENT
0x80510028
Буфер newSignatureXml содержит несколько элементов SignatureProperty с одинаковым атрибутом Id .
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 дочерний элемент SignatureProperty элемента SignatureProperties не найден.
OPC_E_DS_MISSING_SIGNATURE_TIME_PROPERTY
0x80510029
В буфере newSignatureXml элемент SignatureProperty со значением атрибута Id idSignatureTime не существует или создан неправильно.
OPC_E_DS_MULTIPLE_RELATIONSHIP_TRANSFORMS
0x80510031
В буфере newSignatureXml для элемента Reference указано несколько преобразований связей, но допускается только одно преобразование связей.
OPC_E_DS_REFERENCE_MISSING_CONTENT_TYPE
0x80510030
Значение атрибута URI элемента Reference в буфере newSignatureXml не включает тип контента указанной части.
OPC_E_DS_SIGNATURE_PROPERTY_MISSING_TARGET
0x80510045
В буфере newSignatureXml в элементе SignatureProperty отсутствует обязательный атрибут Target .
OPC_E_DS_SIGNATURE_REFERENCE_MISSING_URI
0x80510043
Элемент Reference , который находится в буфере newSignatureXml , требует атрибут URI , но атрибут отсутствует.
OPC_E_DS_UNSIGNED_PACKAGE
0x80510055
Пакет не подписан; Поэтому разметку сигнатуры заменить нельзя.
OPC_E_NO_SUCH_PART
0x80510018
Указанная часть не существует.

Комментарии

Этот метод не проверяет сигнатуру, полученную из новой разметки подписи, которая находится в параметре newSignatureXml .

Вызывающий объект должен подтвердить, что новая разметка подписи, которая заменяет существующую разметку подписи в указанной части сигнатуры, не нарушает сигнатуру.

Этот метод изменяет существующую разметку подписи; Сертификаты и связи, которые имеют указанную часть подписи в качестве источника, сохраняются.

Потокобезопасность

Объекты упаковки не являются потокобезопасны.

Дополнительные сведения см. в статье начало работы с помощью API упаковки.

Требования

Требование Значение
Минимальная версия клиента Windows 7 [только классические приложения]
Минимальная версия сервера Windows Server 2008 R2 [только классические приложения]
Целевая платформа Windows
Header msopc.h

См. также раздел

Основные интерфейсы упаковки

Общие сведения о цифровых подписях

начало работы с помощью API упаковки

IOpcDigitalSignatureManager

Разделы общих сведений

Руководство по программированию API упаковки

Справочник по API упаковки

Примеры API упаковки

Упаковка интерфейсов цифровой подписи

Интерфейсы упаковки

Справочные материалы