Sn.exe (средство строгих имен)
Программа строгих имен (Sn.exe) позволяет подписывать сборки строгими именами. Программа Sn.exe предусматривает параметры для управления ключами, создания подписи и ее проверки.
Строгие имена не являются средством обеспечения безопасности. Они служат только для однозначной идентификации.
Дополнительные сведения о строгом именовании и сборках со строгими именами см. в разделах Сборки со строгими именами и Практическое руководство. Подписание сборки строгим именем.
Программа строгих имен автоматически устанавливается вместе с Visual Studio. Для запуска этого средства используйте Командную строку разработчика или PowerShell для разработчиков в Visual Studio.
На 64-разрядных компьютерах можно запустить 32-разрядную версию программы Sn.exe через командную строку разработчика для Visual Studio и 64-разрядную версию через командную строку Visual Studio x64 Win64.
В командной строке введите следующее.
Синтаксис
Параметры
Параметр Описание -a identityKeyPairFile signaturePublicKeyFile Создает данные AssemblySignatureKeyAttribute для переноса из файла ключа удостоверения в ключ подписи. -ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Создает данные AssemblySignatureKeyAttribute для переноса из контейнера ключей ключа удостоверения в ключ подписи. -c [csp] Задается поставщик служб шифрования (CSP), используемый по умолчанию для подписывания строгим именем. Этот параметр применяется к компьютеру в целом. Если имя поставщика служб шифрования не задано, программа Sn.exe удалит текущее значение. -d container Удаляет указанный контейнер ключей из поставщика служб шифрования со строгими именами. -D assembly1 assembly2 Проверяет, что две сборки отличаются только подписью. Данный подход часто используется как средство проверки после того, как сборка была повторно подписана с помощью другой пары ключей. -e assembly outfile Извлекает открытый ключ из сборки assembly и записывает его в файл outfile. -h Отображает синтаксис команд и параметров программы. -i infile container Устанавливает в указанный контейнер ключей пару ключей из файла infile. Контейнер ключей располагается в поставщике служб шифрования со строгими именами. -k [keysize] outfile Создает новый ключ RSACryptoServiceProvider указанного размера и записывает его в указанный файл. В файл записываются и открытый, и закрытый ключи.
Если размер ключа не задан, по умолчанию создается 1024-разрядный ключ при условии, что установлен усовершенствованный поставщик служб шифрования (Microsoft); в противном случае создается 512-разрядный ключ.
Программа Sn.exe вычисляет токен с помощью функции хэширования открытого ключа. В целях экономии места среда CLR сохраняет токены открытого ключа в манифесте как часть ссылки на другую сборку при записи зависимости от сборки со строгим именем. При указании параметра -tp наряду с токеном отображается открытый ключ. Если атрибут AssemblySignatureKeyAttribute был применен к сборке, токен предназначается для ключа удостоверения, и отображаются имя алгоритма хэширования и ключ удостоверения.
Программа Sn.exe вычисляет токен с помощью функции хэширования открытого ключа. В целях экономии места среда выполнения сохраняет токены открытого ключа в манифесте как часть ссылки на другую сборку при записи зависимости от сборки со строгим именем. При указании параметра -Tp наряду с токеном отображается открытый ключ. Если атрибут AssemblySignatureKeyAttribute был применен к сборке, токен предназначается для ключа удостоверения, и отображаются имя алгоритма хэширования и ключ удостоверения.
Все параметры программы Sn.exe зависят от регистра и должны вводиться в точном соответствии с инструкциями выше, чтобы программа их правильно распознала.
Примечания
Параметры -R и –Rc можно использовать для сборок с отложенной подписью. При этом во время компиляции задается только открытый ключ, а подпись выполняется позднее, когда становится известен закрытый ключ.
Для параметров (например, -Vr) , которые осуществляют запись в защищенные ресурсы, такие как реестр, программу SN.exe следует запускать от имени администратора.
Средство строгих имен поддерживает пары открытого и закрытого ключей, созданные с помощью идентификатора алгоритма AT_SIGNATURE . При использовании пар открытого и закрытого ключей, созданных с помощью алгоритма AT_KEYEXCHANGE , возникает ошибка.
Примеры
Следующая команда создает новую пару случайных ключей, которая сохраняется в файле keyPair.snk .
Следующая команда сохраняет ключ из файла keyPair.snk в контейнере MyContainer поставщика служб шифрования со строгими именами.
Следующая команда извлекает открытый ключ из файла keyPair.snk и сохраняет его в файле publicKey.snk .
Следующая команда отображает открытый ключ и его токен, которые содержатся в файле publicKey.snk .
Следующая команда проверяет сборку MyAsm.dll .
Следующая команда удаляет MyContainer из поставщика служб шифрования со строгими именами, используемого по умолчанию.