Compartir a través de


Método IOpcDigitalSignatureManager::ReplaceSignatureXml (msopc.h)

Reemplaza el marcado de firma existente almacenado en una parte de firma especificada.

Sintaxis

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

Parámetros

[in] signaturePartName

Puntero de interfaz IOpcPartUri que representa el nombre de elemento de la parte de firma que almacena el marcado de firma existente.

[in] newSignatureXml

Búfer que contiene el marcado de firma que reemplazará el marcado existente.

[in] count

Tamaño del búfer newSignatureXml .

[out, retval] digitalSignature

Puntero a una nueva interfaz IOpcDigitalSignature que representa la firma derivada del marcado de firma que se pasa en newSignatureXml.

Valor devuelto

El método devuelve un valor HRESULT. Entre los valores posibles se incluyen los que se indican en la tabla siguiente, entre otros.

Código o valor devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
E_POINTER
Al menos uno de los parámetros signaturePartName, newSignatureXml y digitalSignature es NULL.
OPC_E_DS_DUPLICATE_PACKAGE_OBJECT_REFERENCES
0x8051002D
El búfer newSignatureXml contiene más de un elemento Reference que hace referencia al elemento Object del paquete, pero solo se permite una referencia de este tipo.
OPC_E_DS_DUPLICATE_SIGNATURE_PROPERTY_ELEMENT
0x80510028
El búfer newSignatureXml contiene más de un elemento SignatureProperty que tiene el mismo atributo Id .
OPC_E_DS_EXTERNAL_SIGNATURE_REFERENCE
0x8051002F
En el búfer newSignatureXml , un elemento Reference hace referencia a un objeto externo al paquete. Los elementos de referencia deben apuntar a elementos o elementos Object que son internos.
OPC_E_DS_INVALID_CANONICALIZATION_METHOD
0x80510022
Se solicitó o usó un método de canónica no compatible en el búfer newSignatureXml .
OPC_E_DS_INVALID_RELATIONSHIP_TRANSFORM_XML
0x80510021
En el búfer newSignatureXml , un elemento Transform que indica el uso de la transformación de relaciones y los criterios de selección de la transformación no se ajustan al esquema especificado en el OPC.
OPC_E_DS_INVALID_SIGNATURE_COUNT
0x8051002B
El búfer newSignatureXml no contiene el marcado de firma para exactamente una firma.
OPC_E_DS_INVALID_SIGNATURE_XML
0x8051002A
El tamaño del búfer newSignatureXml es 0, pero este búfer debe tener un tamaño mayor que 0.
OPC_E_DS_MISSING_CANONICALIZATION_TRANSFORM
0x80510032
En el búfer newSignatureXml , una transformación de relaciones no va seguida de un método de canonización; La transformación de relaciones debe ser seguida de un método de canónico.
OPC_E_DS_MISSING_PACKAGE_OBJECT_REFERENCE
0x8051002E
En el búfer newSignatureXml , no se encontró una referencia al elemento Object específico del paquete.
OPC_E_DS_MISSING_SIGNATURE_ALGORITHM
0x8051002C
El marcado de firma en el búfer newSignatureXml no especifica un algoritmo de método de firma.
OPC_E_DS_MISSING_SIGNATURE_PROPERTIES_ELEMENT
0x80510026
En el búfer newSignatureXml , no se encontró el elemento SignatureProperties .
OPC_E_DS_MISSING_SIGNATURE_PROPERTY_ELEMENT
0x80510027
En el búfer newSignatureXml , no se encontró el elemento secundario SignatureProperty del elemento SignatureProperties .
OPC_E_DS_MISSING_SIGNATURE_TIME_PROPERTY
0x80510029
En el búfer newSignatureXml , el elemento SignatureProperty con el valor del atributo Id de "idSignatureTime" no existe o no se construye correctamente.
OPC_E_DS_MULTIPLE_RELATIONSHIP_TRANSFORMS
0x80510031
En el búfer newSignatureXml , se especifica más de una transformación de relaciones para un elemento Reference , pero solo se permite una transformación de relaciones.
OPC_E_DS_REFERENCE_MISSING_CONTENT_TYPE
0x80510030
El valor del atributo URI de un elemento Reference en el búfer newSignatureXml no incluye el tipo de contenido de la parte a la que se hace referencia.
OPC_E_DS_SIGNATURE_PROPERTY_MISSING_TARGET
0x80510045
En el búfer newSignatureXml , falta el elemento SignatureProperty el atributo Target necesario.
OPC_E_DS_SIGNATURE_REFERENCE_MISSING_URI
0x80510043
Un elemento Reference , que se encuentra en el búfer newSignatureXml , requiere el atributo URI , pero falta el atributo .
OPC_E_DS_UNSIGNED_PACKAGE
0x80510055
El paquete no está firmado; por lo tanto, no se puede reemplazar el marcado de firma.
OPC_E_NO_SUCH_PART
0x80510018
La parte especificada no existe.

Comentarios

Este método no valida la firma derivada del nuevo marcado de firma que se encuentra en el parámetro newSignatureXml .

El autor de la llamada debe confirmar que el nuevo marcado de firma, que reemplaza el marcado de firma existente en la parte de firma especificada, no interrumpirá la firma.

Este método cambia el marcado de firma existente; se conservan los certificados y las relaciones que tienen la parte de firma especificada como origen.

Seguridad para subprocesos

Los objetos de empaquetado no son seguros para subprocesos.

Para más información, consulte la Introducción con la API de empaquetado.

Requisitos

Requisito Value
Cliente mínimo compatible Windows 7 [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Plataforma de destino Windows
Encabezado msopc.h

Consulte también

Interfaces de empaquetado principal

Información general sobre firmas digitales

Introducción con la API de empaquetado

IOpcDigitalSignatureManager

Temas de introducción

Guía de programación de api de empaquetado

Referencia de API de empaquetado

Ejemplos de API de empaquetado

Empaquetado de interfaces de firma digital

Interfaces de empaquetado

Referencia