PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET función de devolución de llamada (wincrypt.h)
La función de devolución de llamada PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET recupera un objeto . Debe implementar esta función como parte del proveedor personalizado. Actualmente, solo el paquete de seguridad del canal seguro (Schannel) llama a esta función.
Sintaxis
PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET PfnCryptObjectLocatorProviderGet;
BOOL PfnCryptObjectLocatorProviderGet(
[in, optional] LPVOID pPluginContext,
[in, optional] PCRYPT_DATA_BLOB pIdentifier,
[in] DWORD dwNameType,
[in] PCERT_NAME_BLOB pNameBlob,
[out] PBYTE *ppbContent,
[out] DWORD *pcbContent,
[out] PCWSTR *ppwszPassword,
[out] PCRYPT_DATA_BLOB *ppIdentifier
)
{...}
Parámetros
[in, optional] pPluginContext
Puntero a un búfer opcional definido por este proveedor y devuelto por la función PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE . El autor de la llamada no modifica el búfer. El proveedor puede usar los datos para ayudarle a determinar qué acciones realizar o mantener información adicional.
[in, optional] pIdentifier
Puntero a una estructura CRYPTOAPI_BLOB que contiene el identificador de objeto. Este valor siempre debe ser NULL en la primera llamada a esta función.
[in] dwNameType
Formato de nombre del parámetro pNameBlob . Los valores posibles se enumeran a continuación. La implementación de esta función debe ser capaz de procesar CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE, que Schannel pasa.
CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE (1 (0x1))
CRYPT_OBJECT_LOCATOR_LAST_RESERVED_NAME_TYPE (32 (0x20))
CRYPT_OBJECT_LOCATOR_FIRST_RESERVED_USER_NAME_TYPE (33 (0x21))
CRYPT_OBJECT_LOCATOR_LAST_RESERVED_USER_NAME_TYPE (0x0000FFFF)
[in] pNameBlob
Puntero a una estructura de CRYPTOAPI_BLOB que contiene el nombre que usa la aplicación que realiza la llamada para identificar el objeto de forma única. El proveedor usa este nombre para buscar el objeto solicitado. Schannel envía actualmente un nombre de host DNS (sistema de nombres de dominio) codificado en UTF8 con nombres IDN convertidos a partir de punycode.
[out] ppbContent
Puntero a una matriz de bytes que contiene el objeto que se va a devolver.
[out] pcbContent
Tamaño, en bytes, del objeto al que apunta el parámetro ppbContent .
[out] ppwszPassword
Cadena Unicode terminada en NULL que contiene la contraseña, si existe, utilizada para cifrar el objeto. Si el objeto es un archivo de intercambio de información personal (PFX), normalmente se usará una contraseña para realizar el cifrado. Este valor puede ser NULL si no se requiere ninguna contraseña.
[out] ppIdentifier
Dirección que recibe un puntero a un identificador opcional que se puede usar durante las llamadas posteriores a esta función y para las notificaciones de cambio. Para obtener más información, vea la sección Comentarios. Si el proveedor establece este valor en NULL, Schannel usa internamente el valor del parámetro pNameBlob .
Valor devuelto
Si la función se realiza correctamente, devuelva un valor distinto de cero (TRUE).
Si se produce un error en la función, devuelva cero (FALSE) y especifique un error adecuado en la función SetLastError . La mayoría de los errores se pasan a través de Schannel sin modificar, pero este comportamiento no está garantizado. Algunos errores se pueden asignar a otros errores.
Si no se puede devolver un objeto para un nombre DNS determinado (pNameBlob) o identificador (pIdentifier), devuelva FALSE y especifique CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND en la función SetLastError .
Comentarios
Actualmente, solo el paquete de seguridad del canal seguro (Schannel) llama a la función de devolución de llamada PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET . Puede devolver un objeto que encapsula uno de los siguientes elementos:
- Matriz de bytes de intercambio de información personal (PFX)
- Un almacén de certificados.
- Un BLOB genérico. Actualmente, Schannel no admite esto.
Dado que muchos nombres de host se pueden asignar a un objeto, el proveedor puede usar el parámetro ppIdentifier para devolver un identificador definido internamente que las funciones de la API de criptografía (CAPI) pueden usar en las llamadas posteriores al proveedor. A continuación, el proveedor puede usar el identificador para ayudar a encontrar el objeto adecuado.
Requisitos
Requisito | Value |
---|---|
Cliente mínimo compatible | Windows 8 [solo aplicaciones de escritorio] |
Servidor mínimo compatible | Windows Server 2012 [solo aplicaciones de escritorio] |
Plataforma de destino | Windows |
Encabezado | wincrypt.h |
Consulte también
CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE