estructura de DRT_SECURITY_PROVIDER (drt.h)

La estructura DRT_SECURITY_PROVIDER define la interfaz DRT que debe implementar un proveedor de seguridad.

Sintaxis

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;

Miembros

pvContext

La aplicación especifica este miembro al pasar la estructura de DRT_SECURITY_PROVIDER a la función DrtOpen .

El DRT lo trata como un puntero opaco y lo pasa como primer parámetro a las funciones a las que hace referencia esta estructura. Una aplicación lo usará como puntero al estado del proveedor de seguridad o al objeto que implementa la funcionalidad del proveedor de seguridad.

Attach

Incrementa el recuento de referencias para el proveedor de seguridad con un conjunto de DRT.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

Detach

Disminuye el recuento de referencias para el proveedor de seguridad con un conjunto de DRT.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

RegisterKey

Se llama para registrar una clave con el proveedor de seguridad.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pRegistration

Puntero a la estructura de DRT_REGISTRATION creada por una aplicación y pasada a la función DrtRegisterKey .

pvKeyContext

Puntero a los datos de contexto creados por una aplicación y pasados a la función DrtRegisterKey .

UnregisterKey

Se llama para anular el registro de una clave con el proveedor de seguridad.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

Pkey

Puntero a la clave a la que se registra la carga.

pvKeyContext

Puntero a los datos de contexto creados por la aplicación y pasados a DrtRegisterKey.

ValidateAndUnpackPayload

Se llama cuando se recibe un mensaje de autoridad en la conexión. Es responsable de validar los datos recibidos y para desempaquetar las direcciones de servicio, la marca revocada y el nonce de la carga de direcciones protegidas.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pSecuredAddressPayload

Puntero a la carga recibida en la conexión que contiene las direcciones de servicio, la marca revocada, nonce y cualquier otro dato requerido por el proveedor de seguridad.

pCertChain

Puntero a la cadena de certificados recibida en el mensaje de autoridad.

pClassifier

Puntero al clasificador recibido en el mensaje de autoridad

pNonce

Puntero al nonce que se envió en el mensaje original Inquire o Lookup . Este valor debe compararse con el valor incrustado en la carga de direcciones protegidas para asegurarse de que son los mismos. Este valor se fija en 16 bytes.

pSecuredPayload

Puntero a la carga de datos de la aplicación recibida en el mensaje Autoridad. Después de la validación, los datos originales (después del descifrado, la eliminación de la firma, etc.) se generan como pPayload.

pbProtocolMajor

Puntero a la matriz de bytes que representa la versión principal del protocolo. Esto se empaqueta en cada paquete DRT para identificar la versión del proveedor de seguridad en uso cuando una única instancia de DRT admite varios proveedores de seguridad.

pbProtocolMinor

Puntero a la matriz de bytes que representa la versión secundaria del protocolo. Esto se empaqueta en cada paquete DRT para identificar la versión del proveedor de seguridad en uso cuando una única instancia de DRT admite varios proveedores de seguridad.

Pkey

Puntero a la clave a la que se registra la carga.

pPayload

Puntero a la carga original especificada por la aplicación remota. El proveedor de seguridad asigna pPayload.pb.

ppPublicKey

Puntero a un puntero al número de direcciones de servicio incrustadas en la carga de direcciones protegidas.

ppAddressList

Puntero a un puntero a las direcciones de servicio que se incrustan en la carga de direcciones protegidas. El proveedor de seguridad asigna pAddresses.

pdwFlags

Todas las marcas de DRT definidas actualmente solo para que sean la marca revocada o eliminada que deba desempaquetarse para el procesamiento de la instancia de DRT local.

Nota Actualmente, el único valor permitido es: DRT_PAYLOAD_REVOKED
 

SecureAndPackPayload

Se llama cuando un mensaje de autoridad está a punto de enviarse en la conexión. Es responsable de proteger los datos antes de enviarlos y de empaquetar las direcciones de servicio, marca revocada, nonce y otros datos de la aplicación en la carga de direcciones protegidas.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pvKeyContext

Contiene el contexto pasado a DrtRegisterKey cuando se registró la clave.

bProtocolMajor

Puntero a la matriz de bytes que representa la versión principal del protocolo.

bProtocolMinor

Puntero a la matriz de bytes que representa la versión secundaria del protocolo.

dwFlags

Cualquier marca específica de DRT, definida actualmente solo para ser la marca revocada o eliminada que se debe empaquetar, proteger y enviar a otra instancia para su procesamiento.

Nota Actualmente, el único valor permitido es: DRT_PAYLOAD_REVOKED
 

Pkey

Puntero a la clave a la que se registra esta carga.

pPayload

Puntero a la carga especificada por la aplicación al llamar a DrtRegisterKey.

pAddressList

Puntero a las direcciones de servicio que se colocan en la carga de direcciones protegidas.

pNonce

Puntero al nonce que se envió en el mensaje original Inquire o Lookup . Este valor se fija en 16 bytes.

pSecuredAddressPayload

Puntero a la carga que se va a enviar en la conexión que contiene las direcciones de servicio, la marca revocada, nonce y otros datos requeridos por el proveedor de seguridad. El proveedor de seguridad asigna pSecuredAddressPayload.pb.

pClassifier

Puntero al clasificador que se va a enviar en el mensaje autoridad. El proveedor de seguridad asigna pClassifier.pb.

pSecuredPayload

Puntero a la carga de datos de la aplicación recibida en el mensaje Autoridad. Después de la validación, los datos originales (después del descifrado, la eliminación de la firma, etc.) se generan como pPayload. El proveedor de seguridad asigna pSecuredPayload.pb.

pCertChain

Puntero a la cadena de certificados que se va a enviar en el mensaje autoridad. El proveedor de seguridad asigna pCertChain.pb.

FreeData

Se llama para liberar recursos asignados previamente para una función del proveedor de seguridad.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pv

Especifica qué datos se van a liberar.

EncryptData

Se llama cuando el DRT envía un mensaje que contiene datos que se deben cifrar. Esta función solo se llama cuando el DRT está funcionando en el modo de seguridad DRT_SECURE_CONFIDENTIALPAYLOAD definido por DRT_SECURITY_MODE.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pRemoteCredential

Contiene la credencial del mismo nivel que recibirá el mensaje protegido.

dwBuffers

Contiene la longitud de pDataBuffers y pEncryptedBuffers.

pDataBuffers

Contiene el búfer sin cifrar.

pEncryptedBuffers

Contiene el contenido cifrado tras la finalización de la función.

pKeyToken

Contiene la clave de sesión cifrada que el destinatario del mensaje puede descifrar y que se puede usar para descifrar los campos protegidos.

DecryptData

Se llama cuando el DRT recibe un mensaje que contiene datos cifrados. Esta función solo se llama cuando el DRT está funcionando en el modo de seguridad DRT_SECURE_CONFIDENTIALPAYLOAD definido por DRT_SECURITY_MODE.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pKeyToken

Contiene la clave de sesión cifrada que el destinatario del mensaje puede descifrar y que se puede usar para descifrar los campos protegidos.

pvKeyContext

Contiene el contexto pasado a DrtRegisterKey cuando se registró la clave.

dwBuffers

Contiene el tamaño del búfer de pData .

pData

Contiene los datos descifrados tras la finalización de la función.

GetSerializedCredential

Se llama cuando el DRT debe proporcionar una credencial usada para autorizar el nodo local. Solo se llama a esta función cuando el DRT está funcionando en el DRT_SECURE_MEMBERSHIP y DRT_SECURE_CONFIDENTIALPAYLOAD modos de seguridad definidos por DRT_SECURITY_MODE.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pSelfCredential

Contiene la credencial serializada tras la finalización de la función.

ValidateRemoteCredential

Se llama cuando el DRT debe validar una credencial proporcionada por un nodo del mismo nivel.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

pRemoteCredential

Contiene la credencial serializada proporcionada por el nodo del mismo nivel.

SignData

Se llama cuando el DRT debe firmar un blob de datos para su inclusión en un mensaje de protocolo DRT. Solo se llama a esta función cuando el DRT está funcionando en el DRT_SECURE_MEMBERSHIP y DRT_SECURE_CONFIDENTIALPAYLOAD modos de seguridad definidos por DRT_SECURITY_MODE.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

dwBuffers

Contiene el tamaño del búfer pDataBuffers .

pDataBuffers

Contiene los datos que se van a firmar.

pKeyIdentifier

Tras la finalización de esta función, contiene un índice que se puede usar para seleccionar entre varias credenciales para su uso en el cálculo de la firma.

pSignature

Tras la finalización de esta función, contiene los datos de firma.

VerifyData

Se llama cuando el DRT debe comprobar una firma calculada sobre un bloque de datos incluido en un mensaje DRT. Solo se llama a esta función cuando el DRT está funcionando en el DRT_SECURE_MEMBERSHIP y DRT_SECURE_CONFIDENTIALPAYLOAD modos de seguridad definidos por DRT_SECURITY_MODE.

pvContext

Puntero al valor mantenido por el miembro pvContext de DRT_SECURITY_PROVIDER.

dwBuffers

Contiene el tamaño del búfer pDataBuffers .

pDataBuffers

Contiene los datos sobre los que se calculó la firma.

pRemoteCredentials

Contiene las credenciales del nodo remoto que se usa para calcular la firma.

pKeyIdentifier

Contiene un índice que se puede usar para seleccionar entre varias credenciales proporcionadas en pRemoteCredentials.

pSignature

Contiene la firma que se va a comprobar.

Requisitos

   
Cliente mínimo compatible Windows 7 Professional [solo aplicaciones de escritorio]
Servidor mínimo compatible Windows Server 2008 R2 [solo aplicaciones de escritorio]
Encabezado drt.h

Consulte también

DRT_SECURITY_MODE

DrtOpen

DrtRegisterKey