Metodo IOpcDigitalSignatureManager::Sign (msopc.h)
Firma il pacchetto generando una firma usando il certificato specificato e il puntatore dell'interfaccia IOpcSigningOptions . La firma risultante è rappresentata da un puntatore dell'interfaccia IOpcDigitalSignature .
Sintassi
HRESULT Sign(
[in] const CERT_CONTEXT *certificate,
[in] IOpcSigningOptions *signingOptions,
[out, retval] IOpcDigitalSignature **digitalSignature
);
Parametri
[in] certificate
Puntatore a una struttura CERT_CONTEXT contenente il certificato.
[in] signingOptions
Puntatore dell'interfaccia IOpcSigningOptions usato per generare la firma.
[out, retval] digitalSignature
Nuovo puntatore dell'interfaccia IOpcDigitalSignature che rappresenta la firma.
Valore restituito
Il metodo restituisce un HRESULT. I valori possibili includono, ma non sono limitati a, quelli indicati nella tabella seguente.
Codice/valore restituito | Descrizione |
---|---|
|
Il metodo è riuscito. |
|
Almeno uno dei parametri certificate, firmaOptions e digitalSignature è NULL. |
|
Il metodo digest predefinito non è stato impostato; per impostarlo, chiamare IOpcSigningOptions::SetDefaultDigestMethod. |
|
Impossibile ottenere il valore del digest di un componente del pacchetto o un elemento nel markup della firma a cui è stato fatto riferimento per la firma. |
|
Il formato ora della firma non è un valore di enumerazione valido OPC_SIGNATURE_TIME_FORMAT . |
|
Un'opzione di firma della relazione indicata non è un valore di enumerazione valido OPC_RELATIONSHIPS_SIGNING_OPTION . |
|
Una firma nel pacchetto non è corretta. Impossibile ottenere il valore della firma. |
|
Il metodo di firma non è stato impostato. Chiamare IOpcSigningOptions::SetSignatureMethod per impostare il metodo di firma. |
|
La parte specificata non esiste. |
|
Codice di errore HRESULT da un'API di crittografia . |
|
Codice di errore HRESULT da un'API di Servizi Web Windows . |
Commenti
Questo metodo usa oggetti Packaging per apportare modifiche a un pacchetto. Le modifiche risultanti non vengono salvate finché il pacchetto stesso non viene salvato.
Prima di chiamare questo metodo per generare una firma, chiamare i metodi IOpcSigningOptions::SetDefaultDigestMethod e IOpcSigningOptions::SetSignatureMethod.
Per creare un puntatore dell'interfaccia IOpcSigningOptions , richiesto da questo metodo, chiamare il metodo CreateSigningOptions .
- Parte Origine firma digitale
- Relazione del pacchetto del tipo di relazione di origine della firma digitale
- Una parte di firma che contiene il markup della firma
- Una o più parti che contengono un certificato
- Una relazione che punta a una parte di firma e che ha la parte Origine firma digitale come origine
- Una o più relazioni che puntano a una parte di firma che contiene un certificato e che ha un'altra parte di firma come origine
Se Sign ha esito negativo, una delle parti e delle relazioni precedenti può essere rappresentata, nel pacchetto, dagli oggetti Packaging. Se il metodo restituisce il codice di errore OPC_E_DS_SIGNATURE_METHOD_NOT_SET o OPC_E_DS_DEFAULT_DIGEST_METHOD_NOT_SET , il pacchetto non è stato modificato.
Se Sign ha esito positivo, i valori del digest vengono calcolati per le entità firmate e la firma generata viene serializzata come markup di firma. Le entità firmate possibili includono l'elemento Signature , i riferimenti, le parti, le relazioni e gli elementi Object specifici del pacchetto e specifici del pacchetto.
Errori introdotti in una firma del pacchetto quando il chiamante usa l'interfaccia IOpcSigningOptions per impostare le informazioni sulla firma potrebbe non essere esposto finché Sign non viene chiamato.
Thread safety
Gli oggetti di creazione dei pacchetti non sono thread-safe.
Per altre informazioni, vedere l'Introduzione con l'API Creazione pacchetti.
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 | msopc.h |
Vedi anche
Interfacce di creazione di pacchetti principali
Panoramica delle firme digitali
Introduzione con l'API Creazione pacchetti
Cenni preliminari
Guida alla programmazione dell'API per la creazione di pacchetti
Informazioni di riferimento sulle API per la creazione di pacchetti
Esempi di API di creazione di pacchetti
Creazione di interfacce di firma digitale per la creazione di pacchetti
Interfacce di creazione pacchetti
Riferimento