| ||||
| ||||
Здравствуйте! Как программно посмотреть данные лежащие в PCCERT_CONTEXT->pCertInfo->rgExtension->Value.pbData; Когда я вывожу эти данные в файл, то вижу какой-то бред. Значение PCCERT_CONTEXT->pCertInfo->rgExtension.pszObjId я получаю (2.5.29.15), а как дальшее? :-( Спасибо! | ||||
Ответы: | ||||
| ||||
Это не бред а ASN1 :) Сделайте CryptDecodeObject | ||||
| ||||
Делал не помогает. PCERT_EXTENSION cert_ext; CRYPT_DATA_BLOB* buffer = NULL; Естественно память выделена. CryptDecodeObject(X509_ASN_ENCODING | PKCS_7_ASN_ENCODING, szOID_KEY_USAGE, cert_ext->Value.pbData, cert_ext->Value.cbData, buffer, &size_struct); В буфере одна буква "ш". | ||||
| ||||
Это не буква щ, а комбинация из CERT_DATA_ENCIPHERMENT_KEY_USAGE CERT_DIGITAL_SIGNATURE_KEY_USAGE CERT_KEY_AGREEMENT_KEY_USAGE CERT_KEY_CERT_SIGN_KEY_USAGE CERT_KEY_ENCIPHERMENT_KEY_USAGE CERT_NON_REPUDIATION_KEY_USAGE CERT_OFFLINE_CRL_SIGN_KEY_USAGE | ||||
| ||||
А как вы это узнали? И как мне получить программно эти константы? | ||||
| ||||
Посмотрите в MSDN описание CERT_KEY_ATTRIBUTES_INFO, а именно RestrictedKeyUsage. Константы эти описаны в wincrypt.h | ||||
| ||||
Спасибо. т.е. если я правильно понял OID использования ключа явно в сертификате не прописаны? | ||||
| ||||
Пожалуйста. А о каких именно OIDах идет речь? | ||||
| ||||
Прошу прощения. конечно же не OIDды. Когда мы смотрим сертификат, то на вкладке состав в поле "использование ключа" видим, к примеру, "Цифровая подпись , Неотрекаемость , Шифрование ключей , Шифрование данных , Согласование ключей(F8)". Как мне программно получить эту строку? Вот что я имел в виду в самом начале. | ||||
| ||||
Сравнивать побитовым И каждую из этих констант с полученным значением KeyUsage. | ||||
| ||||
Спасибо! Попробую :-) | ||||