Проверка Authenticode с самозаверяющим сертификатом
Если у меня есть самозаверяющий сертификат, которого нет в хранилище доверенных корневых сертификатов компьютера, как я могу проверить, что PE-файл подписан Authenticode, используя этот сертификат, не добавляя этот сертификат в доверенное корневое хранилище?
C# предпочтительнее, но ответ на C++ тоже подойдет.
В Stackru уже есть много похожих вопросов, но ни один из них пока не имеет приемлемого ответа. Это должен быть Authenticode, и я не могу добавить его в хранилище сертификатов. Он также не может быть купленным сертификатом, поскольку ему требуется более длительное время действия (независимо от отметки времени).
Помимо копирования огромного фрагмента кода проверки подписи Mono, я не знаю решения в Win32 или.NET.
1 ответ
Вы можете начать со звонка Get-AuthenticodeSignature
Проверка командлета PowerShell.Status
являетсяValid
илиNotTrusted
и проверяя это.SignerCertificate
на самом деле это ваш сертификат. Если вам нужно более индивидуальное решение, рассмотрите возможность проверки соответствующих источников DLL Authenticode.cs . См. также аналогичный вопрос .