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.
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.
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 |