Partager via


Fonction CryptFindOIDInfo (wincrypt.h)

La fonction CryptFindOIDInfo récupère la première structure de CRYPT_OID_INFO prédéfinie ou inscrite qui correspond à un type de clé et à une clé spécifiés. La recherche peut être limitée aux identificateurs d’objet (OID) au sein d’un groupe d’OID spécifié.

Utilisez CryptEnumOIDInfo pour répertorier tous les sous-ensembles ou certains sous-ensembles de structures CRYPT_OID_INFO . De nouvelles structures CRYPT_OID_INFO peuvent être inscrites à l’aide de CryptRegisterOIDInfo. Les OID inscrits par l’utilisateur peuvent être supprimés de la liste des OID inscrits à l’aide de CryptUnregisterOIDInfo.

Les nouveaux OID peuvent être placés dans la liste des OID inscrits avant ou après les entrées prédéfinies. Étant donné que CryptFindOIDInfo retourne la première clé de la liste qui correspond aux critères de recherche, un OID nouvellement inscrit placé avant une entrée OID prédéfinie avec la même clé remplace une entrée prédéfinie.

Syntaxe

PCCRYPT_OID_INFO CryptFindOIDInfo(
  [in] DWORD dwKeyType,
  [in] void  *pvKey,
  [in] DWORD dwGroupId
);

Paramètres

[in] dwKeyType

Spécifie le type de clé à utiliser lors de la recherche d’informations OID.

Ce paramètre peut être l’un des types de clés suivants.

CRYPT_OID_INFO_OID_KEY

pvKey est l’adresse d’une chaîne ANSI terminée par null qui contient la chaîne OID à rechercher.

CRYPT_OID_INFO_NAME_KEY

pvKey est l’adresse d’une chaîne Unicode terminée par null qui contient le nom à rechercher.

CRYPT_OID_INFO_ALGID_KEY

pvKey est l’adresse d’une variable ALG_ID . Les ALG_IDsuivants sont pris en charge :

Algorithmes de hachage :

Algorithmes de chiffrement symétrique :

Algorithmes à clé publique :

Les algorithmes qui ne sont pas répertoriés sont pris en charge à l’aide de l’API de chiffrement : Nouvelle génération (CNG) uniquement ; utilisez plutôt CRYPT_OID_INFO_CNG_ALGID_KEY.

CRYPT_OID_INFO_SIGN_KEY

pvKey est l’adresse d’un tableau de deux ALG_IDoù le premier élément contient l’identificateur de l’algorithme de hachage et le deuxième élément contient l’identificateur d’algorithme de clé publique.

Les combinaisons de ALG_ID suivantes sont prises en charge.

Identificateur d’algorithme de signature Identificateur de l’algorithme de hachage
CALG_RSA_SIGN
CALG_SHA1
CALG_MD5
CALG_MD4
CALG_MD2
CALG_DSS_SIGN
CALG_SHA1
CALG_NO_SIGN
CALG_SHA1
CALG_NO_SIGN
 

Les algorithmes qui ne sont pas répertoriés sont pris en charge par le biais de CNG uniquement ; utilisez plutôt CRYPT_OID_INFO_CNG_SIGN_KEY.

CRYPT_OID_INFO_CNG_ALGID_KEY

pvKey est l’adresse d’une chaîne Unicode terminée par null qui contient l’identificateur de l’algorithme CNG à rechercher. Il peut s’agir de l’un des identificateurs d’algorithme CNG prédéfinis ou d’un autre identificateur d’algorithme inscrit.

Windows Server 2003 R2 Windows Server 2003 : Ce type de clé n’est pas pris en charge.

CRYPT_OID_INFO_CNG_SIGN_KEY

pvKey est l’adresse d’un tableau de deux pointeurs de chaîne Unicode terminés par une valeur Null où la première chaîne contient l’identificateur d’algorithme CNG de hachage et la deuxième chaîne contient l’identificateur d’algorithme CNG de clé publique. Ceux-ci peuvent provenir des identificateurs d’algorithme CNG prédéfinis ou d’un autre identificateur d’algorithme inscrit.

Windows Server 2003 R2 Windows Server 2003 : Ce type de clé n’est pas pris en charge.

Si vous le souhaitez, les types de clés suivants peuvent être spécifiés dans le paramètre dwKeyType à l’aide de l’opérateur LOGIQUE OR (|).

Valeur Signification
CRYPT_OID_INFO_PUBKEY_SIGN_KEY_FLAG
Ignore les clés publiques du groupe CRYPT_PUBKEY_ALG_OID_GROUP_ID qui sont explicitement marquées avec l’indicateur CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG.
CRYPT_OID_INFO_PUBKEY_ENCRYPT_KEY_FLAG
Ignore les clés publiques du groupe CRYPT_PUBKEY_ALG_OID_GROUP_ID qui sont explicitement marquées avec l’indicateur CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG.

[in] pvKey

Adresse d’une mémoire tampon qui contient des informations de recherche supplémentaires. Ce paramètre dépend de la valeur du paramètre dwKeyType . Pour plus d’informations, consultez le tableau sous dwKeyType.

[in] dwGroupId

Identificateur de groupe à utiliser lors de la recherche d’informations OID. La définition de ce paramètre sur zéro recherche tous les groupes en fonction du paramètre dwKeyType . Sinon, seul le dwGroupId indiqué fait l’objet d’une recherche.

Pour plus d’informations sur le code qui répertorie les informations OID par identificateur de groupe, consultez CryptEnumOIDInfo.

Si vous le souhaitez, l’indicateur suivant peut être spécifié dans le paramètre dwGroupId à l’aide de l’opérateur LOGIQUE OR (|).

Valeur Signification
CRYPT_OID_DISABLE_SEARCH_DS_FLAG
Désactive la recherche sur le serveur d’annuaire.
 

La longueur de bits décalée de 16 bits vers la gauche peut être spécifiée dans le paramètre dwGroupId à l’aide de l’opérateur LOGIQUE OR (|). Pour plus d'informations, consultez la section Notes.

Valeur retournée

Retourne un pointeur vers une structure constante de type CRYPT_OID_INFO. Le pointeur retourné ne doit pas être libéré. Lorsque la clé et le groupe spécifiés sont introuvables, null est retourné.

Remarques

La fonction CryptFindOIDInfo effectue une recherche dans active directory pour récupérer les noms conviviaux des OID dans les conditions suivantes :

  • Le type de clé dans le paramètre dwKeyType est défini sur CRYPT_OID_INFO_OID_KEY ou CRYPT_OID_INFO_NAME_KEY.
  • Aucun identificateur de groupe n’est spécifié dans le paramètre dwGroupId ou le GroupID fait référence à des OID de référence EKU, des OID de stratégie ou des OID de modèle.
La récupération réseau du nom convivial peut être supprimée en appelant la fonction avec l’indicateur CRYPT_OID_DISABLE_SEARCH_DS_FLAG .

La longueur de bits décalée de 16 bits vers la gauche peut être spécifiée dans le paramètre dwGroupId à l’aide de l’opérateur LOGIQUE OR (|). Cela s’applique uniquement aux entrées de groupe CRYPT_ENCRYPT_ALG_OID_GROUP_ID dont la longueur de bits est spécifiée dans le membre ExtraInfo de la structure CRYPT_OID_INFO . Actuellement, seuls les algorithmes de chiffrement AES l’ont. La constante CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT peut être utilisée pour effectuer le décalage. Par exemple, pour rechercher les informations OID pour BCRYPT_AES_ALGORITHM dont la longueur de bits est égale à 192, appelez CryptFindOIDInfo comme suit.


DWORD dwBitLen = 192;

PCCRYPT_OID_INFO pOIDInfo = CryptFindOIDInfo(
     CRYPT_OID_INFO_CNG_ALGID_KEY,
     (void *) BCRYPT_AES_ALGORITHM,
     CRYPT_ENCRYPT_ALG_OID_GROUP_ID |
         (dwBitLen << CRYPT_OID_INFO_OID_GROUP_BIT_LEN_SHIFT)
     );


Configuration requise

Condition requise Valeur
Client minimal pris en charge Windows XP [applications de bureau | applications UWP]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau | applications UWP]
Plateforme cible Windows
En-tête wincrypt.h
Bibliothèque Crypt32.lib
DLL Crypt32.dll

Voir aussi

ALG_ID

CRYPT_ALGORITHM_IDENTIFIER

CRYPT_OID_INFO

CryptRegisterOIDInfo

CryptUnregisterOIDInfo

Fonctions de prise en charge OID