Outil Strong Name Tool (Sn.exe)

L'outil Strong Name Tool (Nom fort) 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.

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

Paramètres

Option Description

-c [csp]

Définit le fournisseur de services de chiffrement à utiliser pour la signature de noms forts. 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 outfile

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 propres à 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 [outfile]

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.

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

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

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

-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 en cours pour 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.

Avertissement

N'utilisez cette option que pendant le développement. L'ajout d'un assembly à la liste des omissions de vérification met la sécurité en danger. 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.

Notes

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 sera ajoutée par la suite, lorsque la clé privée sera connue.

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

Outils du .NET Framework
Assembly Linker (Al.exe)
Invite de commandes du Kit de développement SDK

Concepts

Assemblys avec nom fort