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

Обновлен: Ноябрь 2007

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

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

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

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

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

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

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

-Pb [y|n]

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

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

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

-q[uiet]

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

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

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

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

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

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

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

-Rh сборка

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

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

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

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

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

-T[p] сборка

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

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

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

-TSassembly infile

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

-TSc assembly container

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

-v сборка

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

-vf сборка

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

-Vl

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

-Vr сборка [список_пользователей] [входной_файл]

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

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

-Vu сборка

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

-Vx

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

-?

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

k5b5tt23.alert_note(ru-ru,VS.90).gifПримечание.

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

Заметки

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

Примеры

В следующей команде создается новая пара случайных ключей, которая сохраняется в файле 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

См. также

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

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

Ссылки

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

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

Командная строка пакета SDK