Freigeben über


CRYPT_OID_INFO Struktur (wincrypt.h)

Die CRYPT_OID_INFO-Struktur enthält Informationen zu einem Objektbezeichner (OID). Diese Strukturen geben die Beziehung zwischen einem OID-Bezeichner, seinem Namen, seiner Gruppe und anderen Informationen zum OID. Diese Strukturen können mithilfe der CryptEnumOIDInfo-Funktion aufgelistet werden. Neue CRYPT_OID_STRUCTURES können mithilfe der CryptRegisterOIDInfo-Funktion hinzugefügt werden.

Syntax

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;

Elemente

cbSize

Die Größe dieser Struktur in Byte.

pszOID

Das OID, das diesen OID-Informationen zugeordnet ist.

pwszName

Der Anzeigename, der einem OID zugeordnet ist.

dwGroupId

Der Gruppenbezeichnerwert, der diesen OID-Informationen zugeordnet ist.

Dieses Mitglied kann einer der folgenden dwGroupId-Gruppenbezeichner sein.

Wert Bedeutung
CRYPT_ENCRYPT_ALG_OID_GROUP_ID
Verschlüsselungsalgorithmen
CRYPT_ENHKEY_USAGE_OID_GROUP_ID
Erweiterte Schlüsselverwendungen
CRYPT_EXT_OR_ATTR_OID_GROUP_ID
Erweiterungen oder Attribute
CRYPT_HASH_ALG_OID_GROUP_ID
Hashalgorithmen
CRYPT_POLICY_OID_GROUP_ID
Politik
CRYPT_PUBKEY_ALG_OID_GROUP_ID
Algorithmen für öffentliche Schlüssel
CRYPT_RDN_ATTR_OID_GROUP_ID
RDN-Attribute
CRYPT_SIGN_ALG_OID_GROUP_ID
Signaturalgorithmen

DUMMYUNIONNAME

DUMMYUNIONNAME.dwValue

Ein numerischer Wert, der diesen OID-Informationen zugeordnet ist. Dieses Element wird mit dwGroupId-CRYPT_SIGN_ALG_OID_GROUP_ID verwendet.

DUMMYUNIONNAME.Algid

Der Algorithmusbezeichner, der diesen OID-Informationen zugeordnet ist.

Dieser Member gilt für die folgenden Werte von 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

Dieses Mitglied ist nicht implementiert. Es ist immer auf Null festgelegt.

ExtraInfo

Zusätzliche Informationen, die zum Suchen oder Registrieren von OID-Informationen verwendet werden. Dieser Member gilt für die folgenden Werte von dwGroupId:

  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID
  • CRYPT_RDN_ATTR_OID_GROUP_ID

Die OIDs in der CRYPT_ENCRYPT_ALG_OID_GROUP_ID OID-Gruppe haben eine Bitlänge für die AES-Algorithmen im DWORD[0]-Element des ExtraInfo-Mitglieds festgelegt.

Die OIDs in der gruppe CRYPT_PUBKEY_ALG_OID_GROUP_ID weisen ein Flag im DWORD[0]-Mitglied des ExtraInfo-Mitglieds auf.

Die OIDs im ECC-Kurvennamen öffentliche Schlüssel, beispielsweise haben szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7") ein Flag im DWORD[0]-Element, einen im DWORD[0]-Element festgelegten BCRYPT_ECCKEY_BLOB dwMagic-Feldwert im DWORD[1]-Element und eine Bitlänge, wobei der BCRYPT_ECCKEY_BLOB cbKey-Wert dwBitLength / 8 + ((dwBitLength % 8) entspricht? 1 : 0) im DWORD[2]-Mitglied des ExtraInfo-Mitglieds festgelegt.

Die OIDs in der gruppe CRYPT_SIGN_ALG_OID_GROUP_ID verfügen über einen Bezeichner für den öffentlichen Schlüsselalgorithmus im DWORD[0]-Element, ein Kennzeichen im DWORD[1]-Element und einen optionalen Anbietertyp, der im DWORD[2]-Element des ExtraInfo-Mitglieds festgelegt ist.

Die OIDs in der gruppe CRYPT_RDN_ATTR_OID_GROUP_ID verfügen über eine Null-gekündigte Liste zulässiger RDN-Attributwerttypen, die in einem Array von DWORD-Werten im ExtraInfo-Element festgelegt sind. Eine ausgelassene Liste impliziert ein Array von Werten, bei denen der erste Wert im Array CERT_RDN_PRINTABLE_STRING ist, der zweite Wert im Array CERT_RDN_UNICODE_STRING ist und der dritte Wert im Array null ist.

Die folgenden Werte werden für die Flags im ExtraInfo-Element verwendet.

Wert Bedeutung
CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG
Dieses Kennzeichen wird nicht mehr verwendet.

Beenden Sie die Neuformatierung der Signatur, bevor die Funktion CryptVerifySignature aufgerufen wird oder nachdem die CryptSignHash-Funktion aufgerufen wird.

CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG
Lassen Sie NULL-Parameter beim Codieren aus.
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG
Der öffentliche Schlüssel wird nur für die Verschlüsselung verwendet.
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
Der öffentliche Schlüssel wird nur für Signaturen verwendet.
CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG
Dieses Kennzeichen wird nicht mehr verwendet.

Schließen Sie die Parameter des Public Key-Algorithmus in die Parameter digestEncryptionAlgorithm für die PKCS #7-Nachricht ein.

Post-Quantum-Verwendung

CRYPT_PUBKEY_ALG_OID_GROUP_ID weist die folgenden ExtraInfo-Felder auf, wenn sie mit PQ-OIDs (oben) verwendet werden:

Feld BESCHREIBUNG
DWORD[0] Flaggen
DWORD[1] Public Magic (z.B. BCRYPT_MLDSA_PUBLIC_MAGIC)
DWORD[2] Private Magic (z.B. BCRYPT_MLDSA_PRIVATE_SEED_MAGIC)
DWORD[4] Länge des Öffentlichen Schlüsselbytes
DWORD[5] Länge des Privaten Schlüsselbytes
DWORD[6] Länge des Signaturbytes

CRYPT_SIGN_ALG_OID_GROUP_ID weist die folgenden ExtraInfo-Felder auf, wenn sie mit PQ-OIDs verwendet werden:

Feld BESCHREIBUNG
DWORD[0] Flaggen
DWORD[1] Länge des Signaturbytes

CRYPT_HASH_ALG_OID_GROUP_ID kann auf "L"NoHash" festgelegt werden, um vor dem Signieren keinen Hash anzugeben, und der PQ-Schlüssel signiert die ToBeSigned-Bytes direkt.

pwszCNGAlgid

Die algorithmusbezeichnerzeichenfolge, die an die CNG-Funktionen übergeben wird (die Funktionen BCrypt* und NCrypt*, die in Bcrypt.h und Ncrypt.h definiert sind). CNG-Funktionen verwenden Algorithmusbezeichnerzeichenfolgen, z. B. L"SHA1", anstelle der ALG_ID Datentypkonstanten, z. B. CALG_SHA1. Windows Server 2003 und Windows XP: Dieses Mitglied ist nicht verfügbar.

Hinweis

 Das pwszCNGAlgid-Mitglied ist nur verfügbar, wenn Sie die folgende Anweisung in Ihren Code einschließen.

#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Dieser Member gilt für die folgenden Werte von 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

Legen Sie das pwszCNGAlgid-Element für die anderen Werte von dwGroupId auf die leere Zeichenfolge "L"" fest.

Das pwszCNGAlgid-Element kann auch auf einen Zeichenfolgenwert festgelegt werden, der nicht direkt an die CNG-Funktionen übergeben wird. In der folgenden Tabelle sind diese Werte und ihre Bedeutungen aufgeführt:

Wert Bedeutung
CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM Der ECC-Kurvenalgorithmus wird aus den codierten Parametern des OID-Algorithmus abgerufen.
CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM Der Schlüsselumbruchalgorithmus wird aus den codierten Parametern des OID-Algorithmus abgerufen.
CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM Der Hashalgorithmus wird aus den codierten Parametern des OID-Algorithmus abgerufen.
CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM Der Hashalgorithmus der PKCS #1 v2.1-Maskengenerierung wird aus den codierten Parametern des OID-Algorithmus abgerufen.
CRYPT_OID_INFO_NO_SIGN_ALGORITHM Ein Algorithmus für öffentliche Schlüssel, der angibt, dass der Signaturwert ein nicht signierter Hash ist.
CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM Der RSAES-OAEP Abstandshashalgorithmus wird aus den codierten Parametern des OID-Algorithmus abgerufen.
CRYPT32_MLDSA_44_ALGORITHM
L"ML-DSA:44"
Der ML-DSA Algorithmus kombiniert den CNG-Algorithmusnamen für ML-DSA und den CNG-Parametersatz 44 (NIST-Sicherheitskategorie 2).
CRYPT32_MLDSA_65_ALGORITHM
L"ML-DSA:65"
Der ML-DSA Algorithmus kombiniert den CNG-Algorithmusnamen für ML-DSA und den CNG-Parameter 65(NIST-Sicherheitskategorie 3).
CRYPT32_MLDSA_87_ALGORITHM
L"ML-DSA:87"
Der ML-DSA Algorithmus kombiniert den CNG-Algorithmusnamen für ML-DSA und den CNG-Parametersatz 87 (NIST-Sicherheitskategorie 5).
CRYPT_OID_INFO_NO_HASH_ALGORITHM
L"NoHash"
Bei digitalen PQ-Signaturen gibt es vor der Signatur keinen Hash, und der PQ-Schlüssel signiert die ToBeSigned-Bytes direkt.

pwszCNGExtraAlgid

Eine zusätzliche Algorithmuszeichenfolge, außer der Zeichenfolge im pwszCNGAlgid-Element , die an die CNG-Funktionen übergeben werden kann (die Funktionen BCrypt* und NCrypt*, die in Bcrypt.h und Ncrypt.h definiert sind).

Windows Server 2003 und Windows XP: Dieses Mitglied ist nicht verfügbar.

Anmerkung Dieses Element ist nur verfügbar, wenn Sie die folgende Anweisung in Ihren Code einschließen.
 
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Für die Signaturalgorithmen (CRYPT_SIGN_ALG_OID_GROUP_ID) ist dieses Element die Zeichenfolge des öffentlichen Schlüsselalgorithmus, die an die CNG-Funktionen übergeben werden soll.

Bei ECC-Signaturen ist dieses Element der spezielle CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM Zeichenfolgenwert.

Bei nicht signierten Signaturen ist dieses Element der spezielle CRYPT_OID_INFO_NO_SIGN_ALGORITHM Zeichenfolgenwert.

Bei öffentlichen SCHLÜSSELn der ECC-Kurve, z. B. szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), ist dies der spezielle CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM Zeichenfolgenwert.

Legen Sie für die anderen Werte von dwGroupId das pwszCNGExtraAlgid-Element auf die leere Zeichenfolge "L"" fest.

Anforderungen

Anforderung Wert
Mindestens unterstützter Client Windows XP [nur Desktop-Apps]
Mindestanforderungen für unterstützte Server Windows Server 2003 [Nur Desktop-Apps]
Überschrift wincrypt.h

Siehe auch

CryptFindOIDInfo

CryptRegisterOIDInfo

CryptUnregisterOIDInfo