Condividi tramite


struttura DRT_SECURITY_PROVIDER (drt.h)

La struttura DRT_SECURITY_PROVIDER definisce l'interfaccia DRT che deve essere implementata da un provider di sicurezza.

Sintassi

typedef struct drt_security_provider_tag {
  PVOID    pvContext;
  HRESULT( )(const PVOID pvContext) *Attach;
  VOID( )(const PVOID pvContext)    *Detach;
  HRESULT()(const PVOID pvContext, const DRT_REGISTRATION *pRegistration,PVOID pvKeyContext) * RegisterKey;
  HRESULT()(const PVOID pvContext, const DRT_DATA *pKey,PVOID pvKeyContext) * UnregisterKey;
  HRESULT( pvContext,DRT_DATA *pSecuredAddressPayload,DRT_DATA *pCertChain,DRT_DATA *pClassifier,DRT_DATA *pNonce,DRT_DATA *pSecuredPayload,BYTE *pbProtocolMajor,BYTE *pbProtocolMinor,DRT_DATA *pKey,DRT_DATA *pPayload,CERT_PUBLIC_KEY_INFO **ppPublicKey,SOCKET_ADDRESS_LIST **ppAddressList,DWORD *pdwFlags) * )(const PVOIDValidateAndUnpackPayload;
  HRESULT( PVOID pvContext,PVOID pvKeyContext,BYTE bProtocolMajor,BYTE bProtocolMinor,DWORD dwFlags, const DRT_DATA *pKey, const DRT_DATA *pPayload, const SOCKET_ADDRESS_LIST *pAddressList, const DRT_DATA *pNonce,DRT_DATA *pSecuredAddressPayload,DRT_DATA *pClassifier,DRT_DATA *pSecuredPayload,DRT_DATA *pCertChain) * )(constSecureAndPackPayload;
  void( )(const PVOID pvContext,PVOID pv)    *FreeData;
  HRESULT(onst PVOID pvContext, const DRT_DATA *pRemoteCredential,DWORD dwBuffers,DRT_DATA *pDataBuffers,DRT_DATA *pEncryptedBuffers,DRT_DATA *pKeyToken) * )(cEncryptData;
  HRESULT((const PVOID pvContext,DRT_DATA *pKeyToken, const PVOID pvKeyContext,DWORD dwBuffers,DRT_DATA *pData) * )DecryptData;
  HRESULT()(const PVOID pvContext,DRT_DATA *pSelfCredential) * GetSerializedCredential;
  HRESULT()(const PVOID pvContext,DRT_DATA *pRemoteCredential) * ValidateRemoteCredential;
  HRESULT(const PVOID pvContext,DWORD dwBuffers,DRT_DATA *pDataBuffers,DRT_DATA *pKeyIdentifier,DRT_DATA *pSignature) * )(SignData;
  HRESULT(onst PVOID pvContext,DWORD dwBuffers,DRT_DATA *pDataBuffers,DRT_DATA *pRemoteCredentials,DRT_DATA *pKeyIdentifier,DRT_DATA *pSignature) * )(cVerifyData;
} DRT_SECURITY_PROVIDER, *PDRT_SECURITY_PROVIDER;

Members

pvContext

Questo membro viene specificato dall'applicazione quando si passa la struttura DRT_SECURITY_PROVIDER alla funzione DrtOpen .

DRT lo considera come puntatore opaco e lo passa come primo parametro alle funzioni a cui fa riferimento questa struttura. Un'applicazione lo userà come puntatore allo stato del provider di sicurezza o all'oggetto che implementa la funzionalità del provider di sicurezza.

Attach

Incrementa il numero di riferimenti per il provider di sicurezza con un set di drT.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

Detach

Decrementa il numero di riferimenti per il provider di sicurezza con un set di drt.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

RegisterKey

Chiamato per registrare una chiave con il provider di sicurezza.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pRegistration

Puntatore alla struttura DRT_REGISTRATION creata da un'applicazione e passata alla funzione DrtRegisterKey .

pvKeyContext

Puntatore ai dati di contesto creati da un'applicazione e passati alla funzione DrtRegisterKey .

UnregisterKey

Chiamato per annullare la registrazione di una chiave con il provider di sicurezza.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pKey

Puntatore alla chiave a cui è registrato il payload.

pvKeyContext

Puntatore ai dati di contesto creati dall'applicazione e passati a DrtRegisterKey.

ValidateAndUnpackPayload

Chiamato quando viene ricevuto un messaggio di autorità in transito. È responsabile della convalida dei dati ricevuti e della decompressione degli indirizzi del servizio, del flag revocato e del nonce dal payload dell'indirizzo protetto.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pSecuredAddressPayload

Puntatore al payload ricevuto in rete che contiene gli indirizzi del servizio, il flag revocato, il nonce e qualsiasi altro dato richiesto dal provider di sicurezza.

pCertChain

Puntatore alla catena di certificati ricevuta nel messaggio di autorità.

pClassifier

Puntatore al classificatore ricevuto nel messaggio dell'autorità

pNonce

Puntatore al nonce inviato nel messaggio originale di ricerca o di ricerca. Questo valore deve essere confrontato con il valore incorporato nel payload dell'indirizzo protetto per assicurarsi che siano uguali. Questo valore è fisso a 16 byte.

pSecuredPayload

Puntatore al payload dei dati dell'applicazione ricevuto nel messaggio autorità. Dopo la convalida, i dati originali (dopo la decrittografia, la rimozione della firma e così via) vengono restituiti come pPayload.

pbProtocolMajor

Puntatore alla matrice di byte che rappresenta la versione principale del protocollo. Questo pacchetto viene compresso in ogni pacchetto DRT per identificare la versione del provider di sicurezza in uso quando una singola istanza DRT supporta più provider di sicurezza.

pbProtocolMinor

Puntatore alla matrice di byte che rappresenta la versione secondaria del protocollo. Questo pacchetto viene compresso in ogni pacchetto DRT per identificare la versione del provider di sicurezza in uso quando una singola istanza DRT supporta più provider di sicurezza.

pKey

Puntatore alla chiave a cui è registrato il payload.

pPayload

Puntatore al payload originale specificato dall'applicazione remota. pPayload.pb viene allocato dal provider di sicurezza.

ppPublicKey

Puntatore a un puntatore al numero di indirizzi del servizio incorporati nel payload dell'indirizzo protetto.

ppAddressList

Puntatore a un puntatore agli indirizzi del servizio incorporati nel payload dell'indirizzo protetto. pAddresses viene allocato dal provider di sicurezza.

pdwFlags

Tutti i flag DRT attualmente definiti solo come flag revocati o eliminati che devono essere decompressi per l'elaborazione dell'istanza DRT locale.

Nota Attualmente l'unico valore consentito è: DRT_PAYLOAD_REVOKED
 

SecureAndPackPayload

Chiamato quando un messaggio di autorità sta per essere inviato in transito. È responsabile della protezione dei dati prima dell'invio e della compressione degli indirizzi del servizio, del flag revocato, del nonce e di altri dati dell'applicazione nel payload dell'indirizzo protetto.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pvKeyContext

Contiene il contesto passato in DrtRegisterKey quando la chiave è stata registrata.

bProtocolMajor

Puntatore alla matrice di byte che rappresenta la versione principale del protocollo.

bProtocolMinor

Puntatore alla matrice di byte che rappresenta la versione secondaria del protocollo.

dwFlags

Tutti i flag specifici di DRT, attualmente definiti solo come flag revocato o eliminato che devono essere compressi, protetti e inviati a un'altra istanza per l'elaborazione.

Nota Attualmente l'unico valore consentito è: DRT_PAYLOAD_REVOKED
 

pKey

Puntatore alla chiave a cui è registrato questo payload.

pPayload

Puntatore al payload specificato dall'applicazione quando si chiama DrtRegisterKey.

pAddressList

Puntatore agli indirizzi del servizio inseriti nel payload dell'indirizzo protetto.

pNonce

Puntatore al nonce inviato nel messaggio originale di ricerca o di ricerca. Questo valore è fisso a 16 byte.

pSecuredAddressPayload

Puntatore al payload da inviare in rete che contiene gli indirizzi del servizio, il flag revocato, il nonce e altri dati richiesti dal provider di sicurezza. pSecuredAddressPayload.pb viene allocato dal provider di sicurezza.

pClassifier

Puntatore al classificatore da inviare nel messaggio autorità. pClassifier.pb viene allocato dal provider di sicurezza.

pSecuredPayload

Puntatore al payload dei dati dell'applicazione ricevuto nel messaggio autorità. Dopo la convalida, i dati originali (dopo la decrittografia, la rimozione della firma e così via) vengono restituiti come pPayload. pSecuredPayload.pb viene allocato dal provider di sicurezza.

pCertChain

Puntatore alla catena di certificati da inviare nel messaggio autorità. pCertChain.pb viene allocato dal provider di sicurezza.

FreeData

Chiamato per rilasciare le risorse allocate in precedenza per una funzione del provider di sicurezza.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pv

Specifica i dati da liberare.

EncryptData

Chiamato quando DRT invia un messaggio contenente dati che devono essere crittografati. Questa funzione viene chiamata solo quando DRT funziona nella modalità di sicurezza DRT_SECURE_CONFIDENTIALPAYLOAD definita da DRT_SECURITY_MODE.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pRemoteCredential

Contiene le credenziali del peer che riceverà il messaggio protetto.

dwBuffers

Contiene la lunghezza di pDataBuffers e pEncryptedBuffers.

pDataBuffers

Contiene il buffer non crittografato.

pEncryptedBuffers

Contiene il contenuto crittografato al termine della funzione.

pKeyToken

Contiene la chiave di sessione crittografata che può essere decrittografata dal destinatario del messaggio e usata per decrittografare i campi protetti.

DecryptData

Chiamato quando DRT riceve un messaggio contenente dati crittografati. Questa funzione viene chiamata solo quando DRT funziona nella modalità di sicurezza DRT_SECURE_CONFIDENTIALPAYLOAD definita da DRT_SECURITY_MODE.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pKeyToken

Contiene la chiave di sessione crittografata che può essere decrittografata dal destinatario del messaggio e utilizzata per decrittografare i campi protetti.

pvKeyContext

Contiene il contesto passato in DrtRegisterKey quando la chiave è stata registrata.

dwBuffers

Contiene le dimensioni del buffer pData .

pData

Contiene i dati decrittografati al completamento della funzione.

GetSerializedCredential

Chiamato quando DRT deve fornire una credenziale usata per autorizzare il nodo locale. Questa funzione viene chiamata solo quando DRT funziona nelle modalità di sicurezza DRT_SECURE_MEMBERSHIP e DRT_SECURE_CONFIDENTIALPAYLOAD definite da DRT_SECURITY_MODE.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pSelfCredential

Contiene le credenziali serializzate al completamento della funzione.

ValidateRemoteCredential

Chiamato quando DRT deve convalidare una credenziale fornita da un nodo peer.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

pRemoteCredential

Contiene le credenziali serializzate fornite dal nodo peer.

SignData

Chiamato quando DRT deve firmare un BLOB di dati per l'inclusione in un messaggio del protocollo DRT. Questa funzione viene chiamata solo quando DRT funziona nelle modalità di sicurezza DRT_SECURE_MEMBERSHIP e DRT_SECURE_CONFIDENTIALPAYLOAD definite da DRT_SECURITY_MODE.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

dwBuffers

Contiene le dimensioni del buffer pDataBuffers .

pDataBuffers

Contiene i dati da firmare.

pKeyIdentifier

Al termine di questa funzione, contiene un indice che può essere usato per selezionare tra più credenziali da usare per calcolare la firma.

pSignature

Al termine di questa funzione, contiene i dati della firma.

VerifyData

Chiamato quando DRT deve verificare una firma calcolata su un blocco di dati inclusi in un messaggio DRT. Questa funzione viene chiamata solo quando DRT funziona nelle modalità di sicurezza DRT_SECURE_MEMBERSHIP e DRT_SECURE_CONFIDENTIALPAYLOAD definite da DRT_SECURITY_MODE.

pvContext

Puntatore al valore mantenuto dal membro pvContext di DRT_SECURITY_PROVIDER.

dwBuffers

Contiene le dimensioni del buffer pDataBuffers .

pDataBuffers

Contiene i dati su cui è stata calcolata la firma.

pRemoteCredentials

Contiene le credenziali del nodo remoto utilizzato per calcolare la firma.

pKeyIdentifier

Contiene un indice che può essere usato per selezionare tra più credenziali fornite in pRemoteCredentials.

pSignature

Contiene la firma da verificare.

Requisiti

   
Client minimo supportato Windows 7 Professional [solo app desktop]
Server minimo supportato Windows Server 2008 R2 [solo app desktop]
Intestazione drt.h

Vedi anche

DRT_SECURITY_MODE

DrtOpen

DrtRegisterKey