PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET fonction de rappel (wincrypt.h)
La fonction de rappel PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET récupère un objet. Vous devez implémenter cette fonction dans le cadre de votre fournisseur personnalisé. Cette fonction est actuellement appelée uniquement par le package de sécurité Schannel (Secure Channel).
Syntaxe
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
)
{...}
Paramètres
[in, optional] pPluginContext
Pointeur vers une mémoire tampon facultative définie par ce fournisseur et retournée par la fonction PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_INITIALIZE . La mémoire tampon n’est pas modifiée par l’appelant. Votre fournisseur peut utiliser les données pour l’aider à déterminer les actions à effectuer ou à conserver des informations supplémentaires.
[in, optional] pIdentifier
Pointeur vers une structure CRYPTOAPI_BLOB qui contient l’identificateur d’objet. Cette valeur doit toujours être NULL lors du premier appel à cette fonction.
[in] dwNameType
Format de nom du paramètre pNameBlob . Les valeurs possibles sont répertoriées ci-dessous. L’implémentation de cette fonction doit être en mesure de traiter CRYPT_OBJECT_LOCATOR_SPN_NAME_TYPE transmis par Schannel.
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
Pointeur vers une structure CRYPTOAPI_BLOB qui contient le nom que l’application appelante utilise pour identifier l’objet de manière unique. Votre fournisseur utilise ce nom pour localiser l’objet demandé. Schannel envoie actuellement un nom d’hôte DNS (système de noms de domaine) encodé en UTF8 avec des noms IDN convertis à partir de punycode.
[out] ppbContent
Pointeur vers un tableau d’octets qui contient l’objet à retourner.
[out] pcbContent
Taille, en octets, de l’objet pointé vers le paramètre ppbContent .
[out] ppwszPassword
Chaîne Unicode terminée par null qui contient le mot de passe, le cas échéant, utilisé pour chiffrer l’objet. Si l’objet est un fichier d’échange d’informations personnelles (PFX), un mot de passe est généralement utilisé pour effectuer le chiffrement. Cette valeur peut être NULL si aucun mot de passe n’est requis.
[out] ppIdentifier
Adresse qui reçoit un pointeur vers un identificateur facultatif qui peut être utilisé lors des appels suivants à cette fonction et pour les notifications de modification. Pour plus d'informations, consultez la section Notes. Si votre fournisseur définit cette valeur sur NULL, Schannel utilise en interne la valeur du paramètre pNameBlob .
Valeur retournée
Si la fonction réussit, retournez une valeur différente de zéro (TRUE).
Si la fonction échoue, retourne zéro (FALSE) et spécifiez une erreur appropriée dans la fonction SetLastError . La plupart des erreurs sont transmises via Schannel sans changement, mais ce comportement n’est pas garanti. Certaines erreurs peuvent être mappées à d’autres erreurs.
Si un objet ne peut pas être retourné pour un nom DNS donné (pNameBlob) ou un identificateur (pIdentifier), retournez FALSE et spécifiez CRYPT_E_OBJECT_LOCATOR_OBJECT_NOT_FOUND dans la fonction SetLastError .
Remarques
La fonction de rappel PFN_CRYPT_OBJECT_LOCATOR_PROVIDER_GET est actuellement appelée uniquement par le package de sécurité Du canal sécurisé (Schannel). Vous pouvez retourner un objet qui encapsule l’un des éléments suivants :
- Tableau d’octets d’échange d’informations personnelles (PFX)
- Magasin de certificats.
- Objet BLOB générique. Cette opération n’est actuellement pas prise en charge par Schannel.
Étant donné que de nombreux noms d’hôtes peuvent être mappés à un seul objet, votre fournisseur peut utiliser le paramètre ppIdentifier pour renvoyer un identificateur défini en interne qui peut être utilisé dans les appels suivants par les fonctions d’API de chiffrement (CAPI) au fournisseur. Le fournisseur peut ensuite utiliser l’identificateur pour faciliter la recherche de l’objet approprié.
Configuration requise
Condition requise | Valeur |
---|---|
Client minimal pris en charge | Windows 8 [applications de bureau uniquement] |
Serveur minimal pris en charge | Windows Server 2012 [applications de bureau uniquement] |
Plateforme cible | Windows |
En-tête | wincrypt.h |
Voir aussi
CRYPT_OBJECT_LOCATOR_PROVIDER_TABLE