что происходит с exe, когда мы его подписываем? - PullRequest
4 голосов
/ 27 сентября 2010

После подписания exe с помощью VeriSign, если мы щелкнем правой кнопкой мыши по exe, мы увидим вкладку «цифровая подпись», которая предоставляет информацию о сертификате.Где именно эта информация будет храниться?Я имею в виду, как операционная система узнает, какой сертификат связан с каким файлом?Есть ли что-то встроенное в exe при подписании?Как я могу написать код C # для извлечения сертификата из подписанного exe?

Любая помощь очень ценится.

Обновление: я решил проблему, хотя я не смог найти, как именно хранятся отношения сертификата со сборкой,Мы можем создать объект X509Certificate, передав путь сборки.Моей задачей было просто получить серийный номер и владельца.Следующий код, который я написал для этого.

 X509Certificate cert = X509Certificate.CreateFromSignedFile("Solo4Orchestra.exe");
            MessageBox.Show(cert.Subject.Split(new char[1]{','})[3].Replace("O=",""));
            MessageBox.Show(cert.GetSerialNumberString());

Спасибо.Akie

Ответы [ 2 ]

1 голос
/ 27 сентября 2010

Формат подписи переносимого исполняемого файла Windows Authenticode может дать вам некоторую информацию о двоичном формате.

Существует Windows API для проверки подписи, CryptQueryObject () . Может быть, для этого есть и .NET API, но, видимо, нет: в соответствующей статье MSDN с примером кода для получения списка отзыва также используются вызовы Windows API, как это выглядит: Как получить информацию из CRL (.NET) (может быть хорошей отправной точкой, поскольку он реализует оболочку для этой функции).

0 голосов
/ 27 сентября 2010

Как уже упоминалось выше, это формат подписи Authenticode. Насколько я знаю, наши PKIBlackbox компоненты являются единственными, которые поддерживают Authenticode (как подпись, так и подтверждение) в .NET.

...