Share via


estrutura DRT_SECURITY_PROVIDER (drt.h)

A estrutura DRT_SECURITY_PROVIDER define a interface DRT que deve ser implementada por um provedor de segurança.

Sintaxe

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;

Membros

pvContext

Esse membro é especificado pelo aplicativo ao passar a estrutura DRT_SECURITY_PROVIDER para a função DrtOpen .

O DRT o trata como um ponteiro opaco e o passa como o primeiro parâmetro para as funções referenciadas por essa estrutura. Um aplicativo usará isso como um ponteiro para o estado do provedor de segurança ou para o objeto que implementa a funcionalidade do provedor de segurança.

Attach

Incrementa a contagem de referências para o Provedor de Segurança com um conjunto de DRTs.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

Detach

Diminui a contagem de referências para o Provedor de Segurança com um conjunto de DRTs.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

RegisterKey

Chamado para registrar uma chave no Provedor de Segurança.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pRegistration

Ponteiro para a estrutura DRT_REGISTRATION criada por um aplicativo e passada para a função DrtRegisterKey .

pvKeyContext

Ponteiro para os dados de contexto criados por um aplicativo e passados para a função DrtRegisterKey .

UnregisterKey

Chamado para desregistrar uma chave com o Provedor de Segurança.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

Pkey

Ponteiro para a chave para a qual o conteúdo é registrado.

pvKeyContext

Ponteiro para os dados de contexto criados pelo aplicativo e passados para DrtRegisterKey.

ValidateAndUnpackPayload

Chamado quando uma mensagem de autoridade é recebida na transmissão. Ele é responsável por validar os dados recebidos e por desempacotar os endereços de serviço, o sinalizador revogado e a nonce da carga de endereço protegido.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pSecuredAddressPayload

Ponteiro para a carga recebida na transmissão que contém os endereços de serviço, sinalizador revogado, nonce e quaisquer outros dados exigidos pelo provedor de segurança.

pCertChain

Ponteiro para a cadeia de certificados recebida na mensagem de autoridade.

pClassifier

Ponteiro para o classificador recebido na mensagem de autoridade

pNonce

Ponteiro para o nonce que foi enviado na mensagem de consulta ou pesquisa original. Esse valor deve ser comparado com o valor inserido na Carga de Endereço Protegido para garantir que eles sejam iguais. Esse valor é fixo em 16 bytes.

pSecuredPayload

Ponteiro para a carga de dados do aplicativo recebida na mensagem Autoridade. Após a validação, os dados originais (após a descriptografia, remoção da assinatura e assim por diante.) são gerados como pPayload.

pbProtocolMajor

Ponteiro para a matriz de bytes que representa a versão principal do protocolo. Isso é empacotado em todos os pacotes DRT para identificar a versão do provedor de segurança em uso quando uma única instância de DRT dá suporte a vários Provedores de Segurança.

pbProtocolMinor

Ponteiro para a matriz de bytes que representa a versão secundária do protocolo. Isso é empacotado em todos os pacotes DRT para identificar a versão do provedor de segurança em uso quando uma única instância de DRT dá suporte a vários Provedores de Segurança.

Pkey

Ponteiro para a chave para a qual o conteúdo é registrado.

pPayload

Ponteiro para a carga original especificada pelo aplicativo remoto. pPayload.pb é alocado pelo provedor de segurança.

ppPublicKey

Ponteiro para um ponteiro para o número de endereços de serviço inseridos no conteúdo do endereço protegido.

ppAddressList

Ponteiro para um ponteiro para os endereços de serviço inseridos na carga de endereço protegido. pAddresses é alocado pelo provedor de segurança.

Pdwflags

Todos os sinalizadores DRT definidos atualmente apenas para serem o sinalizador revogado ou excluído que precisa ser descompactado para o processamento da instância drt local.

Nota Atualmente, o único valor permitido é: DRT_PAYLOAD_REVOKED
 

SecureAndPackPayload

Chamado quando uma mensagem de Autoridade está prestes a ser enviada na transmissão. Ele é responsável por proteger os dados antes de serem enviados e por empacotar os endereços de serviço, o sinalizador revogado, a nonce e outros dados do aplicativo na carga de endereço protegido.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pvKeyContext

Contém o contexto passado para DrtRegisterKey quando a chave foi registrada.

bProtocolMajor

Ponteiro para a matriz de bytes que representa a versão principal do protocolo.

bProtocolMinor

Ponteiro para a matriz de bytes que representa a versão secundária do protocolo.

dwFlags

Todos os sinalizadores específicos do DRT, atualmente definidos apenas para serem o sinalizador revogado ou excluído que precisa ser empacotado, protegido e enviado para outra instância para processamento.

Nota Atualmente, o único valor permitido é: DRT_PAYLOAD_REVOKED
 

Pkey

Ponteiro para a chave para a qual essa carga é registrada.

pPayload

Ponteiro para a carga especificada pelo aplicativo ao chamar DrtRegisterKey.

pAddressList

Ponteiro para os endereços de serviço que são colocados na Carga de Endereço Protegido.

pNonce

Ponteiro para o nonce que foi enviado na mensagem de consulta ou pesquisa original. Esse valor é fixo em 16 bytes.

pSecuredAddressPayload

Ponteiro para a carga a ser enviada na transmissão que contém os endereços de serviço, o sinalizador revogado, o nonce e outros dados exigidos pelo provedor de segurança. pSecuredAddressPayload.pb é alocado pelo provedor de segurança.

pClassifier

Ponteiro para o classificador a ser enviado na mensagem Autoridade. pClassifier.pb é alocado pelo provedor de segurança.

pSecuredPayload

Ponteiro para a carga de dados do aplicativo recebida na mensagem Autoridade. Após a validação, os dados originais (após a descriptografia, remoção da assinatura e assim por diante.) são gerados como pPayload. pSecuredPayload.pb é alocado pelo provedor de segurança.

pCertChain

Ponteiro para a cadeia de certificados a ser enviada na mensagem Autoridade. pCertChain.pb é alocado pelo provedor de segurança.

FreeData

Chamado para liberar recursos alocados anteriormente para uma função de provedor de segurança.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pv

Especifica quais dados liberar.

EncryptData

Chamado quando o DRT envia uma mensagem contendo dados que devem ser criptografados. Essa função só é chamada quando o DRT está operando no modo de segurança DRT_SECURE_CONFIDENTIALPAYLOAD definido por DRT_SECURITY_MODE.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pRemoteCredential

Contém a credencial do par que receberá a mensagem protegida.

dwBuffers

Contém o comprimento do pDataBuffers e pEncryptedBuffers.

pDataBuffers

Contém o buffer não criptografado.

pEncryptedBuffers

Contém o conteúdo criptografado após a conclusão da função.

pKeyToken

Contém a chave de sessão criptografada que pode ser descriptografada pelo destinatário da mensagem e usada para descriptografar os campos protegidos.

DecryptData

Chamado quando o DRT recebe uma mensagem que contém dados criptografados. Essa função só é chamada quando o DRT está operando no modo de segurança DRT_SECURE_CONFIDENTIALPAYLOAD definido por DRT_SECURITY_MODE.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pKeyToken

Contém a chave de sessão criptografada que pode ser descriptografada pelo destinatário da mensagem e usada para descriptografar os campos protegidos.

pvKeyContext

Contém o contexto passado para DrtRegisterKey quando a chave foi registrada.

dwBuffers

Contém o tamanho do buffer pData .

pData

Contém os dados descriptografados após a conclusão da função.

GetSerializedCredential

Chamado quando o DRT deve fornecer uma credencial usada para autorizar o nó local. Essa função só é chamada quando o DRT está operando nos modos de segurança DRT_SECURE_MEMBERSHIP e DRT_SECURE_CONFIDENTIALPAYLOAD definidos por DRT_SECURITY_MODE.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pSelfCredential

Contém a credencial serializada após a conclusão da função.

ValidateRemoteCredential

Chamado quando o DRT deve validar uma credencial fornecida por um nó par.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

pRemoteCredential

Contém a credencial serializada fornecida pelo nó par.

SignData

Chamado quando o DRT deve assinar um blob de dados para inclusão em uma mensagem de protocolo DRT. Essa função só é chamada quando o DRT está operando nos modos de segurança DRT_SECURE_MEMBERSHIP e DRT_SECURE_CONFIDENTIALPAYLOAD definidos por DRT_SECURITY_MODE.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

dwBuffers

Contém o tamanho do buffer pDataBuffers .

pDataBuffers

Contém os dados a serem assinados.

pKeyIdentifier

Após a conclusão dessa função, contém um índice que pode ser usado para selecionar entre várias credenciais para uso no cálculo da assinatura.

pSignature

Após a conclusão dessa função, contém os dados de assinatura.

VerifyData

Chamado quando o DRT deve verificar uma assinatura calculada em um bloco de dados incluído em uma mensagem DRT. Essa função só é chamada quando o DRT está operando nos modos de segurança DRT_SECURE_MEMBERSHIP e DRT_SECURE_CONFIDENTIALPAYLOAD definidos por DRT_SECURITY_MODE.

pvContext

Ponteiro para o valor mantido pelo membro pvContext de DRT_SECURITY_PROVIDER.

dwBuffers

Contém o tamanho do buffer pDataBuffers .

pDataBuffers

Contém os dados sobre os quais a assinatura foi calculada.

pRemoteCredentials

Contém as credenciais do nó remoto usado para calcular a assinatura.

pKeyIdentifier

Contém um índice que pode ser usado para selecionar entre várias credenciais fornecidas em pRemoteCredentials.

pSignature

Contém a assinatura a ser verificada.

Requisitos

   
Cliente mínimo com suporte Windows 7 Professional [somente aplicativos da área de trabalho]
Servidor mínimo com suporte Windows Server 2008 R2 [somente aplicativos da área de trabalho]
Cabeçalho drt.h

Confira também

DRT_SECURITY_MODE

DrtOpen

DrtRegisterKey