Partilhar via


Como: Criar um par de chaves público-privado

Para assinar um assembly com um nome forte, você deve ter um par de chaves pública/privada. Esse par de chaves criptográficas públicas e privadas é usado durante a compilação para criar um assembly de nome forte. Você pode criar um par de chaves usando a ferramenta Nome forte (Sn.exe). Os arquivos de par de chaves geralmente têm uma extensão .snk .

Nota

No Visual Studio, as páginas de propriedades do projeto C# e Visual Basic incluem uma guia Assinatura que permite selecionar arquivos de chave existentes ou gerar novos arquivos de chave sem usar Sn.exe. No Visual C++, você pode especificar o local de um arquivo de chave existente na página de propriedades Avançado na seção Vinculador da seção Propriedades de configuração da janela Páginas de propriedades . O uso do atributo para identificar pares de arquivos de chave tornou-se obsoleto a partir do AssemblyKeyFileAttribute Visual Studio 2005.

Criar um par de chaves

Para criar um par de chaves, em um prompt de comando, digite o seguinte comando:

sn –k<nome do arquivo>

Neste comando, nome do arquivo é o nome do arquivo de saída que contém o par de chaves.

O exemplo a seguir cria um par de chaves chamado sgKey.snk.

sn -k sgKey.snk

Se você pretende atrasar a assinatura de um assembly e controlar todo o par de chaves (o que é improvável fora dos cenários de teste), você pode usar os seguintes comandos para gerar um par de chaves e, em seguida, extrair a chave pública dele em um arquivo separado. Primeiro, crie o par de chaves:

sn -k keypair.snk

Em seguida, extraia a chave pública do par de chaves e copie-a para um arquivo separado:

sn -p keypair.snk public.snk

Depois de criar o par de chaves, você deve colocar o arquivo onde as ferramentas de assinatura de nome forte podem encontrá-lo.

Ao assinar um assembly com um nome forte, o Assembly Linker (Al.exe) procura o arquivo de chave relativo ao diretório atual e ao diretório de saída. Ao usar compiladores de linha de comando, você pode simplesmente copiar a chave para o diretório atual que contém seus módulos de código.

Se você estiver usando uma versão anterior do Visual Studio que não tem uma guia Assinatura nas propriedades do projeto, o local do arquivo de chave recomendado é o diretório do projeto com o atributo de arquivo especificado da seguinte maneira:

[assembly:AssemblyKeyFileAttribute("keyfile.snk")];
[assembly:AssemblyKeyFileAttribute("keyfile.snk")]
<Assembly:AssemblyKeyFileAttribute("keyfile.snk")>

Consulte também