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


структура 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 .

Значение Значение
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. Этот элемент используется с 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_ENCRYPT_ALG_OID_GROUP_ID OID имеют битовую длину, заданную для алгоритмов AES в элементе DWORD[0] элемента ExtraInfo.

Идентификаторы 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 .

Значение Значение
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.

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.

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