Практическое руководство. Создание пары открытого и закрытого ключей
Обновлен: Ноябрь 2007
Для подписи сборки строгим именем необходимо иметь пару ключей — открытый и закрытый. Эта пара открытого и закрытого ключей шифрования используется в процессе компиляции для создания сборки со строгим именем. Пару ключей можно создать с использованием средства для работы со строгими именами (Sn.exe). Файлы пары ключей обычно имеют расширение SNK.
Примечание. |
---|
В Visual Studio 2005 интегрированные среды разработки C#, Visual Basic и Visual J# позволяют создавать пары ключей без использования средства Sn.exe и подписывать сборки. У этих интегрированных сред разработки есть вкладка Подпись в конструкторе проектов. Интегрированная среда разработки Visual C++ позволяет указать расположение уже существующего файла ключа на странице свойств Дополнительно подраздела Компоновщик в разделе Свойства конфигурации окна "Страницы свойств". Использование AssemblyKeyFileAttribute для идентификации файлов пары ключей в Visual Studio 2005 было признано устаревшим. |
Создание пары ключей
В командной строке введите следующую команду:
sn –k <имя файла>
В этой команде имя файла — имя выходного файла, содержащего пару ключей.
В следующем примере создается пара ключей с именем sgKey.snk.
sn -k sgKey.snk
Если необходима отложенная подпись сборки и имеется контроль над всей парой ключей (а это вероятно только в сценариях проверки), для создания пары ключей и получения из нее открытого ключа для записи его в отдельный файл можно использовать следующие команды. Сначала создается пара ключей:
sn -k keypair.snk
- Затем выполняется извлечение открытого ключа из пары и копирование его в отдельный файл:
sn -p keypair.snk public.snk
- После создания пары ключей необходимо поместить файл туда, где его смогут найти средства подписи строгого имени.
При подписи сборки строгим именем, компоновщик сборок (Al.exe) выполняет поиск файла ключа относительно текущей и выходной папки. При использовании компиляторов, работающих в режиме командной строки, достаточно просто скопировать ключ в текущий каталог, содержащий модули кода.
При использовании более ранней версии Visual Studio, в свойствах проекта которой нет вкладки Подпись, рекомендуемым расположением файла ключа является каталог проекта с атрибутом файла, заданным следующим образом:
<Assembly: AssemblyKeyFileAttribute("..\..\key.snk")>
[assembly: AssemblyKeyFileAttribute(@"..\..\key.snk")]