структура 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, связанный с данными об идентификаторе.
pwszName
Отображаемое имя, связанное с OID.
dwGroupId
Значение идентификатора группы, связанное с данными OID.
Этот член может быть одним из следующих идентификаторов группы dwGroupId .
DUMMYUNIONNAME
DUMMYUNIONNAME.dwValue
Числовое значение, связанное с данными OID. Этот элемент используется с CRYPT_SIGN_ALG_OID_GROUP_ID dwGroupId .
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_PUBKEY_ALG_OID_GROUP_ID имеют флаг, установленный в элементе DWORD[0] элемента ExtraInfo.
Открытые ключи идентификаторов OID в кривой ECC, например, szOID_ECC_CURVE_P256 ("1.2.840.10045.3.1.7"), имеют флаг, заданный в элементе DWORD[0], значение поля BCRYPT_ECCKEY_BLOB dwMagic, заданное в элементе DWORD[1], и битовую длину, где значение cbKey BCRYPT_ECCKEY_BLOB равно 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, заканчивающихся нулевым значением, заданный в массиве значений DWORD в элементе ExtraInfo. Опущенный список подразумевает массив значений, где первое значение в массиве CERT_RDN_PRINTABLE_STRING, второе значение в массиве CERT_RDN_UNICODE_STRING, а третье значение в массиве равно нулю.
Следующие значения используются для флагов в элементе ExtraInfo .
Значение | Значение |
---|---|
|
Этот флаг больше не используется.
Остановите переформатирование сигнатуры до вызова функции CryptVerifySignature или после вызова функции CryptSignHash . |
|
Опустите параметры NULL при кодировании. |
|
Открытый ключ используется только для шифрования. |
|
Открытый ключ используется только для подписей. |
|
Этот флаг больше не используется.
Включите параметры алгоритма открытого ключа в параметры digestEncryptionAlgorithm для сообщения PKCS #7. |
pwszCNGAlgid
Строка идентификатора алгоритма, переданная функциям CNG (функциям BCrypt* и NCrypt*, определенным в Bcrypt.h и Ncrypt.h). Функции CNG используют строки идентификаторов алгоритма, такие как L"SHA1", вместо констант ALG_ID типа данных, таких как CALG_SHA1. Windows Server 2003 и Windows XP: Этот элемент недоступен.
#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 также можно задать строковое значение, которое не передается непосредственно в функции CNG. В следующей таблице перечислены эти значения и их значения.
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 |