Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
Добрый день!
В программе по созданию сертификата,нужно добавлять использование ключа,как я понял, необходимо заполнить cExtension и rgExtension в структура CERT_INFO. Так вопрос заключается в том - как составить структуру типа CERT_EXTENSIONS, чтобы она включала все возможные применения и как сделать это корректно(под корректно я имею ввиду наличие каких то функций типа cryptEncodeObject)? какой OID нужно ей передать?
У меня получилось только за счет создания массива типа BYTE ext[4]={{0x03},{0x02},{0x04},{0x40}};, в котором последнии два значения меняют киличество и само использование.
Хотелось бы найти что то более логичное,да и узнать,за что отвечают первые два значениия?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
//--- KeyUsage CRYPT_BIT_BLOB key_usage; ZeroMemory( &key_usage, sizeof(CRYPT_BIT_BLOB) ); BYTE ByteKeyUsage = 0xFF; key_usage.cbData=1; key_usage.pbData=&ByteKeyUsage; ext[ ++ext_number ].fCritical = TRUE; ext[ ext_number ].pszObjId = "2.5.29.15"; if(!CryptEncodeObjectEx(X509_ASN_ENCODING,X509_KEY_USAGE, &key_usage, CRYPT_ENCODE_ALLOC_FLAG, NULL,&ext[ ext_number ].Value.pbData, &ext[ ext_number ].Value.cbData)) { Error(L"CryptEncodeObject"); return S_FALSE; } А про массив BYTE - сертификат кодируется в формате ASN.1. Подробнее про ASN.1 можно почитать например в моей статье ASN.1 простыми словами. Отредактировано пользователем 3 июня 2013 г. 10:11:02(UTC)
| Причина: Не указана |
С уважением, Юрий Строжевский |
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
большое спасибо!вот только подскажите какого типа у вас ext?а то компилятор ругается,когда я добавляю OID,у меня это структура CERT_EXTENSIONS.
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
Все спасибо,проблема решилась)
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
Автор: nikeo  Все спасибо,проблема решилась) Вот, другое дело! Молодец, не то что в этой теме. |
С уважением, Юрий Строжевский |
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
Юрий,а по возможности не подскажете так же для расширенного использования ключа?
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
Ахах))да,интересные люди бывают)))получается и знают все и ничего не получается)
Я как понял,для расширенного тоже самое примерно,только флаг и OID другой?
|
|
|
|
|
|
Статус: Активный участник
Группы: Участники
Зарегистрирован: 22.01.2008(UTC) Сообщений: 675   Откуда: Йошкар-Ола Сказал «Спасибо»: 3 раз Поблагодарили: 95 раз в 68 постах
|
//--- Extended KeyUsage (должны встречатся только в пользовательских сертификатах) CERT_ENHKEY_USAGE enh_key_usage; ZeroMemory(&enh_key_usage, sizeof(CERT_ENHKEY_USAGE )); LPSTR enh_key_array[1] = {"1.3.6.1.4.1.311.10.3.4"}; enh_key_usage.cUsageIdentifier = 1; enh_key_usage.rgpszUsageIdentifier = enh_key_array; ext[ ++ext_number ].fCritical = FALSE; ext[ ext_number ].pszObjId = "2.5.29.37"; if(!CryptEncodeObjectEx(X509_ASN_ENCODING, X509_ENHANCED_KEY_USAGE, &enh_key_usage, CRYPT_ENCODE_ALLOC_FLAG, NULL, &ext[ ext_number ].Value.pbData, &ext[ ext_number ].Value.cbData)) { Error(L"CryptEncodeObject"); return S_FALSE; } А в общем случае OID надо искать вот так, а потом вот так. |
С уважением, Юрий Строжевский |
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
|
|
|
|
|
|
Статус: Участник
Группы: Участники
Зарегистрирован: 24.04.2013(UTC) Сообщений: 19 Откуда: Москва
|
Юрий,прошу прощения за очередное беспокойство...мне нужно кодировать поле Issuer и subject,просто строку передать,естественно,не получается)
|
|
|
|
|
|
Быстрый переход
Вы не можете создавать новые темы в этом форуме.
Вы не можете отвечать в этом форуме.
Вы не можете удалять Ваши сообщения в этом форуме.
Вы не можете редактировать Ваши сообщения в этом форуме.
Вы не можете создавать опросы в этом форуме.
Вы не можете голосовать в этом форуме.
Important Information:
The Форум КриптоПро uses cookies. By continuing to browse this site, you are agreeing to our use of cookies.
More Details
Close