Поделиться через


структура CRYPT_OID_INFO (wincrypt.h)

Структура CRYPT_OID_INFO содержит сведения об идентификаторе объекта (OID). Эти структуры дают связь между идентификатором OID, его именем, группой и другими сведениями об OID. Эти структуры можно перечислить с помощью функции CryptEnumOIDInfo . Новые CRYPT_OID_STRUCTURES можно добавить с помощью функции CryptRegisterOIDInfo .

Синтаксис

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;

Члены

cbSize

Размер этой структуры в байтах.

pszOID

OID, связанный с данными об этом OID.

pwszName

Отображаемое имя, связанное с OID.

dwGroupId

Значение идентификатора группы, связанное с данными об этом OID.

Этот член может быть одним из следующих идентификаторов группы dwGroupId .

Ценность Значение
CRYPT_ENCRYPT_ALG_OID_GROUP_ID
Алгоритмы шифрования
CRYPT_ENHKEY_USAGE_OID_GROUP_ID
Расширенные возможности использования ключей
CRYPT_EXT_OR_ATTR_OID_GROUP_ID
Расширения или атрибуты
CRYPT_HASH_ALG_OID_GROUP_ID
Хэш-алгоритмы
CRYPT_POLICY_OID_GROUP_ID
Политики
CRYPT_PUBKEY_ALG_OID_GROUP_ID
Алгоритмы открытого ключа
CRYPT_RDN_ATTR_OID_GROUP_ID
Атрибуты RDN
CRYPT_SIGN_ALG_OID_GROUP_ID
Алгоритмы подписи

DUMMYUNIONNAME

DUMMYUNIONNAME.dwValue

Числовое значение, связанное с данными OID. Этот элемент используется с dwGroupId CRYPT_SIGN_ALG_OID_GROUP_ID.

DUMMYUNIONNAME.Algid

Идентификатор алгоритма, связанный с данными об этом OID.

Этот член применяется к следующим значениям 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

Этот член не реализован. Оно всегда равно нулю.

ExtraInfo

Дополнительные сведения, используемые для поиска или регистрации сведений об OID. Этот член применяется к следующим значениям dwGroupId:

  • CRYPT_PUBKEY_ALG_OID_GROUP_ID
  • CRYPT_SIGN_ALG_OID_GROUP_ID
  • CRYPT_RDN_ATTR_OID_GROUP_ID

Идентификаторы OID в группе CRYPT_ENCRYPT_ALG_OID_GROUP_ID OID имеют битовую длину для алгоритмов AES в элементе DWORD[0] элемента ExtraInfo.

Идентификаторы OID в группе CRYPT_PUBKEY_ALG_OID_GROUP_ID имеют флаг в элементе DWORD[0] участника ExtraInfo.

OIDs в открытых ключах кривой ECC, например szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), имеет флаг, заданный в элементе DWORD[0], значение поля dwMagic BCRYPT_ECCKEY_BLOB в элементе DWORD[1] и битовая длина, в BCRYPT_ECCKEY_BLOB которой значение cbKey равно dwBitLength / 8 + ((dwBitLength % 8) ? 1 : 0) задан в элементе DWORD[2] участника ExtraInfo.

Идентификаторы OID в группе CRYPT_SIGN_ALG_OID_GROUP_ID имеют идентификатор алгоритма открытого ключа в члене DWORD[0], флаг, заданный в элементе DWORD[1], и необязательный тип поставщика, заданный в элементе DWORD[2] элемента ExtraInfo.

Идентификаторы OID в группе CRYPT_RDN_ATTR_OID_GROUP_ID имеют список допустимых типов атрибутов RDN, завершаемых значением NULL, заданным в массиве значений DWORD в члене ExtraInfo. Опущенный список подразумевает массив значений, где первое значение в массиве CERT_RDN_PRINTABLE_STRING, второе значение в массиве CERT_RDN_UNICODE_STRING, а третье значение в массиве равно нулю.

Следующие значения используются для флагов в элементе ExtraInfo .

Ценность Значение
CRYPT_OID_INHIBIT_SIGNATURE_FORMAT_FLAG
Этот флаг больше не используется.

Остановите переформатирование подписи до вызова функции CryptVerifySignature или после вызова функции CryptSignHash .

CRYPT_OID_NO_NULL_ALGORITHM_PARA_FLAG
Не указывайте параметры NULL при кодировке.
CRYPT_OID_PUBKEY_ENCRYPT_ONLY_FLAG
Открытый ключ используется только для шифрования.
CRYPT_OID_PUBKEY_SIGN_ONLY_FLAG
Открытый ключ используется только для подписей.
CRYPT_OID_USE_PUBKEY_PARA_FOR_PKCS7_FLAG
Этот флаг больше не используется.

Включите параметры алгоритма открытого ключа в параметры digestEncryptionAlgorithm для сообщения PKCS #7.

Пост-квантовое использование

CRYPT_PUBKEY_ALG_OID_GROUP_ID имеет следующие поля ExtraInfo при использовании с PQ OID (выше):

Поле Описание
DWORD[0] Флаги
DWORD[1] Общедоступная магия (например , BCRYPT_MLDSA_PUBLIC_MAGIC)
DWORD[2] Частная магия (например , BCRYPT_MLDSA_PRIVATE_SEED_MAGIC)
DWORD[4] Длина байтов открытого ключа
DWORD[5] Длина байтов закрытого ключа
DWORD[6] Длина байтов подписи

CRYPT_SIGN_ALG_OID_GROUP_ID имеет следующие поля ExtraInfo при использовании с PQ OID:

Поле Описание
DWORD[0] Флаги
DWORD[1] Длина байтов подписи

CRYPT_HASH_ALG_OID_GROUP_ID можно задать значение L"NoHash", чтобы указать отсутствие хэша перед подписью, а ключ PQ будет напрямую подписывать байты ToBeSigned .

pwszCNGAlgid

Строка идентификатора алгоритма, переданная функциям CNG (функции BCrypt* и NCrypt*, определенные в Bcrypt.h и Ncrypt.h). Функции CNG используют строки идентификатора алгоритма, такие как L"SHA1", а не константы типа данных ALG_ID , например CALG_SHA1. Windows Server 2003 и Windows XP: Этот член недоступен.

Замечание

 Член pwszCNGAlgid доступен только при включении следующей инструкции в код.

#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Этот член применяется к следующим значениям 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

Задайте член pwszCNGAlgid пустой строкой, L", для других значений dwGroupId.

Член pwszCNGAlgid также можно задать строковое значение, которое не передается непосредственно функциям CNG. В следующей таблице перечислены эти значения и их значения:

Ценность Значение
CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM Алгоритм кривой ECC получается из закодированных параметров алгоритма OID.
CRYPT_OID_INFO_ECC_WRAP_PARAMETERS_ALGORITHM Алгоритм упаковки ключей получен из закодированных параметров алгоритма OID.
CRYPT_OID_INFO_HASH_PARAMETERS_ALGORITHM Хэш-алгоритм получается из закодированных параметров алгоритма OID.
CRYPT_OID_INFO_MGF1_PARAMETERS_ALGORITHM Хэш-алгоритм создания маски PKCS #1 версии 2.1 получен из закодированных параметров алгоритма OID.
CRYPT_OID_INFO_NO_SIGN_ALGORITHM Алгоритм открытого ключа, указывающий, что значение подписи является хэшом без знака.
CRYPT_OID_INFO_OAEP_PARAMETERS_ALGORITHM Алгоритм хэширования RSAES-OAEP получен из закодированных параметров алгоритма OID.
CRYPT32_MLDSA_44_ALGORITHM
L"ML-DSA:44"
Алгоритм ML-DSA объединяет имя алгоритма CNG для ML-DSA и параметр CNG 44 (категория безопасности NIST 2).
CRYPT32_MLDSA_65_ALGORITHM
L"ML-DSA:65"
Алгоритм ML-DSA объединяет имя алгоритма CNG для ML-DSA и параметр CNG 65 (категория безопасности NIST 3).
CRYPT32_MLDSA_87_ALGORITHM
L"ML-DSA:87"
Алгоритм ML-DSA объединяет имя алгоритма CNG для ML-DSA и параметр CNG 87 (категория безопасности NIST 5).
CRYPT_OID_INFO_NO_HASH_ALGORITHM
L"NoHash"
Для цифровых подписей PQ указывает, что перед подписью нет хэша, а ключ PQ непосредственно подписывает байты ToBeSigned.

pwszCNGExtraAlgid

Дополнительная строка алгоритма, отличной от строки в члене pwszCNGAlgid , которую можно передать в функции CNG (функции BCrypt* и NCrypt*, определенные в Bcrypt.h и Ncrypt.h).

Windows Server 2003 и Windows XP: Этот член недоступен.

Заметка Этот элемент доступен только в том случае, если в код включена следующая инструкция.
 
#define CRYPT_OID_INFO_HAS_EXTRA_FIELDS

Для алгоритмов подписи (CRYPT_SIGN_ALG_OID_GROUP_ID), этот элемент является строкой алгоритма открытого ключа для передачи в функции CNG.

Для подписей ECC этот элемент является специальным CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM строковым значением.

Для неподписанных подписей этот элемент является специальным CRYPT_OID_INFO_NO_SIGN_ALGORITHM строковым значением.

Для открытых ключей кривой ECC, например szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), это специальное CRYPT_OID_INFO_ECC_PARAMETERS_ALGORITHM строковое значение.

Для других значений dwGroupId задайте член pwszCNGExtraAlgid пустой строкой L".

Требования

Требование Ценность
Минимальный поддерживаемый клиент Windows XP [только классические приложения]
минимальный поддерживаемый сервер Windows Server 2003 [только классические приложения]
Заголовок wincrypt.h

См. также

CryptFindOIDInfo

CryptRegisterOIDInfo

CryptUnregisterOIDInfo