Сборка подписи C# с использованием кода

Я пытаюсь создать свой собственный инструмент для подписи моих сборок с помощью StrongNames, используя только код С#.

Мне удалось сгенерировать подпись и ключи, используя классы .Net RSA в System.Security.Cryptography. Моя проблема на данном этапе заключается в том, чтобы добавить подпись и открытый ключ в манифест сборки.

Возможно ли это вообще с помощью кода, а не с помощью какого-либо инструмента? Обратите внимание, что я хочу подписывать свои сборки вне Visual Studio (во время выполнения), используя только классы .Net Cryptography для создания пар ключей.

Я попытался добавить информацию, используя методы класса AssemblyName в System.Reflection, но не могу зафиксировать изменения (у него есть метод SetPublicKey).

По сути, то, что будет делать мое приложение, похоже на sn.exe. Очень важно, чтобы я мог добавить подпись и ключ в манифест, чтобы другие сборки со строгими именами могли ссылаться на мои.

Если дойдет до этого, как я могу прочитать закрытый и открытый ключи, созданные инструментом sn.exe, я пробовал, но не уверен, какую кодировку использует файл .snk? Если я не могу подписать свои сборки с помощью кода, я буду использовать sn.exe, но по своим причинам я хочу прочитать ключи из файла пары ключей и использовать их с классами RSA.

Любая помощь будет оценена.


person SaltySoda    schedule 30.01.2014    source источник


Ответы (1)


Проект Mono предоставляет собственный sn, который полностью построен на C# и зависит от Mono.Security.dll (который также работает в Windows). Все это с открытым исходным кодом под лицензией MIT.

person poupou    schedule 30.01.2014
comment
Это более или менее то, что я искал, спасибо :) - person SaltySoda; 31.01.2014