Я пытаюсь определить лучший метод для подписи кода исполняемого файла с помощью Bouncy Castle, управляемого кода или не управляемого кода из С#. Поскольку CAPICOM теперь устарел, я полагаю, что один из методов SignerSign из mssign32.dll - лучший способ пойти, если это нужно сделать неуправляемым.
Этот ответ (qaru.site/info/549461/...) кажется близким, но он создает файл .p7m, который, будучи правильным размером, не будет работать корректно ( явно переименованный в .exe перед запуском).
Решение, заданное здесь вопросом-вопросом (API/Library для замены signtool.exe), кажется многообещающим и управляемым, но, как говорит Том Кэнэм в комментариях ниже, "похоже, что это для подписания огибаемых сообщений. Authenticode - это подписание кода, что делает этот инструмент signtool, - это разные, поэтому EXE не запускается после подписания". Я получаю ту же ошибку, что и Том, когда я подписываюсь, используя либо вопрос-вопрос, либо ранее упоминавшееся решение Bouncy Castle.
Единственная опция, которую я еще не предпринял, приведен здесь (qaru.site/info/521520/...), и, хотя она выглядит многообещающей, я не уверен, что она использует "authenticode" "подписание кода, в отличие от" огибаемого сообщения ", подписание кода. Этот ответ также имеет преимущество не использовать методы взаимодействия CAPICOM, которые теперь устарели, поэтому я предполагаю, что сегодня сообщаю о результатах, используя этот метод. Если это лучший вариант, может кто-нибудь там поговорить о различиях между SignerSign, SignerSignEx и SignerSignEx2, которые экспортируются из mssign32.dll? Я прочитал, что SignerSignEx2 следует использовать с Windows 8 и выше...
Короче говоря, я хотел бы реплицировать способность signtool.exe подписывать исполняемый файл с заданным файлом .exe,.pfx файлом и паролем следующим образом:
signtool sign /f cert.pfx /p password application.exe
Я ищу лучший вариант для программного подписи кода исполняемого файла (если это имеет значение), используя подпись подписи подлинности, и я предпочел бы использовать надувной замок или управляемый код, если это возможно, хотя я буду использовать что-то неуправляемое, если оно работает и в настоящее время не рекомендуется.
Спасибо!