Sn.exe (outil Strong Name Tool)

L'outil Strong Name Tool (Sn.exe) permet de signer des assemblys avec des noms forts. Sn.exe fournit des options de gestion des clés, de génération des signatures et de vérification des signatures.

RemarqueRemarque

Sur les ordinateurs 64 bits, exécutez la version 32 bits de Sn.exe à l'aide de l'invite de commandes de Visual Studio et la version 64 bits à l'aide de l'invite de commandes Visual Studio x64 Win64.

Cet outil est installé automatiquement avec Visual Studio et avec le Kit de développement logiciel Windows. Pour exécuter l'outil, nous vous recommandons d'utiliser l'invite de commandes Visual Studio ou l'invite de commandes du Kit de développement logiciel (l'interpréteur de commandes CMD). Ces utilitaires vous permettent d'exécuter l'outil facilement, sans naviguer jusqu'au dossier d'installation. Pour plus d'informations, consultez Invites de commandes Visual Studio e t Kit de développement logiciel (SDK) Windows.

  • Si Visual Studio est installé sur votre ordinateur : dans la barre des tâches, cliquez sur le bouton Start, All Programs, Visual Studio, sur Visual Studio Tools, puis sur Visual Studio Command Prompt.

    ou

    Si vous avez le Kit de développement logiciel Windows installé sur votre ordinateur : Dans la barre des tâches, cliquez sur Start, All Programs, le dossier correspondant au Kit de développement logiciel, puis sur Command Prompt (ou CMD Shell).

  • À l'invite de commandes, tapez ce qui suit :

sn [-quiet][option [parameter(s)]]

Paramètres

Option

Description

-c [csp]

Définit le fournisseur de services de chiffrement par défaut à utiliser pour la signature avec un nom fort. Ce paramètre s'applique à l'ensemble de l'ordinateur. Si vous ne spécifiez pas de nom de fournisseur de services de chiffrement, Sn.exe annule le paramètre en cours.

-d container

Supprime le conteneur de clé spécifié du fournisseur de services de chiffrement de noms forts.

-D assembly1 assembly2

Vérifie que deux assemblys ne se distinguent que par leur signature. Cette vérification intervient souvent après la nouvelle signature d'un assembly avec une paire de clés différente.

-e <assembly> <fichier_sortie>

Extrait la clé publique d'assembly et la stocke dans outfile.

-h

Affiche la syntaxe et les options de commande de l'outil.

-i infile container

Installe la paire de clés d'infile dans le conteneur de clé spécifié. Le conteneur de clé réside dans le fournisseur de services de chiffrement de noms forts.

-k [taille_de_clé] fichier_sortie

Génère une nouvelle clé RSACryptoServiceProvider de la taille spécifiée et l'écrit dans le fichier spécifié. Une clé publique et une clé privée sont écrites dans le fichier.

Si vous ne spécifiez pas de taille de clé, une clé de 1 024 bits est générée par défaut si le fournisseur de services de chiffrement avancé Microsoft est installé ; sinon, une clé de 512 bits est générée.

Le paramètre taille_de_clé prend en charge des longueurs de clé allant de 384 bits à 16 384 bits dans des incréments de 8 bits si le fournisseur de services de chiffrement avancé Microsoft est installé. Il prend en charge des longueurs de clé allant de 384 bits à 512 bits dans des incréments de 8 bits si le fournisseur de services de chiffrement de base Microsoft est installé.

-m [y|n]

Spécifie si les conteneurs de clés sont propres à l'ordinateur ou à l'utilisateur. Si vous spécifiez y, les conteneurs de clés sont propres à l'ordinateur. Si vous spécifiez n, les conteneurs de clés sont propres à l'utilisateur.

Si ni y ni n sont spécifiés, cette option affiche le paramètre en cours.

-o infile [fichier_sortie]

Extrait la clé publique d'infile et la stocke dans un fichier .csv. Chaque octet de la clé publique est séparé par une virgule. Ce format s'avère utile pour les références de codage en dur aux clés sous forme de tableaux initialisés dans le code source. Si vous ne spécifiez pas d'outfile, cette option place la sortie dans le Presse-papiers.

RemarqueRemarque
Cette option ne vérifie pas si l'entrée est une clé publique uniquement.Si infile contient une paire de clés dont une est privée, la clé privée est également extraite.

-p infile outfile

Extrait la clé publique de la paire de clés figurant dans infile et la stocke dans outfile. Cette clé publique permet de temporiser la signature d'un assembly à l'aide des options /delaysign+ et /keyfile d'Assembly Linker (Al.exe). En cas de temporisation de la signature d'un assembly, seule la clé publique est définie au moment de la compilation et un espace est réservé dans le fichier pour la signature qui sera ajoutée par la suite, lorsque la clé privée sera connue.

-pc container outfile

Extrait la clé publique de la paire de clés figurant dans container et la stocke dans outfile.

-Pb [y|n]

Spécifie si la stratégie permettant d'ignorer les noms forts est appliquée. Si vous spécifiez y, les noms forts pour les assemblys de confiance totale ne sont pas validés en cas de chargement dans un AppDomainde confiance totale. Si vous spécifiez n, l'exactitude des noms forts est validée, mais pas la correspondance à un nom fort particulier. Le StrongNameIdentityPermission n'a aucun effet sur les assemblys de confiance totale. Vous devez procéder à votre propre contrôle pour une correspondance de nom fort.

Si ni y, ni n ne sont spécifiés, cette option affiche le paramétrage actif. La valeur par défaut est y.

RemarqueRemarque
Sur les ordinateurs 64 bits, vous devez définir ce paramètre sur l'instance 32 bits et l'instance 64 bits de Sn.exe.

-q[uiet]

Spécifie le mode silencieux ; supprime l'affichage des messages de réussite.

-R[aassembly fichier_entrée

Signe à nouveau un assembly ayant préalablement fait l'objet d'une signature ou dont la signature a été temporisée avec la paire de clés figurant dans infile.

Si vous utilisez -Ra, les hachages sont recalculés pour tous les fichiers dans l'assembly.

-Rc[aconteneur_assembly

Signe à nouveau un assembly ayant préalablement fait l'objet d'une signature ou dont la signature a été temporisée avec la paire de clés figurant dans conteneur.

Si vous utilisez -Rca, les hachages sont recalculés pour tous les fichiers dans l'assembly.

-Rh assembly

Re-calcule des hachages pour tous les fichiers de l'assembly.

-t[p] infile

Affiche le jeton de la clé publique stockée dans infile. Le contenu de infile doit être une clé publique générée précédemment à partir d'un fichier de paires de clés à l'aide de -p. N'utilisez pas l'option -t[p] pour extraire directement le jeton d'un fichier de paires de clés.

Sn.exe calcule le jeton à l'aide d'une fonction de hachage issue de la clé publique. Pour gagner de la place, le Common Language Runtime stocke les jetons des clés publiques dans le manifeste en cas de référence à un autre assembly, lorsqu'il enregistre une dépendance dans un assembly portant un nom fort. L'option -tp affiche la clé publique en plus du jeton.

Notez que cette option ne vérifie pas la signature de l'assembly et qu'elle ne doit pas être utilisée pour prendre des décisions en matière d'approbation. Cette option affiche seulement les données brutes de jetons de clés publiques.

-T[p] assembly

Affiche le jeton de la clé publique de l'assembly. L'assembly doit correspondre au nom d'un fichier qui contient un manifeste d'assembly.

Sn.exe calcule le jeton à l'aide d'une fonction de hachage issue de la clé publique. Pour gagner de la place, le runtime stocke les jetons des clés publiques dans le manifeste en cas de référence à un autre assembly, lorsqu'il enregistre une dépendance dans un assembly portant un nom fort. L'option -Tp affiche la clé publique en plus du jeton.

Notez que cette option ne vérifie pas la signature de l'assembly et qu'elle ne doit pas être utilisée pour prendre des décisions en matière d'approbation. Cette option affiche seulement les données brutes de jetons de clés publiques.

-TSassembly infile

Teste la signature du assembly signé ou partiellement signé avec la paire de clés de infile.

-TSc assembly container

Teste la signature du assembly signé ou partiellement signé avec la paire de clés du conteneur de clé container.

-v assembly

Vérifie le nom fort figurant dans assembly, où assembly correspond au nom d'un fichier comportant un manifeste d'assembly.

-vf assembly

Vérifie le nom fort figurant dans assembly. À la différence de l'option -v, -vf force la vérification même si celle-ci a été désactivée à l'aide de l'option -Vr.

-Vl

Répertorie les paramètres actuels de la vérification des noms forts sur cet ordinateur.

-Vr assembly [userlist] [infile]

Inscrit assembly pour que la vérification soit ignorée. Vous pouvez également spécifier une liste de noms d'utilisateur avec la virgule comme séparateur. Si vous spécifiez infile, la vérification reste activée, mais la clé publique figurant dans infile est utilisée au cours des opérations de vérification. Assembly peut être spécifié sous la forme *, strongname pour inscrire tous les assemblys avec le nom fort spécifié. Strongname doit être spécifié en tant que chaîne de chiffres hexadécimaux représentant la clé publique sous forme de jetons. Consultez les options -t et -T pour afficher le jeton de la clé publique.

Remarque AttentionAttention
N'utilisez cette option que pendant le développement.L'ajout d'un assembly à la liste des omissions de vérification crée une faille de sécurité.Un assembly malveillant peut utiliser le nom complètement spécifié (nom, version, culture et jeton de clé publique) de l'assembly ajouté à la liste des omissions de vérification pour usurper son identité.Cela permet également à l'assembly malveillant d'ignorer la vérification.

-Vu assembly

Annule l'inscription d'assembly pour que la vérification soit ignorée. Les mêmes règles d'affectation de noms aux assemblys s'appliquent aux options -Vr et -Vu.

-Vx

Supprime toutes les entrées des vérifications ignorées.

-?

Affiche la syntaxe et les options de commande de l'outil.

RemarqueRemarque

Toutes les options de Sn.exe font l'objet d'une distinction minuscules/majuscules et doivent être tapées exactement comme indiqué ci-dessus pour pouvoir être reconnues par cet outil.

Notes

Les options -R et –Rc s'avèrent utiles avec les assemblys dont la signature a été temporisée. Dans ce cas, seule la clé publique est définie au moment de la compilation et la signature a lieu par la suite, lorsque la clé privée est connue.

RemarqueRemarque

Pour les paramètres (par exemple, -Vr) qui écrivent dans les ressources protégées, telles que le Registre, exécutez SN.exe en tant qu'administrateur.

Exemples

La commande suivante crée une nouvelle paire de clés aléatoire et la stocke dans keyPair.snk.

sn -k keyPair.snk

La commande suivante stocke la clé figurant dans keyPair.snk dans le conteneur MyContainer du fournisseur de services de chiffrement de noms forts.

sn -i keyPair.snk MyContainer

La commande suivante extrait la clé publique de keyPair.snk et la stocke dans publicKey.snk.

sn -p keyPair.snk publicKey.snk

La commande suivante affiche la clé publique et le jeton pour la clé publique contenue dans publicKey.snk.

sn -tp publicKey.snk

La commande suivante vérifie l'assembly MyAsm.dll.

sn -v MyAsm.dll

La commande suivante supprime MyContainer du fournisseur de services de chiffrement par défaut.

sn -d MyContainer

Voir aussi

Référence

Al.exe (Assembly Linker)

Invites de commandes Visual Studio e t Kit de développement logiciel (SDK) Windows

Concepts

Assemblys avec nom fort

Autres ressources

Outils du .NET Framework

Historique des modifications

Date

Historique

Motif

Avril 2011

Informations supplémentaires sur l'utilisation des invites de commandes de Visual Studio et du Kit de développement logiciel (SDK) Windows.

Améliorations apportées aux informations.

Août 2010

A ajouté des informations supplémentaires sur l'exécution de l'outil sur les ordinateurs 64 bits.

Améliorations apportées aux informations.