Это академический вопрос, пытающийся понять новый материал. Не академический в смысле формальной школы, а в смысле непрерывного образования и желающий получить контроль над областью развития, которой я раньше не подвергался.Чтение исполнительной сборки подпись pfx/cert
Итак, в моем понимании я создаю сборку и «подписывая ее», я создал сильное имя/X509Certificate.
Поэтому я создаю пустой winapp. Я перехожу к свойствам проекта на вкладке подписания и подписываю сборку с помощью пароля.
Файл test.pfx добавлен в мой проект.
В форме загрузки я затем выполняю этот код, думая, что увижу, что мой сборщик подписывает сертификат только я не так, как это null ... ??
Assembly ass = Assembly.GetExecutingAssembly();
Module mod = ass.GetModules().First();
X509Certificate cert = mod.GetSignerCertificate();
сертификат - null. Почему это? Я делаю что-то неправильно, чтобы получить сертификат, или у меня что-то смешалось в голове, и то, что я ищу, не там, где я смотрю?
Спасибо
Редактировать
@p е р я использовал следующие после прочтения вашего поста и MSDN.
SignTool знак/С: /....../ MyFile.exe
SignTool знак/F C: /....../ MyCert.pfx/р MyPassword С:/....../MyFile.exe
Оба говорят, что они завершены с успехом. Однако при запуске блока кода выше выдает нулевой сертификат.
Теперь, что я, возможно, пропустил или делаю неправильно, я работаю с версией отладки Visual Studio, и это путь к exe, который я использовал для подписания.
с: .... \ LicensedControlTest \ OBJ \ x86 \ Debug
Существует два разных типа подписи, которые часто путаются. Подписание сильного имени и подписание кода (т. Е. Цифровая подпись, такая как Authenticode). См. [This] (http://blogs.msdn.com/b/ericlippert/archive/2009/09/03/what-s-the-difference-part-five-certificate-signing-vs-strong-naming.aspx). Сертификат присутствует только для последнего подписания. Вы просто применили сильное имя к сборке. –
@mikez Спасибо. Статья Эрика помогла объяснить различия. – GPGVM