Procédure : créer une paire de clés publique/privéeHow to: Create a Public-Private Key Pair

Pour signer un assembly avec un nom fort, vous devez disposer d’une paire de clés publique/privée.To sign an assembly with a strong name, you must have a public/private key pair. Cette paire de clés de chiffrement public et privé est utilisée lors de la compilation pour créer un assembly avec nom fort.This public and private cryptographic key pair is used during compilation to create a strong-named assembly. Vous pouvez créer une paire de clés à l’aide de l’outil Strong Name (Sn.exe).You can create a key pair using the Strong Name tool (Sn.exe). Les fichiers de paire de clés ont généralement une extension .snk.Key pair files usually have an .snk extension.

Notes

Dans Visual Studio, les pages de propriétés de projet C# et Visual Basic présentent un onglet Signature qui vous permet de sélectionner les fichiers de clé existants ou de générer de nouveaux fichiers de clé sans utiliser Sn.exe.In Visual Studio, the C# and Visual Basic project property pages include a Signing tab that enables you to select existing key files or to generate new key files without using Sn.exe. Dans Visual C++, vous pouvez spécifier l’emplacement d’un fichier de clés existant dans la page de propriétés Avancé de la section Éditeur de liens, dans la section Propriétés de Configuration de la fenêtre Pages de propriétés.In Visual C++, you can specify the location of an existing key file in the Advanced property page in the Linker section of the Configuration Properties section of the Property Pages window. L’utilisation de l’attribut AssemblyKeyFileAttribute pour identifier les paires de fichiers de clés est devenue obsolète à partir de Visual Studio 2005.The use of the AssemblyKeyFileAttribute attribute to identify key file pairs has been made obsolete beginning with Visual Studio 2005.

Pour créer une paire de clésTo create a key pair

  1. À l'invite de commandes, tapez la commande suivante :At the command prompt, type the following command:

    sn –k <nom de fichier>sn –k <file name>

    Dans cette commande, nom de fichier est le nom du fichier de sortie contenant la paire de clés.In this command, file name is the name of the output file containing the key pair.

L’exemple suivant crée une paire de clés appelée sgKey.snk.The following example creates a key pair called sgKey.snk.

sn -k sgKey.snk

Si vous avez l’intention de temporiser la signature d’un assembly et que vous contrôlez la paire de clés entière (ce qui est improbable en dehors des scénarios de test), vous pouvez utiliser les commandes suivantes pour générer une paire de clés et ensuite en extraire la clé publique dans un fichier distinct.If you intend to delay sign an assembly and you control the whole key pair (which is unlikely outside test scenarios), you can use the following commands to generate a key pair and then extract the public key from it into a separate file. Commencez par créer la paire de clés :First, create the key pair:

sn -k keypair.snk

Procédez ensuite à l’extraction de la clé publique de la paire de clés et copiez-la dans un fichier distinct :Next, extract the public key from the key pair and copy it to a separate file:

sn -p keypair.snk public.snk

Une fois que vous avez créé la paire de clés, vous devez placer le fichier à l’endroit où les outils de signature de nom fort peuvent le trouver.Once you create the key pair, you must put the file where the strong name signing tools can find it.

Lorsque vous signez un assembly avec un nom fort, l’utilitaire Assembly Linker (Al.exe) recherche le fichier de clés par rapport au répertoire en cours et au répertoire de sortie.When signing an assembly with a strong name, the Assembly Linker (Al.exe) looks for the key file relative to the current directory and to the output directory. Lorsque vous utilisez des compilateurs de ligne de commande, vous pouvez vous contenter de copier la clé dans le répertoire en cours contenant vos modules de code.When using command-line compilers, you can simply copy the key to the current directory containing your code modules.

Si vous utilisez une version antérieure de Visual Studio qui ne dispose pas d’onglet Signature dans les propriétés du projet, l’emplacement du fichier de clés recommandé est le répertoire du projet avec l’attribut de fichier spécifié comme suit :If you are using an earlier version of Visual Studio that does not have a Signing tab in the project properties, the recommended key file location is the project directory with the file attribute specified as follows:

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

Voir aussiSee also