Comment : créer une paire de clés publique/privée

Pour signer un assembly avec un nom fort, vous devez avoir une paire de clés publique/privée. Cette paire de clés de chiffrement publique et privée 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 Tool (Sn.exe). Les fichiers de paire de clés ont généralement une extension .snk.

RemarqueRemarque

Dans Visual Studio, les pages de propriétés des projets C# et Visual Basic comprennent un onglet Signature qui vous permet de sélectionner les fichiers de clés existants ou d'en générer de nouveaux sans utiliser Sn.exe.Dans Visual C++, vous pouvez spécifier l'emplacement d'un fichier de clé 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 Pages de propriétés.L'utilisation de l'attribut AssemblyKeyFileAttribute pour identifier les paires de fichiers de clé est devenue obsolète dans Visual Studio 2005.

Pour créer une paire de clés

  • À l'invite de commandes, tapez la commande suivante :

    sn –k <nom du fichier>

    Dans cette commande, nom du fichier représente 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 si vous contrôlez entièrement la paire de clés (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, puis en extraire la clé publique dans un fichier distinct. Créez tout d'abord la paire de clés :

sn -k keypair.snk
  • Ensuite, extrayez la clé publique de la paire de clés et copiez-la dans un fichier distinct :
sn -p keypair.snk public.snk
  • Une fois la paire de clés créée, vous devez placer le fichier à un emplacement où les outils de signature de nom fort puissent le trouver.

Lorsque vous signez un assembly avec un nom fort, l'utilitaire Assembly Linker (Al.exe) recherche le fichier de clé relatif 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 ne disposant pas de l'onglet Signature dans les propriétés de projet, l'emplacement de fichier de clé recommandé est le répertoire de projet avec l'attribut de fichier spécifié comme suit :

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

Voir aussi

Concepts

Création et utilisation d'assemblys avec nom fort