Compartir a través de


Método IXpsSignatureManager::Sign (xpsdigitalsignature.h)

Firma el contenido de un paquete XPS según lo especificado por las opciones de firma y devuelve la firma digital resultante.

Sintaxis

HRESULT Sign(
  [in]          IXpsSigningOptions *signOptions,
  [in]          const CERT_CONTEXT *x509Certificate,
  [out, retval] IXpsSignature      **signature
);

Parámetros

[in] signOptions

Puntero a la interfaz IXpsSigningOptions que contiene las opciones de firma.

Nota  

Las propiedades SignatureMethod y DigestMethod de la interfaz IXpsSigningOptions deben inicializarse antes de que el puntero a esa interfaz se pueda usar en el parámetro signOptions .

 

[in] x509Certificate

Puntero a la estructura de CERT_CONTEXT que contiene el certificado X.509 que se va a usar para la firma.

[out, retval] signature

Puntero a la interfaz IXpsSignature que contiene la nueva firma digital.

Si se ejecuta correctamente, este método crea la parte de firma, la agrega al paquete y, en la firma , devuelve un puntero a la interfaz de esa parte de firma.

Valor devuelto

El método devuelve un valor HRESULT. Entre los valores posibles se incluyen, entre otros, los de la tabla siguiente. Para obtener los valores devueltos que no aparecen en esta tabla, vea XpS Digital Signature API Errors and XPS Document Errors (Errores de documentos XPS y XPS).

Código devuelto Descripción
S_OK
El método se ha llevado a cabo de forma correcta.
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
El valor XPS_SIGN_FLAGS especificó que no se esperaba ningún elemento de compatibilidad de marcado; sin embargo, se encontraron elementos de compatibilidad de marcado.
XPS_E_NO_CUSTOM_OBJECTS
signOptions no apunta a una implementación de interfaz reconocida. No se admite la implementación personalizada de interfaces de LA API de documentos XPS.
XPS_E_PACKAGE_NOT_OPENED
Todavía no se ha abierto un paquete XPS en el administrador de firmas.

Comentarios

Al agregar una nueva firma, no se sobrescribe el archivo o secuencia original que se leyó llamando al método LoadPackageFile o LoadPackageStream . La firma se agregará a la copia en memoria del paquete XPS hasta que se guarde el paquete (llamando al método SavePackageToFile o SavePackageToStream ).

Si la nueva firma incluye partes que contienen elementos de compatibilidad de marcado, el valor predeterminado es que este método produzca un error de XPS_E_MARKUP_COMPATIBILITY_ELEMENTS. Para invalidar este comportamiento, llame a IXpsSigningOptions::SetFlags; esto establecerá la marca XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY en la interfaz IXpsSigningOptions a la que hace referencia el parámetro signOptions .

Si este método devuelve un valor HRESULT que no está en la lista de sus valores devueltos, se debe liberar y volver a crear el administrador de firmas.

Este método se realizará correctamente incluso si la nueva firma interrumpe las firmas existentes.

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 xpsdigitalsignature.h

Consulte también

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

XML Paper Specification

Errores de LA API de firma digital de XPS

Errores del documento XPS