C #, MEF - подписывать доверенные плагины для уменьшения злоупотреблений - PullRequest
4 голосов
/ 10 мая 2010

У меня есть программа, которая расширяется с помощью плагинов с помощью Microsoft Extensibility Framework. Но я не хочу, чтобы ненадежные источники выдавали плагины, которые могут быть небезопасными. Поэтому я хочу подписать плагины (возможно, с помощью встроенной подписи Visual Studio) и проверить, заслуживают ли плагины доверия при запуске программы.

Я не нашел способа проверить подпись DLL изнутри C #. И также есть проблема, что я загружаю плагины с DirectoryCatalog. Невозможно определить, какой плагин из какого файла. Кто-нибудь знает способ сделать это?

Спасибо за любую помощь, Marks

1 Ответ

3 голосов
/ 10 мая 2010

Вы не сможете использовать Каталог каталогов. Вам нужно будет отфильтровать сборки самостоятельно, основываясь на том, правильно ли они подписаны. Вы можете перебирать файлы в каталоге и вызывать AssemblyName.GetAssemblyName для каждого. Затем посмотрите на свойство KeyPair AssemblyName, чтобы определить, подписана ли сборка ключом, которому вы доверяете. Если это так, то создайте AssemblyCatalog для этого класса и добавьте его в AggregateCatalog , который вы передадите в контейнер.

Вот сообщение в блоге с примером того, как это сделать: Как контролировать, кто может писать расширения для вашего приложения MEF

...