Condividi tramite


Metodo IXpsSignatureManager::Sign (xpsdigitalsignature.h)

Firma il contenuto di un pacchetto XPS come specificato dalle opzioni di firma e restituisce la firma digitale risultante.

Sintassi

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

Parametri

[in] signOptions

Puntatore all'interfaccia IXpsSigningOptions che contiene le opzioni di firma.

Nota  

Le proprietà SignatureMethod e DigestMethod dell'interfaccia IXpsSigningOptions devono essere inizializzate prima che il puntatore a tale interfaccia possa essere utilizzato nel parametro signOptions .

 

[in] x509Certificate

Puntatore alla struttura CERT_CONTEXT che contiene il certificato X.509 da usare per la firma.

[out, retval] signature

Puntatore all'interfaccia IXpsSignature che contiene la nuova firma digitale.

In caso di esito positivo, questo metodo crea la parte della firma, la aggiunge al pacchetto e nella firma restituisce un puntatore all'interfaccia della parte della firma .

Valore restituito

Il metodo restituisce un valore HRESULT. I valori possibili includono, ma non solo, quelli nella tabella che segue. Per i valori restituiti non elencati in questa tabella, vedere Errori dell'API firma digitale XPS e errori del documento XPS.

Codice restituito Descrizione
S_OK
Il metodo è riuscito.
XPS_E_MARKUP_COMPATIBILITY_ELEMENTS
Il valore XPS_SIGN_FLAGS specificato che non sono previsti elementi di compatibilità di markup; Sono stati tuttavia trovati elementi di compatibilità di markup.
XPS_E_NO_CUSTOM_OBJECTS
signOptions non punta a un'implementazione dell'interfaccia riconosciuta. L'implementazione personalizzata delle interfacce API documento XPS non è supportata.
XPS_E_PACKAGE_NOT_OPENED
Un pacchetto XPS non è ancora stato aperto nel gestore firme.

Commenti

L'aggiunta di una nuova firma non sovrascrive il file originale o il flusso letto chiamando il metodo LoadPackageFile o LoadPackageStream . La firma verrà aggiunta alla copia in memoria del pacchetto XPS fino al salvataggio del pacchetto (chiamando il metodo SavePackageToFile o SavePackageToStream ).

Se la nuova firma include parti che contengono elementi di compatibilità di markup, il valore predefinito è che questo metodo non riesca con un errore di XPS_E_MARKUP_COMPATIBILITY_ELEMENTS. Per eseguire l'override di questo comportamento, chiamare IXpsSigningOptions::SetFlags; verrà impostato il flag XPS_SIGN_FLAGS_IGNORE_MARKUP_COMPATIBILITY nell'interfaccia IXpsSigningOptions a cui fa riferimento il parametro signOptions .

Se questo metodo restituisce un valore HRESULT non incluso nell'elenco dei valori restituiti, il gestore firme deve essere rilasciato e ricreato.

Questo metodo avrà esito positivo anche se la nuova firma interrompe le firme esistenti.

Requisiti

Requisito Valore
Client minimo supportato Windows 7 [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Piattaforma di destinazione Windows
Intestazione xpsdigitalsignature.h

Vedi anche

CERT_CONTEXT

IXpsSignature

IXpsSignatureManager

IXpsSigningOptions

XML Paper Specification

Errori dell'API di firma digitale XPS

Errori del documento XPS