Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Структура 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 .
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 .
| Ценность | Значение |
|---|---|
|
Этот флаг больше не используется.
Остановите переформатирование подписи до вызова функции CryptVerifySignature или после вызова функции CryptSignHash . |
|
Не указывайте параметры NULL при кодировке. |
|
Открытый ключ используется только для шифрования. |
|
Открытый ключ используется только для подписей. |
|
Этот флаг больше не используется.
Включите параметры алгоритма открытого ключа в параметры 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_ALGORITHML"ML-DSA:44" |
Алгоритм ML-DSA объединяет имя алгоритма CNG для ML-DSA и параметр CNG 44 (категория безопасности NIST 2). |
CRYPT32_MLDSA_65_ALGORITHML"ML-DSA:65" |
Алгоритм ML-DSA объединяет имя алгоритма CNG для ML-DSA и параметр CNG 65 (категория безопасности NIST 3). |
CRYPT32_MLDSA_87_ALGORITHML"ML-DSA:87" |
Алгоритм ML-DSA объединяет имя алгоритма CNG для ML-DSA и параметр CNG 87 (категория безопасности NIST 5). |
CRYPT_OID_INFO_NO_HASH_ALGORITHML"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 |