Partilhar via


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

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

Observação

No .NET (.NET Core e .NET 5 e posteriores), nomes fortes não têm validação em tempo de execução. A assinatura de nomes fortes é principalmente relevante para cenários de interoperabilidade entre o .NET Framework e o .NET Standard 2.0. Se não estiveres a direcionar o .NET Framework, normalmente não precisas de usar o nome forte da tua assembleia, a menos que a tua organização ou os consumidores assim o exigissem.

Observação

No Visual Studio, as páginas de propriedades do projeto C# e Visual Basic incluem um separador Assinatura que permite selecionar ficheiros de chave existentes ou gerar novos ficheiros de chave sem usar Sn.exe. Em Visual C++, pode especificar a localização de um ficheiro de chave existente na página Avançadas da secção Linker nas Propriedades de Configuração da janela Páginas de Propriedades. A utilização do atributo AssemblyKeyFileAttribute para identificar pares de ficheiros-chave tornou-se obsoleta a partir de Visual Studio 2005.

Crie um par de chaves

Observação

Sn.exe não está incluído no SDK .NET em nenhum sistema operativo. Só está disponível no Windows, onde se obtém instalando o Visual Studio ou o SDK do Windows.

Para criar um par de chaves, num prompt de comandos, escreva o seguinte comando:

sn –k<Nome do ficheiro>

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

O exemplo seguinte cria um par de chaves chamado sgKey.snk.

sn -k sgKey.snk

Se pretende atrasar a assinatura de um assembly e controla todo o par de chaves (o que é improvável fora de cenários de teste), pode usar os seguintes comandos para gerar um par de chaves e depois extrair a chave pública para um ficheiro separado. Primeiro, crie o par de chaves:

sn -k keypair.snk

De seguida, extrai a chave pública do par de chaves e copia-a para um ficheiro separado:

sn -p keypair.snk public.snk

Depois de criar o par de chaves, deve colocar o ficheiro onde as ferramentas de assinatura de nomes fortes o possam encontrar.

Ao assinar um assembly com um nome forte, o Assembly Linker (Al.exe) procura o ficheiro de chave em relação ao diretório atual e ao diretório de saída. Ao usar compiladores de linha de comandos, pode simplesmente copiar a chave para o diretório atual que contém os seus módulos de código.

Se estiver a usar uma versão anterior do Visual Studio que não tem um separador Assinatura nas propriedades do projeto, a localização recomendada do ficheiro-chave é o diretório do projeto com o atributo do ficheiro especificado da seguinte forma:

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

Consulte também