2016-12-18 5 views
0

Я подключился к точке распространения списка отзыва сертификатов MS PKI и получил CRLКак извлечь список серийных номеров из списка отзыва сертификатов на C# без использования сторонних библиотек?

Какой самый простой способ извлечь список серийных номеров из CRL без использования сторонних библиотек?

ответ

0

Вам придется развернуть CRL с помощью неуправляемых функций CryptoAPI (через p/invoke, конечно). Как правило, вы будете иметь к следующему высокого уровня шаг за шагом:

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

Не забудьте освободить указатель CRL_CONTEXT структуры, вызвав CertFreeCRLContext функцию, когда закончите, чтобы предотвратить утечку памяти.

Смежные вопросы