20.09.2004 15:39:46CERT_EXTENSION Ответов: 10
Александр
Здравствуйте!
Как программно посмотреть данные лежащие в PCCERT_CONTEXT->pCertInfo->rgExtension->Value.pbData;
Когда я вывожу эти данные в файл, то вижу какой-то бред.
Значение PCCERT_CONTEXT->pCertInfo->rgExtension.pszObjId я получаю (2.5.29.15), а как дальшее? :-(
Спасибо!
 
Ответы:
20.09.2004 15:49:24Kirill Sobolev
Это не бред а ASN1 :)
Сделайте CryptDecodeObject
20.09.2004 15:59:28Александр
Делал не помогает.
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);
В буфере одна буква "ш".
20.09.2004 16:02:06Kirill Sobolev
Это не буква щ, а комбинация из

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

20.09.2004 16:10:40Александр
А как вы это узнали?
И как мне получить программно эти константы?
20.09.2004 16:13:35Kirill Sobolev
Посмотрите в MSDN описание CERT_KEY_ATTRIBUTES_INFO, а именно RestrictedKeyUsage. Константы эти описаны в wincrypt.h
20.09.2004 16:21:51Александр
Спасибо.
т.е. если я правильно понял OID использования ключа явно в сертификате не прописаны?
20.09.2004 16:24:31Kirill Sobolev
Пожалуйста.
А о каких именно OIDах идет речь?
20.09.2004 16:34:29Александр
Прошу прощения. конечно же не OIDды.
Когда мы смотрим сертификат, то на вкладке состав в поле "использование ключа" видим, к примеру, "Цифровая подпись , Неотрекаемость , Шифрование ключей , Шифрование данных , Согласование ключей(F8)". Как мне программно получить эту строку?
Вот что я имел в виду в самом начале.
20.09.2004 16:43:06Kirill Sobolev
Сравнивать побитовым И каждую из этих констант с полученным значением KeyUsage.
20.09.2004 16:46:00Александр
Спасибо!
Попробую :-)