Практическое руководство. Создание пары открытого и закрытого ключей

Для подписи сборки строгим именем необходимо иметь пару, состоящую из открытого и закрытого ключа. Эта пара криптографических ключей используется во время компиляции для создания сборки со строгим именем. Пару ключей можно создать с помощью средства для работы со строгими именами (Sn.exe). Файлы пары ключей обычно имеют расширение SNK.

Примечание.

В Visual Studio страницы свойств проекта C# и Visual Basic включают вкладку Подписывание, которая позволяет выбрать существующие файлы ключей или создать новые файлы ключей без использования 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("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

См. также