Как программно применять цифровые подписи Authenticode с метками времени к сборкам.NET без внешних библиотек или инструментов, использующих.NET?

Мне нужно написать приложение.NET, которое можно экспортировать в.NET Framework 4.0.x, .NET Standard 2.0 и.NET Core 2.2, которое может подписывать сборки.NET (EXE, DLL) с использованием "формата" Authenticode с X509Certificate2 объекты.

До сих пор я нашел решения, которые используют приложение SignTool, или CryptUIWizDigitalSign API, который использует SignerSignEx API. Оба метода не совместимы с требованиями проекта. Сборка может быть экспортирована для целей, упомянутых в первом абзаце, но не работает с операционной системой, отличной от Windows XP и выше, или с Windows XP и выше, не относящимися к рабочему столу.

Я знаю, как просто создавать подписи для больших двоичных объектов, используя управляемый код.NET Framework/Standard/Core, но простое добавление подписи к сборке может привести к поломке всей сборки, поскольку отсутствует разметка Authenticode.

Есть ли документация Authenticode о том, как проектируется формат, чтобы я мог переопределить формат с помощью управляемого кода? Как насчет отметки времени, которая включена в стандарт Authenticode?

Или уже доступно управляемое решение, а я просто еще не нашел его?

Приложение должно быть написано на VB.NET или C#. Так что подсказки для обоих языков приветствуются.

0 ответов

Другие вопросы по тегам