Re: CryptoApi CRL from DER
От: slavyancheg  
Дата: 28.05.12 04:55
Оценка:
Здравствуйте, slavyancheg, Вы писали:

S>Доброго всем времени суток.


S>Здесь есть пример как, как скачать СОС с узла указанного в сертификате пользователя(CRL Distribution Point). После некоторой переработки примера, все работает, в итоге CRL_CONTEXT, в котором можно проверить наличие сертификата в СОС. Проблема в том, если на узле СОС храниться в формате DER, то функция CertCreateCRLContext не создает CRL_CONTEXT, пробовал CryptDecodeObjectEx, но не нашел нужной структуры чтобы перекодировать в PEM.


S>Может кто-нибудь знает, как можно из DER создать CRL_CONTEXT?


S>Спасибо.


Разобрался, такой код поможет:

BYTE *pbData = NULL;
DWORD cbData = 0;
BYTE *pbPem = NULL;
DWORD cbPem = 0;
DWORD pdwSkip = 0;
DWORD pdwFlags = 0;
CryptStringToBinaryA((LPSTR)pbData, cbData, CRYPT_STRING_BASE64X509CRLHEADER, NULL, &cbPem, &pdwSkip, &pdwFlags);
pbPem = (BYTE*)malloc(cbPem);
CryptStringToBinaryA((LPSTR)pbData, cbData, CRYPT_STRING_BASE64X509CRLHEADER, pbPem, &cbPem, &pdwSkip, &pdwFlags);
if(!cbPem)
    pCRL = CertCreateCRLContext(X509_ASN_ENCODING, pbData, cbData);
else
    pCRL = CertCreateCRLContext(X509_ASN_ENCODING, pbPem, cbPem);
free(pbData);
free(pbPem);
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.