Sn.exe (Ferramenta de Nome Forte)

 

A ferramenta Nome Forte (Sn.exe) assina assemblies com nomes fortes. Sn.exe oferece opções para o gerenciamento de chaves, geração de assinaturas e verificação de assinaturas.

Para obter mais informações sobre nomes fortes e assemblies de nome forte, consulte Assemblies de nomes fortes e Como assinar um assembly com um nome forte.

A ferramenta Nome Forte é instalada automaticamente com o Visual Studio. Para iniciar a ferramenta, use o Prompt de comando do desenvolvedor (ou o Prompt de comando Visual Studio no Windows 7). Para obter mais informações, consulte Prompt de comando do desenvolvedor para o Visual Studio.

System_CAPS_noteObservação

Em computadores de 64 bits, execute a versão de 32 bits do Sn.exe usando o Prompt de comando do Visual Studio e a versão de 64 bits usando o Prompt de comando do Visual Studio x64 Win64.

No prompt de comando, digite o seguinte:


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

Opção

Descrição

-aidentityKeyPairFilesignaturePublicKeyFile

Gera dados AssemblySignatureKeyAttribute para migrar a chave de identidade para a chave de assinatura de um arquivo.

-acidentityPublicKeyFileidentityKeyPairContainersignaturePublicKeyFile

Gera dados AssemblySignatureKeyAttribute para migrar a chave de identidade para a chave de assinatura de um contêiner de chave.

-c [csp]

Define o provedor de serviços de criptografia (CSP) padrão a ser usado na assinatura de nome forte. Essa configuração se aplica a todo o computador. Se você não especificar um nome CSP, Sn.exe limpará a configuração atual.

-d container

Exclui o contêiner de chave especificado do CSP de nome forte.

-D assembly1 assembly2

Verifica se dois assemblies são diferentes apenas na assinatura. Isso costuma ser usado como uma verificação após um assembly ser assinado novamente com um par de chaves diferente.

-e saída de assembly

Extrai a chave pública do assembly e a armazena no outfile.

-h

Exibe sintaxe de comando e opções para a ferramenta.

-i infile container

Instala o par de chaves de infile no contêiner de chave especificado. O contêiner de chave reside no CSP de nome forte.

-k [keysize] outfile

Gera uma nova chave RSACryptoServiceProvider com o tamanho especificado e o grava no arquivo especificado. As chaves pública e privada são gravadas no arquivo.

Se não especificar um tamanho de chave, uma chave 1.024 bits será gerada por padrão se você tiver o provedor criptográfico aprimorado da Microsoft instalado; do contrário, uma chave de 512 bits será gerada.

O parâmetro keysize dá suporte a tamanhos de chave de 384 a 16.384 bits em incrementos de 8 bits se você tiver o provedor criptográfico aprimorado da Microsoft instalado. Ele dá suporte a tamanhos de chave de 384 a 512 bits em incrementos de 8 bits se você tiver o provedor criptográfico de base da Microsoft instalado.

-m [y|n]

Especifica se os contêineres de chave são específicos do computador ou do usuário. Se você especificar y, os contêineres de chave serão específicos do computador. Se você especificar n, os contêineres de chave serão específicos do usuário.

Se nem y nem n for especificado, essa opção exibirá a configuração atual.

-o infile [outfile]

Extrai a chave pública do infile e a armazena em um arquivo .csv. Uma vírgula separa cada byte da chave pública. Esse formato é útil para referências codificadas para chaves como matrizes inicializadas no código-fonte. Se você não especificar um outfile, essa opção colocará a saída na Área de Transferência.

System_CAPS_noteObservação

Essa opção não verifica se a entrada é somente uma chave pública. Se o infile contiver um par de chaves com uma chave privada, a chave privada também será extraída.

-p infile outfile [hashalg]

Extrai a chave pública do par de chaves em infile e a armazena em outfile. Como opção, usando o algoritmo RSA especificado por hashalg. Essa chave pública pode ser usado para assinar com atraso um assembly usando o /delaysign+ e /keyfile opções do Assembly Linker (Al.exe). Quando um assembly é assinado com atraso, somente a chave pública é definida no tempo de compilação e o espaço é reservado no arquivo para a assinatura a ser adicionada posteriormente, quando o chave privada será conhecida.

-pc contêiner outfile [hashalg

Extrai a chave pública do par de chaves em container e a armazena em outfile. Se você usar a opção hashalg, o algoritmo RSA será usado para extrair a chave pública.

-Pb [y|n]

Especifica se a política de bypass de nome forte é imposta. Se você especificar y, os nomes fortes de assemblies de confiança total não serão validados em um AppDomain de confiança total. Se você especificar n, a correção dos nomes fortes será validada, mas não para um nome forte específico. O StrongNameIdentityPermission não tem efeito sobre assemblies de confiança total. Você deve realizar sua própria verificação de uma correspondência de nome forte.

Se nem y nem n for especificado, essa opção exibirá a configuração atual. O padrão é y.

System_CAPS_noteObservação

Em computadores 64 bits, você deve definir esse parâmetro nas instâncias de 32 e 64 bits de Sn.exe.

-q[uiet]

Especifica o modo silencioso; suprime a exibição de mensagens com êxito.

-R[aassembly infile

Assina novamente um assembly assinado anteriormente ou com atraso usando o par de chaves em infile.

Se -Ra for usado, os hashes serão recomputados para todos os arquivos no assembly.

-Rc[aassembly container

Assina novamente um assembly assinado anteriormente ou atraso com o par de chaves em contêiner.

Se -Rca for usado, os hashes serão recomputados para todos os arquivos no assembly.

-Rh assembly

Recomputa hashes para todos os arquivos no assembly.

-t[p] infile

Exibe o token da chave pública armazenada em infile. O conteúdo de infile deve ser uma chave pública gerada anteriormente com base em um arquivo de par de chaves usando-se -p. Não use a opção -t[p] para extrair o token diretamente de um arquivo de par de chaves.

Sn.exe computa o token usando uma função de hash da chave pública. Para economizar espaço, o Common Language Runtime armazena tokens de chave pública no manifesto como parte de uma referência a outro assembly quando registra uma dependência para um assembly com um nome forte. A opção -tp exibe a chave pública além do token. Se o atributo AssemblySignatureKeyAttribute tiver sido aplicado ao assembly, o token será para a chave de identidade, e o nome do algoritmo de hash e a chave de identidade será exibida.

Essa opção não verifica a assinatura do assembly e não deve ser usada para tomar decisões de confiança. Essa opção exibe apenas os dados brutos do token de chave pública.

-T[p] assembly

Exibe o token de chave pública para assembly. O assembly deve ser o nome de um arquivo que contém um manifesto do assembly.

Sn.exe computa o token usando uma função de hash da chave pública. Para economizar espaço, o tempo de execução armazena tokens de chave pública no manifesto como parte de uma referência a outro assembly quando registra uma dependência para um assembly com um nome forte. A opção -Tp exibe a chave pública além do token. Se o atributo AssemblySignatureKeyAttribute tiver sido aplicado ao assembly, o token será para a chave de identidade, e o nome do algoritmo de hash e a chave de identidade será exibida.

Essa opção não verifica a assinatura do assembly e não deve ser usada para tomar decisões de confiança. Essa opção exibe apenas os dados brutos do token de chave pública.

-TSassemblyinfile

Assina o assembly assinado ou parcialmente assinado com o par de chaves em infile.

-TScassemblycontainer

Assina o assembly assinado ou parcialmente assinado com o par de chaves no contêiner de chave container.

-v assembly

Verifica o nome forte em assembly, em que assembly é o nome de um arquivo que contém um manifesto de assembly.

-vf assembly

Verifica o nome forte em assembly. Ao contrário de - v opção, -vf força a verificação mesmo se não estiver usando o - Vr opção.

- Vk regfile.regassembly [userlist] [infile]

Cria as entradas de um arquivo de registro (.reg) que é possível usar para registrar o assembly especificado ignorar a verificação. As regras de nomenclatura do assembly que se aplicam à opção -Vr se aplicam também a –Vk. Para obter informações sobre as opções userlist e infile, consulte a opção –Vr.

-Vl

Lista as configurações atuais da verificação de nome forte neste computador.

- Vr assembly [userlist] [infile]

Registra assembly para ignorar a verificação. Também é possível especificar uma lista separada por vírgulas de nomes de usuário a que a verificação para ignorar deve ser aplicada. Se você especificar infile, a verificação permanecerá habilitada, mas a chave pública em infile será usada em operações de verificação. É possível especificar assembly na forma *, strongname para registrar todos os assemblies com o nome forte especificado. Para strongname, especifique a cadeia de caracteres de dígitos hexadecimais que representam o formulário indexado da chave pública. Consulte as opções -t e -T para exibir o token de chave pública.

System_CAPS_cautionCuidado

Use essa opção somente durante o desenvolvimento. A adição de um conjunto à lista de verificação para ignorar cria uma vulnerabilidade de segurança. Um assembly mal-intencionado pode usar o nome do assembly totalmente especificado (nome de assembly, versão, cultura e token de chave pública) do assembly adicionado à lista de verificação para forjar sua identidade. Isso permitiria que o assembly mal-intencionado também ignorasse a verificação.

-Vu assembly

Cancela o registro de assembly para ignorar a verificação. As mesmas regras de nomenclatura do assembly que se aplicam a -Vr se aplicam a -Vu.

-Vx

Remove todas as entradas para ignorar a verificação.

-?

Exibe sintaxe de comando e opções para a ferramenta.

System_CAPS_noteObservação

Todas as opções de Sn.exe diferenciam maiúsculas de minúsculas e devem ser digitadas exatamente conforme mostrado para serem reconhecidas pela ferramenta.

As opções -R e –Rc são úteis com assemblies assinados com atraso. Nesse cenário, apenas a chave pública foi definida no tempo de compilação e a assinatura será realizada posteriormente, quando a chave privada será conhecida.

System_CAPS_noteObservação

Parâmetros (por exemplo, –Vr) que gravar em recursos protegidos, como o registro, execute SN.exe como administrador.

O comando a seguir cria um novo par de chaves aleatório e o armazena em keyPair.snk.

sn -k keyPair.snk

O comando a seguir armazena a chave em keyPair.snk no contêiner MyContainer no CSP de nome forte.

sn -i keyPair.snk MyContainer

O comando a seguir extrai a chave pública de keyPair.snk e a armazena em publicKey.snk.

sn -p keyPair.snk publicKey.snk

O comando a seguir exibe a chave pública e o token da chave pública contidos em publicKey.snk.

sn -tp publicKey.snk

O comando a seguir verifica o assembly MyAsm.dll.

sn -v MyAsm.dll

O comando a seguir exclui MyContainer do CSP padrão.

sn -d MyContainer
Mostrar: