Вам придется развернуть CRL с помощью неуправляемых функций CryptoAPI (через p/invoke, конечно). Как правило, вы будете иметь к следующему высокого уровня шаг за шагом:
- CertCreateCRLContext - эта функция возвращает указатель на структуру CRL_CONTEXT.
- Использование
Marshal.PtrToStructure
. NET метод преобразования pCrlInfo
указатель CRL_CONTEXT
структура CRL_INFO
структура.
rgCRLEntry
- массив указателей (размер массива определяется cCRLEntry
членом CRL_INFO
).
- Итерации над этим массивом путем увеличения начального указателя на размер
CRL_ENTRY
Структура.
SerialNumber
член CRL_ENTRY
является массивом байтов. Вы можете напрямую использовать метод Marshal.Copy(IntPtr, Byte[], Int32, Int32)
для копирования неуправляемого массива в управляемый. Это даст вам серийный номер. Повторите шаги 4-5 для каждой записи CRL.
Не забудьте освободить указатель CRL_CONTEXT
структуры, вызвав CertFreeCRLContext функцию, когда закончите, чтобы предотвратить утечку памяти.