Partager via


structure CRYPT_OID_INFO (wincrypt.h)

La structure CRYPT_OID_INFO contient des informations sur un identificateur d’objet (OID). Ces structures donnent la relation entre un identificateur OID, son nom, son groupe et d’autres informations sur l’OID. Ces structures peuvent être répertoriées à l’aide de la fonction CryptEnumOIDInfo . Vous pouvez ajouter de nouvelles CRYPT_OID_STRUCTURES à l’aide de la fonction CryptRegisterOIDInfo .

Syntaxe

typedef struct _CRYPT_OID_INFO {
  DWORD           cbSize;
  LPCSTR          pszOID;
  LPCWSTR         pwszName;
  DWORD           dwGroupId;
  union {
    DWORD  dwValue;
    ALG_ID Algid;
    DWORD  dwLength;
  } DUMMYUNIONNAME;
  CRYPT_DATA_BLOB ExtraInfo;
  LPCWSTR         pwszCNGAlgid;
  LPCWSTR         pwszCNGExtraAlgid;
} CRYPT_OID_INFO, *PCRYPT_OID_INFO;

Membres

cbSize

Taille, en octets, de cette structure.

pszOID

OID associé à ces informations OID.

pwszName

Nom complet associé à un OID.

dwGroupId

Valeur d’identificateur de groupe associée à ces informations OID.

Ce membre peut être l’un des identificateurs de groupe dwGroupId suivants.

Valeur Sens
CRYPT_ENCRYPT_ALG_OID_GROUP_ID
Algorithmes de chiffrement
CRYPT_ENHKEY_USAGE_OID_GROUP_ID
Utilisations de clés améliorées
CRYPT_EXT_OR_ATTR_OID_GROUP_ID
Extensions ou attributs
CRYPT_HASH_ALG_OID_GROUP_ID
Algorithmes de hachage
CRYPT_POLICY_OID_GROUP_ID
Manifeste
CRYPT_PUBKEY_ALG_OID_GROUP_ID
Algorithmes de clé publique
CRYPT_RDN_ATTR_OID_GROUP_ID
Attributs RDN
CRYPT_SIGN_ALG_OID_GROUP_ID
Algorithmes de signature

DUMMYUNIONNAME

DUMMYUNIONNAME.dwValue

Valeur numérique associée à ces informations OID. Ce membre est utilisé avec dwGroupId CRYPT_SIGN_ALG_OID_GROUP_ID.

DUMMYUNIONNAME.Algid

Identificateur d’algorithme associé à ces informations OID.

Ce membre s’applique aux valeurs suivantes de dwGroupId :

  • CRYPT_HASH_ALG_OID_GROUP_ID
  • CRYPT_ENCRYPT_ALG_OID_GROUP_ID
  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID

DUMMYUNIONNAME.dwLength

Ce membre n’est pas implémenté. Il est toujours défini sur zéro.

ExtraInfo

Informations supplémentaires utilisées pour rechercher ou inscrire des informations OID. Ce membre s’applique aux valeurs suivantes de dwGroupId :

  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID
  • CRYPT_RDN_ATTR_OID_GROUP_ID

Les OID du groupe OID CRYPT_ENCRYPT_ALG_OID_GROUP_ID ont une longueur de bits définie pour les algorithmes AES dans le membre DWORD[0] du membre ExtraInfo.

Les OID du groupe CRYPT_PUBKEY_ALG_OID_GROUP_ID ont un indicateur défini dans le membre DWORD[0] du membre ExtraInfo.

Les OID dans les clés publiques de la courbe ECC, par exemple, szOID_ECC_CURVE_P256 (« 1.2.840.10045.3.1.7 »), avez un indicateur défini dans le membre DWORD[0], une valeur de champ BCRYPT_ECCKEY_BLOB dwMagic définie dans le membre DWORD[1] et une longueur de bits où la valeur cbKey BCRYPT_ECCKEY_BLOB est égale à dwBitLength / 8 + ((dwBitLength % 8) ? 1 : 0) défini dans le membre DWORD[2] du membre ExtraInfo.

Les OID du groupe CRYPT_SIGN_ALG_OID_GROUP_ID ont un identificateur d’algorithme de clé publique défini dans le membre DWORD[0], un indicateur défini dans le membre DWORD[1] et un type de fournisseur facultatif défini dans le membre DWORD[2] du membre ExtraInfo.

Les OID du groupe CRYPT_RDN_ATTR_OID_GROUP_ID ont une liste de types de valeurs d’attribut RDN acceptables définies dans un tableau de valeurs DWORD dans le membre ExtraInfo. Une liste omise implique un tableau de valeurs où la première valeur du tableau est CERT_RDN_PRINTABLE_STRING, la deuxième valeur du tableau est CERT_RDN_UNICODE_STRING, et la troisième valeur du tableau est égale à zéro.

Les valeurs suivantes sont utilisées pour les indicateurs du membre ExtraInfo .

Valeur Sens
CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG
Cet indicateur n’est plus utilisé.

Arrêtez la reformatage de la signature avant que la fonction CryptVerifySignature soit appelée ou après l’appel de la fonction CryptSignHash .

CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG
Omettez les paramètres NULL lors de l’encodage.
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG
La clé publique est utilisée uniquement pour le chiffrement.
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
La clé publique est utilisée uniquement pour les signatures.
CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG
Cet indicateur n’est plus utilisé.

Incluez les paramètres de l’algorithme de clé publique dans les paramètres digestEncryptionAlgorithm pour le message PKCS #7.

Utilisation post-quantique

CRYPT_PUBKEY_ALG_OID_GROUP_ID a les champs ExtraInfo suivants lorsqu’ils sont utilisés avec des OID (ci-dessus) :

Terrain Descriptif
DWORD[0] Drapeaux
DWORD[1] Magic public (par exemple , BCRYPT_MLDSA_PUBLIC_MAGIC)
DWORD[2] Private Magic (par exemple , BCRYPT_MLDSA_PRIVATE_SEED_MAGIC)
DWORD[4] Longueur d’octet de clé publique
DWORD[5] Longueur d’octet de clé privée
DWORD[6] Longueur d’octet de signature

CRYPT_SIGN_ALG_OID_GROUP_ID possède les champs ExtraInfo suivants lorsqu’ils sont utilisés avec des OID PQ :

Terrain Descriptif
DWORD[0] Drapeaux
DWORD[1] Longueur d’octet de signature

CRYPT_HASH_ALG_OID_GROUP_ID pouvez être défini sur L« NoHash » pour indiquer aucun hachage avant la signature, et la clé PQ signe directement les octets ToBeSigned .

pwszCNGAlgid

Chaîne d’identificateur d’algorithme transmise aux fonctions CNG (fonctions BCrypt* et NCrypt* définies dans Bcrypt.h et Ncrypt.h). Les fonctions CNG utilisent des chaînes d’identificateur d’algorithme, telles que L"SHA1 », au lieu des constantes de type de données ALG_ID , telles que CALG_SHA1. Windows Server 2003 et Windows XP : Ce membre n’est pas disponible.

Remarque

 Le membre pwszCNGAlgid est disponible uniquement si vous incluez l’instruction suivante dans votre code.

#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Ce membre s’applique aux valeurs suivantes de dwGroupId :

  • CRYPT_HASH_ALG_OID_GROUP_ID
  • CRYPT_ENCRYPT_ALG_OID_GROUP_ID
  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID

Définissez le membre pwszCNGAlgid sur la chaîne vide, L" », pour les autres valeurs de dwGroupId.

Le membre pwszCNGAlgid peut également être défini sur une valeur de chaîne qui n’est pas transmise directement aux fonctions CNG. Le tableau suivant répertorie ces valeurs et leurs significations :

Valeur Sens
CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM L’algorithme de courbe ECC est obtenu à partir des paramètres codés de l’algorithme OID.
CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM L’algorithme d’habillage de clé est obtenu à partir des paramètres encodés de l’algorithme OID.
CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM L’algorithme de hachage est obtenu à partir des paramètres codés de l’algorithme OID.
CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM L’algorithme de hachage de génération de masque PKCS #1 v2.1 est obtenu à partir des paramètres encodés de l’algorithme OID.
CRYPT_OID_INFO_NO_SIGN_ALGORITHM Algorithme de clé publique qui indique que la valeur de signature est un hachage non signé.
CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM L’algorithme de hachage de remplissage RSAES-OAEP est obtenu à partir des paramètres encodés de l’algorithme OID.
CRYPT32_MLDSA_44_ALGORITHM
L"ML-DSA:44"
L’algorithme ML-DSA combine le nom de l’algorithme CNG pour ML-DSA et le jeu de paramètres CNG 44 (catégorie de sécurité NIST 2).
CRYPT32_MLDSA_65_ALGORITHM
L"ML-DSA:65"
L’algorithme ML-DSA combine le nom de l’algorithme CNG pour ML-DSA et le jeu de paramètres CNG 65(NIST security category 3).
CRYPT32_MLDSA_87_ALGORITHM
L"ML-DSA:87"
L’algorithme ML-DSA combine le nom de l’algorithme CNG pour ML-DSA et le jeu de paramètres CNG 87 (catégorie de sécurité NIST 5).
CRYPT_OID_INFO_NO_HASH_ALGORITHM
L"NoHash"
Pour les signatures numériques PQ, indique qu’il n’y a pas de hachage avant la signature, et que la clé PQ signe directement les octets ToBeSigned.

pwszCNGExtraAlgid

Chaîne d’algorithme supplémentaire, autre que la chaîne du membre pwszCNGAlgid , qui peut être transmise aux fonctions CNG (les fonctions BCrypt* et NCrypt* définies dans Bcrypt.h et Ncrypt.h).

Windows Server 2003 et Windows XP : Ce membre n’est pas disponible.

Note Ce membre est disponible uniquement si vous incluez l’instruction suivante dans votre code.
 
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Pour les algorithmes de signature (CRYPT_SIGN_ALG_OID_GROUP_ID), ce membre est la chaîne d’algorithme de clé publique à transmettre aux fonctions CNG.

Pour les signatures ECC, ce membre est la valeur de chaîne CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM spéciale.

Pour les signatures non signées, ce membre est la valeur de chaîne CRYPT_OID_INFO_NO_SIGN_ALGORITHM spéciale.

Pour les clés publiques de la courbe ECC, par exemple, szOID_ECC_CURVE_P256 (« 1.2.840.10045.3.1.7 »), il s’agit de la valeur de chaîne CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM spéciale.

Pour les autres valeurs de dwGroupId, définissez le membre pwszCNGExtraAlgid sur la chaîne vide, L" ».

Spécifications

Besoin Valeur
Client minimum requis Windows XP [applications de bureau uniquement]
Serveur minimal pris en charge Windows Server 2003 [applications de bureau uniquement]
En-tête wincrypt.h

Voir aussi

CryptFindOIDInfo

CryptRegisterOIDInfo

CryptUnregisterOIDInfo