powered by simpleCommunicator - 2.0.58     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как взять з-е по OID из расширений?
6 сообщений из 6, страница 1 из 1
Как взять з-е по OID из расширений?
    #39895784
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
На c# делаю так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
const string IssuerIdentifierOid = "2.5.29.35";
                    var issuerKeyId = cert
                      .Extensions
                      .Cast<X509Extension>()
                      .Where(e => IssuerIdentifierOid.Equals(e.Oid.Value, StringComparison.OrdinalIgnoreCase))
                      .Single()
                      .Format(false);



Как тоже самое сделать на c++?
...
Рейтинг: 0 / 0
Как взять з-е по OID из расширений?
    #39895850
Фотография mayton
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
А что в C# оно возвращает? Просто чтоб ответить на твой вопрос - нужна экспертиза сразу в C#, C++ и в неизвестной библиотеке
работы с сертификатами которую мы не знаем.
...
Рейтинг: 0 / 0
Как взять з-е по OID из расширений?
    #39895862
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
mayton
А что в C# оно возвращает? Просто чтоб ответить на твой вопрос - нужна экспертиза сразу в C#, C++ и в неизвестной библиотеке
работы с сертификатами которую мы не знаем.

переформулирую вопрос:
есть сертификат X509
есть расширения
нужно по OID получить з-е

конкретно этот код получает идентификатор ключа центра сертификатов
...
Рейтинг: 0 / 0
Как взять з-е по OID из расширений?
    #39895864
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел вот такую ф-ю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
WINCRYPT32API
PCERT_RDN_ATTR
WINAPI
CertFindRDNAttr(
    _In_ LPCSTR pszObjId,
    _In_ PCERT_NAME_INFO pName
    );


Пробую

Но, она по имени сертификата получает з-е
вообще говоря это наверное не совсем правильно по имени, ведь сертификаты часто называются одинаково
Хорошо бы уметь тоже самое но по PCCERT_CONTEXT
...
Рейтинг: 0 / 0
Как взять з-е по OID из расширений?
    #39895866
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
кажется оно

Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
WINCRYPT32API
PCERT_EXTENSION
WINAPI
CertFindExtension(
    _In_ LPCSTR pszObjId,
    _In_ DWORD cExtensions,
    _In_reads_(cExtensions) CERT_EXTENSION rgExtensions[]
    );
...
Рейтинг: 0 / 0
Как взять з-е по OID из расширений?
    #39896449
listtoview
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
работает
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
std::string oid = "2.5.29.37";
CERT_EXTENSION* keyUsage;
keyUsage = CertFindExtension(oid.c_str(), pCertContext->pCertInfo->cExtension, pCertContext->pCertInfo->rgExtension);
if (NULL != keyUsage)
{
DWORD strSz(0);
if (CryptFormatObject(X509_ASN_ENCODING, 0, 0, NULL, oid.c_str(), keyUsage->Value.pbData, keyUsage->Value.cbData, NULL, &strSz))
{
std::wstring Buff;
Buff.resize((strSz / sizeof(wchar_t)) + 1);
if (CryptFormatObject(X509_ASN_ENCODING, 0, 0, NULL, oid.c_str(), keyUsage->Value.pbData, keyUsage->Value.cbData, (void*)Buff.data(), &strSz))
{
//if (std::wstring::npos != Buff.find(L"Digital Signature"))
}
}
}
...
Рейтинг: 0 / 0
6 сообщений из 6, страница 1 из 1
Форумы / C++ [игнор отключен] [закрыт для гостей] / Как взять з-е по OID из расширений?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]