Sn.exe (средство строгих имен)

Средство для работы со строгими именами (Sn.exe) позволяет подписывать сборки строгими именами. Программа Sn.exe предусматривает параметры для управления ключами, генерации подписи и ее проверки.

ПримечаниеПримечание

На 64-разрядных компьютерах запускайте как 32-разрядную версию Sn.exe, используя командную строку Visual Studio, так и 64-разрядную версию с помощью командной строки Visual Studio x 64 Win64.

Это средство устанавливается автоматически с Visual Studio и пакетом SDK Windows. Чтобы запустить инструмент, мы рекомендуем использовать командную строку Visual Studio или командную строку пакета Windows SDK (командную оболочку). Эти служебные программы позволяют легко работать с инструментом, не переходя к папке установки. Дополнительные сведения см. в разделе Командная строка Visual Studio и пакета Windows SDK.

  • Если на компьютере установлена среда Visual Studio: на панели задач последовательно щелкните Start, All Programs, Visual Studio, Visual Studio Tools и Visual Studio Command Prompt.

    – или –

    Если на компьютере установлен пакет Windows SDK: на панели задач щелкните Start, выберите All Programs и откройте папку с пакетом Windows SDK, затем щелкните Command Prompt (или CMD Shell).

  • В командной строке введите следующее:

sn [-quiet][option [parameter(s)]]

Параметры

Параметр

Описание

-c [csp]

Задает поставщика служб шифрования (CSP), используемого по умолчанию для подписания строгим именем. Этот параметр применяется к компьютеру в целом. Если имя поставщика не задается, то при использовании Sn.exe текущее значение будет очищено.

-d контейнер

Удаляет указанный контейнер ключей из поставщика служб шифрования со строгими именами.

-D сборка1 сборка2

Проверяет, что две сборки отличаются только лишь подписью. Данный подход часто используется как средство проверки после того, как сборка была повторно подписана с помощью другой пары ключей.

-e выходной_файл_сборки

Извлекает открытый ключ из сборки сборка и записывает его в выходной_файл.

-h

Отображает синтаксис команд и параметры программы.

-i входной_файл контейнер

Устанавливает в указанный контейнер ключей пару ключей из файла входной_файл. Контейнер ключей располагается в поставщике служб шифрования со строгими именами.

-k [размер_ключа] выходной_файл

Создает новый ключ RSACryptoServiceProvider указанного размера и записывает его в указанный файл. В файл записываются и открытый, и закрытый ключи.

Если размер ключа не задан, по умолчанию создается 1024-разрядный ключ при условии, что установлен усовершенствованный поставщик служб шифрования (Microsoft); в противном случае создается 512-разрядный ключ.

Параметр размер_ключа поддерживает ключи длиной от 384 до 16 384 бит с приращениями по 8 бит, если установлен усовершенствованный поставщик служб шифрования (Microsoft). Если установлен базовый поставщик служб шифрования (Microsoft), поддерживаются ключи длиной от 384 до 512 бит с приращениями по 8 бит.

-m [y|n]

Задает зависимость контейнера ключей от компьютера или пользователя. В случае значения y контейнеры ключей зависят от компьютера. В случае значения n контейнеры ключей зависят от пользователя.

Если ни y, ни n не задано, то при использовании этого параметра будет отображено текущее значение.

-o входной_файл [выходной_файл]

Извлекает открытый ключ из файла входной_файл и сохраняет его в CSV-файле. Байты открытого ключа разделяются запятыми. Этот формат удобно применять для непосредственного использования в исходном коде ссылок на ключи в виде инициализированных массивов. Если выходной_файл не указывается, то при использовании этого параметра выходные данные будут помещены в буфер обмена.

ПримечаниеПримечание
Данный параметр не проверяет, содержится ли во входном файле что-либо, помимо открытого ключа.Если infile содержит пару ключей, в том числе закрытый ключ, последний также извлекается.

-p входной_файл выходной_файл

Извлекает открытый ключ из хранящейся в файле входной_файл пары ключей и записывает его в выходной_файл. Полученный открытый ключ может использоваться для отложенной подписи сборки с помощью параметров /delaysign+ и /keyfile компоновщика сборок (Al.exe). Если применяется отложенная подпись сборки, то во время компиляции устанавливается только открытый ключ, а в файле выделяется место для подписи, которая будет добавлена позже, когда станет известен закрытый ключ.

-pc контейнер выходной_файл

Извлекает открытый ключ из хранящейся в контейнере контейнер пары ключей и записывает его в выходной_файл.

-Pb [y|n]

Указывает, применяется ли политика пропускания строгих имен. В случае значения y строгие имена сборок с полным доверием не подвергаются проверке при загрузке в AppDomain с полным доверием. В случае значения n строгие имена проверяются на корректность, но не на соответствие конкретному строгому имени. Класс StrongNameIdentityPermission к сборкам с полным доверием не применяется. Проверку на соответствие строгих имен необходимо выполнять отдельно.

Если не задано ни y, ни n, отображается текущее значение. По умолчанию используется значение y.

ПримечаниеПримечание
На 64-разрядных компьютерах значение этого параметра необходимо задавать и в 32-разрядном, и в 64-разрядном экземплярах Sn.exe.

-q[uiet]

Определяет "тихий" режим работы; подавляет отображение сообщений об успешно выполненных операциях.

-R[aсборка входной_файл

Повторно подписывает ранее подписанную сборку или сборку с отложенной подписью с помощью пары ключей, содержащейся в файле входной_файл.

Если используется параметр -Ra, для всех файлов сборки повторно вычисляются хэш-коды.

-Rc[aсборка контейнер

Повторно подписывает ранее подписанную сборку или сборку с отложенной подписью с помощью пары ключей, содержащихся в контейнере контейнер.

Если используется параметр -Rca, для всех файлов сборки повторно вычисляются хэш-коды.

-Rh сборка

Повторно рассчитывает хэш-коды для всех файлов сборки.

-t[p] входной_файл

Отображает маркер открытого ключа, хранящегося в файле входной_файл. Входной_файл должен содержать открытый ключ, ранее сгенерированный из файла пары ключей с использованием параметра -p. Не используйте параметр -t[p] для непосредственного извлечения маркера из файла пары ключей.

Sn.exe вычисляет маркер путем использования функции хэширования открытого ключа. В целях экономии места общеязыковая среда выполнения сохраняет маркеры открытого ключа в манифесте как часть ссылки на другую сборку при записи зависимости от сборки, имеющей строгое имя. Параметр -tp, кроме маркера, отображает и открытый ключ.

Следует иметь в виду, что данный параметр не проверяет подпись сборки и не должен использоваться при принятии решений о доверии. Этот параметр лишь отображает необработанные данные маркера открытого ключа.

-T[p] сборка

Отображает токен открытого ключа для сборки. Значением параметра assembly должно быть имя файла, содержащего манифест сборки.

Sn.exe вычисляет маркер путем использования функции хэширования открытого ключа. В целях экономии места среда выполнения сохраняет маркеры открытого ключа в манифесте как часть ссылки на другую сборку при записи зависимости от сборки, имеющей строгое имя. Параметр -Tp, кроме маркера, отображает и открытый ключ.

Следует иметь в виду, что данный параметр не проверяет подпись сборки и не должен использоваться при принятии решений о доверии. Этот параметр лишь отображает необработанные данные маркера открытого ключа.

-TSassembly infile

Выполняет пробное подписание полностью или частично подписанной сборки assembly с использованием пары ключей из файла infile.

-TSc assembly container

Выполняет пробное подписание полностью или частично подписанной сборки assembly с использованием пары ключей из контейнера ключей container.

-v сборка

Проверяет строгое имя в сборке сборка, где сборка представляет собой имя файла, содержащего манифест сборки.

-vf assembly

Проверяет строгое имя в сборке assembly. В отличие от параметра -v при использовании параметра -vf проверка производится, даже если она отключена с помощью параметра -Vr.

-Vl

Выводит текущие параметры проверки строгих имен на данном компьютере.

-Vr assembly [userlist] [infile]

Регистрирует сборку сборка для пропуска проверки. Кроме того, можно задать разделенный запятыми список имен пользователей. Если задан входной_файл, проверка остается включенной, но в ней используется открытый ключ, находящийся в файле входной_файл. Сборка может быть задана в формате *, строгое_имя, чтобы зарегистрировать все сборки, имеющие указанное строгое имя. Строгое_имя должно быть задано в виде строки шестнадцатеричных цифр, представляющих открытый ключ в форме маркера. Сведения об отображении маркера открытого ключа см. в описании параметров -t и -T.

Предупреждающее замечаниеВнимание
Используйте этот параметр только во время разработки.При добавлении сборки в список непроверяемых сборок создается уязвимость в системе безопасности.Вредоносная сборка может использовать полное имя сборки (имя сборки, версия, язык и региональные параметры, маркер открытого ключа), добавленное в список непроверяемых, с целью подделки ее идентификации.Данный подход позволяет вредоносной сборке также избежать проверки.

-Vu assembly

Отменяет пропуск проверки для сборки сборка. Правила использования имен сборок для параметра -Vu те же, что и для параметра -Vr.

-Vx

Удаляет все данные, относящиеся к пропуску проверки.

-?

Отображает синтаксис команд и параметры программы.

ПримечаниеПримечание

Все параметры Sn.exe зависят от регистра и должны быть введены в точности так, как было показано выше, для правильного их распознавания данной программой.

Заметки

Параметры -R и –Rc могут использоваться для сборок с отложенной подписью. При этом во время компиляции устанавливается только открытый ключ, а подпись выполняется позднее, когда становится известен закрытый ключ.

ПримечаниеПримечание

Для параметров (например, –Vr), которые осуществляют запись в защищенные ресурсы, такие как реестр, запускайте SN.exe от имени администратора.

Примеры

В следующей команде создается новая пара случайных ключей, которая сохраняется в файле keyPair.snk.

sn -k keyPair.snk

Следующая команда сохраняет ключ из файла keyPair.snk в контейнере MyContainer поставщика служб шифрования со строгими именами.

sn -i keyPair.snk MyContainer

Следующая команда извлекает открытый ключ из файла keyPair.snk и сохраняет его в файле publicKey.snk.

sn -p keyPair.snk publicKey.snk

Следующая команда отображает открытый ключ и его маркер, которые содержатся в файле publicKey.snk.

sn -tp publicKey.snk

Следующая команда проверяет сборку MyAsm.dll.

sn -v MyAsm.dll

Следующая команда удаляет MyContainer из поставщика служб шифрования со строгими именами, используемого по умолчанию.

sn -d MyContainer

См. также

Ссылки

Al.exe (компоновщик сборок)

Командная строка Visual Studio и пакета Windows SDK

Основные понятия

Сборки со строгими именами

Другие ресурсы

Инструменты .NET Framework

Журнал изменений

Дата

Журнал

Причина

Апрель 2011

Добавлены сведения об использовании командных строк Visual Studio и Windows SDK.

Улучшение информации.

Август 2010

Добавлены сведения о запуске средства на 64-разрядных компьютерах.

Улучшение информации.