Guide pratique pour créer une paire de clés publique/privée

Pour signer un assembly avec un nom fort, vous devez disposer d’une paire de clés publique/privée. 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. Vous pouvez créer une paire de clés à l’aide de l’outil Strong Name (Sn.exe). Les fichiers de paire de clés ont généralement une extension .snk.

Notes

Dans Visual Studio, les pages de propriétés de projet C# et Visual Basic incluent un onglet Signature qui vous permet de sélectionner des fichiers de clés existants ou de générer de nouveaux fichiers de clés sans utiliser 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. L’utilisation de l’attribut AssemblyKeyFileAttribute pour identifier les paires de fichiers de clés est devenue obsolète à compter de Visual Studio 2005.

Créer une paire de clés

Pour créer une paire de clés, à l’invite de commandes, tapez la commande suivante :

sn –k<nom de fichier>

Dans cette commande, nom de fichier est le nom du fichier de sortie contenant la paire de clés.

L’exemple suivant crée une paire de clés appelée 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. Commencez par créer la paire de clés :

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 :

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.

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. 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.

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 :

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

Voir aussi