Sn.exe (outil Strong Name Tool)Sn.exe (Strong Name Tool)

L’outil Strong Name (Sn.exe) permet de signer des assemblys avec des noms forts.The Strong Name tool (Sn.exe) helps sign assemblies with strong names. Sn.exe fournit des options de gestion des clés, de génération des signatures et de vérification des signatures.Sn.exe provides options for key management, signature generation, and signature verification.

Avertissement

Ne comptez pas sur les noms forts pour la sécurité.Do not rely on strong names for security. Ils fournissent seulement une identité unique.They provide a unique identity only.

Pour plus d’informations sur l’utilisation de noms forts et sur les assemblys portant des noms forts, consultez Assemblys avec nom fort et Guide pratique pour signer un assembly avec un nom fort.For more information on strong naming and strong-named assemblies, see Strong-Named Assemblies and How to: Sign an Assembly with a Strong Name.

Cet outil est installé automatiquement avec Visual Studio.The Strong Name tool is automatically installed with Visual Studio. Pour démarrer l'outil, utilisez l'invite de commandes développeur (ou l'invite de commandes Visual Studio dans Windows 7).To start the tool, use the Developer Command Prompt (or the Visual Studio Command Prompt in Windows 7). Pour plus d’informations, consultez Invites de commandes.For more information, see Command Prompts.

Note

Sur les ordinateurs 64 bits, exécutez la version 32 bits de Sn.exe à l'aide de l'invite de commandes Visual Studio et la version 64 bits à l'aide de l'invite de commandes Visual Studio x64 Win64.On 64-bit computers, run the 32-bit version of Sn.exe by using the Visual Studio Command Prompt and the 64-bit version by using the Visual Studio x64 Win64 Command Prompt.

À l'invite de commandes, tapez le texte suivant :At the command prompt, type the following:

SyntaxeSyntax

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

ParamètresParameters

OptionOption DescriptionDescription
-a fichier_clé_publique_identité fichier_clé_publique_signature-a identityKeyPairFile signaturePublicKeyFile Génère des données AssemblySignatureKeyAttribute pour migrer la clé d'identité vers la clé de signature d'un fichier.Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a file.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Génère des données AssemblySignatureKeyAttribute pour migrer la clé d'identité à la clé de signature d'un conteneur de clé.Generates AssemblySignatureKeyAttribute data to migrate the identity key to the signature key from a key container.
-c [csp]-c [csp] Définit le fournisseur de services de chiffrement par défaut à utiliser pour la signature avec un nom fort.Sets the default cryptographic service provider (CSP) to use for strong name signing. Ce paramètre s'applique à l'ensemble de l'ordinateur.This setting applies to the entire computer. Si vous ne spécifiez pas de nom de fournisseur de services de chiffrement, Sn.exe supprime le paramètre en cours.If you do not specify a CSP name, Sn.exe clears the current setting.
-d container-d container Supprime le conteneur de clé spécifié du fournisseur de services de chiffrement de noms forts.Deletes the specified key container from the strong name CSP.
-D assembly1 assembly2-D assembly1 assembly2 Vérifie que deux assemblys ne se distinguent que par leur signature.Verifies that two assemblies differ only by signature. Cette vérification intervient souvent après la nouvelle signature d'un assembly avec une paire de clés différente.This is often used as a check after an assembly has been re-signed with a different key pair.
-e assembly outfile-e assembly outfile Extrait la clé publique de l’assembly et la stocke dans le outfile.Extracts the public key from assembly and stores it in outfile.
-h-h Affiche la syntaxe et les options de commande de l'outil.Displays command syntax and options for the tool.
-i infile container-i infile container Installe la paire de clés d’infile dans le conteneur de clé spécifié.Installs the key pair from infile in the specified key container. Le conteneur de clé réside dans le fournisseur de services de chiffrement de noms forts.The key container resides in the strong name CSP.
-k [keysize] outfile-k [keysize] outfile Génère une nouvelle clé RSACryptoServiceProvider de la taille spécifiée et l’écrit dans le fichier spécifié.Generates a new RSACryptoServiceProvider key of the specified size and writes it to the specified file. Une clé publique et une clé privée sont écrites dans le fichier.Both a public and private key are written to the file.

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.If you do not specify a key size, a 1,024-bit key is generated by default if you have the Microsoft enhanced cryptographic provider installed; otherwise, a 512-bit key is generated.

Le paramètre keysize 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é.The keysize parameter supports key lengths from 384 bits to 16,384 bits in increments of 8 bits if you have the Microsoft enhanced cryptographic provider installed. Il prend en charge des longueurs de clé allant de 384 bits à 512 bits par incréments de 8 bits si le fournisseur de services de chiffrement de base Microsoft est installé.It supports key lengths from 384 bits to 512 bits in increments of 8 bits if you have the Microsoft base cryptographic provider installed.
-m [y | n]-m [y | n] Spécifie si les conteneurs de clés sont propres à l'ordinateur ou à l'utilisateur.Specifies whether key containers are computer-specific, or user-specific. Si vous spécifiez y, les conteneurs de clés sont propres à l’ordinateur.If you specify y, key containers are computer-specific. Si vous spécifiez n, les conteneurs de clés sont propres à l’utilisateur.If you specify n, key containers are user-specific.

Si ni y, ni n ne sont spécifiés, cette option affiche le paramètre actuel.If neither y nor n is specified, this option displays the current setting.
-o infile [outfile]-o infile [outfile] Extrait la clé publique d’infile et la stocke dans un fichier .csv.Extracts the public key from the infile and stores it in a .csv file. Chaque octet de la clé publique est séparé par une virgule.A comma separates each byte of the public key. 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.This format is useful for hard-coding references to keys as initialized arrays in source code. Si outfile n’est pas spécifié, cette option place la sortie dans le Presse-papiers.If you do not specify an outfile, this option places the output on the Clipboard. Remarque : Cette option ne vérifie pas si l’entrée est une clé publique uniquement.Note: This option does not verify that the input is only a public key. Si infile contient une paire de clés dont une est privée, la clé privée est également extraite.If the infile contains a key pair with a private key, the private key is also extracted.
-p infile outfile [hashalg]-p infile outfile [hashalg] Extrait la clé publique de la paire de clés dans infile et la stocke dans outfile, éventuellement à l’aide de l’algorithme RSA spécifié par hashalg.Extracts the public key from the key pair in infile and stores it in outfile, optionally using the RSA algorithm specified by hashalg. Cette clé publique permet de différer la signature d’un assembly à l’aide des options /delaysign+ et /keyfile d’Assembly Linker (Al.exe).This public key can be used to delay-sign an assembly using the /delaysign+ and /keyfile options of the Assembly Linker (Al.exe). En cas signature différée 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.When an assembly is delay-signed, only the public key is set at compile time and space is reserved in the file for the signature to be added later, when the private key is known.
-pc container outfile [hashalg]-pc container outfile [hashalg] Extrait la clé publique de la paire de clés figurant dans container et la stocke dans outfile.Extracts the public key from the key pair in container and stores it in outfile. Si vous utilisez l’option hashalg, l’algorithme RSA est utilisé pour récupérer la clé publique.If you use the hashalg option, the RSA algorithm is used to extract the public key.
-Pb [y | n]-Pb [y | n] Spécifie si la stratégie permettant d'ignorer les noms forts est appliquée.Specifies whether the strong-name bypass policy is enforced. Si vous spécifiez y, les noms forts pour les assemblys à confiance totale ne sont pas validés en cas de chargement dans un AppDomain à confiance totale.If you specify y, strong names for full-trust assemblies are not validated when loaded into a full-trust AppDomain. Si vous spécifiez n, l’exactitude des noms forts est validée, mais pas pour un nom fort spécifique.If you specify n, strong names are validated for correctness, but not for a specific strong name. Le StrongNameIdentityPermission n'a aucun effet sur les assemblys à confiance totale.The StrongNameIdentityPermission has no effect on full-trust assemblies. Vous devez procéder à votre propre contrôle pour une correspondance de nom fort.You must perform your own check for a strong name match.

Si ni y, ni n ne sont spécifiés, cette option affiche le paramètre actuel.If neither y nor n is specified, this option displays the current setting. La valeur par défaut est y.The default is y. Remarque : Sur les ordinateurs 64 bits, vous devez définir ce paramètre à la fois sur l’instance 32 bits et sur l’instance 64 bits de Sn.exe.Note: On 64-bit computers, you must set this parameter in both the 32-bit and the 64-bit instances of Sn.exe.
-q[uiet]-q[uiet] Spécifie le mode silencieux ; supprime l'affichage des messages d'opération réussie.Specifies quiet mode; suppresses the display of success messages.
-R[a] assembly infile-R[a] assembly infile Resigne un assembly ayant préalablement fait l’objet d’une signature ou dont la signature a été différée avec la paire de clés figurant dans infile.Re-signs a previously signed or delay-signed assembly with the key pair in infile.

Si -Ra est utilisé, les hachages sont recalculés pour tous les fichiers de l’assembly.If -Ra is used, hashes are recomputed for all files in the assembly.
-Rc[a] assembly container-Rc[a] assembly container Resigne un assembly ayant préalablement fait l’objet d’une signature ou dont la signature a été différée avec la paire de clés figurant dans container.Re-signs a previously signed or delay-signed assembly with the key pair in container.

Si -Rca est utilisé, les hachages sont recalculés pour tous les fichiers de l’assembly.If -Rca is used, hashes are recomputed for all files in the assembly.
-Rh assembly-Rh assembly Recalcule des hachages pour tous les fichiers de l'assembly.Recomputes hashes for all files in the assembly.
-t[p] infile-t[p] infile Affiche le jeton de la clé publique stockée dans infile.Displays the token for the public key stored in infile. Le contenu d’infile doit être une clé publique générée précédemment à partir d’un fichier de paire de clés à l’aide de -p.The contents of infile must be a public key previously generated from a key pair file using -p. N’utilisez pas l’option -t[p] pour extraire directement le jeton d’un fichier de paire de clés.Do not use the -t[p] option to extract the token directly from a key pair file.

Sn.exe calcule le jeton à l'aide d'une fonction de hachage issue de la clé publique.Sn.exe computes the token by using a hash function from the public key. 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.To save space, the common language runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. L’option -tp affiche la clé publique en plus du jeton.The -tp option displays the public key in addition to the token. Si l'attribut AssemblySignatureKeyAttribute a été appliqué à l'assembly, le jeton est pour la clé d'identité, et le nom d'algorithme de hachage et de la clé d'identité s'affiche.If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

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.Note that this option does not verify the assembly signature and should not be used to make trust decisions. Cette option affiche seulement les données brutes de jetons de clés publiques.This option only displays the raw public key token data.
-T[p] assembly-T[p] assembly Affiche le jeton de clé publique de l’assembly.Displays the public key token for assembly. L’assembly doit être le nom d’un fichier qui contient un manifeste d’assembly.The assembly must be the name of a file that contains an assembly manifest.

Sn.exe calcule le jeton à l'aide d'une fonction de hachage issue de la clé publique.Sn.exe computes the token by using a hash function from the public key. 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.To save space, the runtime stores public key tokens in the manifest as part of a reference to another assembly when it records a dependency to an assembly that has a strong name. L’option -Tp affiche la clé publique en plus du jeton.The -Tp option displays the public key in addition to the token. Si l'attribut AssemblySignatureKeyAttribute a été appliqué à l'assembly, le jeton est pour la clé d'identité, et le nom d'algorithme de hachage et de la clé d'identité s'affiche.If the AssemblySignatureKeyAttribute attribute has been applied to the assembly, the token is for the identity key, and the name of the hash algorithm and the identity key is displayed.

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.Note that this option does not verify the assembly signature and should not be used to make trust decisions. Cette option affiche seulement les données brutes de jetons de clés publiques.This option only displays the raw public key token data.
-TS assembly infile-TS assembly infile Teste la signature du assembly signé ou partiellement signé avec la paire de clés dans infile.Test-signs the signed or partially signed assembly with the key pair in infile.
-TSc``assembly``container Teste la signature du assembly signé ou partiellement signé avec la paire de clés du conteneur de clé container.Test-signs the signed or partially signed assembly with the key pair in the key container container.
-v assembly-v assembly Vérifie le nom fort figurant dans assembly, où assembly est le nom d’un fichier contenant un manifeste d’assembly.Verifies the strong name in assembly, where assembly is the name of a file that contains an assembly manifest.
-vf assembly-vf assembly Vérifie le nom fort dans assembly.Verifies the strong name in assembly. Contrairement à l’option -v, -vf force la vérification même si celle-ci a été désactivée à l’aide de l’option -Vr.Unlike the -v option, -vf forces verification even if it is disabled using the -Vr option.
-Vk regfile.reg assembly [userlist] [infile]-Vk regfile.reg assembly [userlist] [infile] Crée un fichier des entrées d'inscription (.reg) que vous pouvez utiliser pour inscrire l'assembly spécifié afin d'ignorer la vérification.Creates a registration entries (.reg) file you can use to register the specified assembly for verification skipping. Les règles d’affectation des noms d’assemblys qui s’appliquent à l’option -Vr s’appliquent également à -Vk.The rules for assembly naming that apply to the -Vr option apply to –Vk as well. Pour plus d’informations sur les options userlist et infile, consultez l’option -Vr.For information about the userlist and infile options, see the –Vr option.
-Vl-Vl Répertorie les paramètres actuels de la vérification des noms forts sur cet ordinateur.Lists current settings for strong-name verification on this computer.
-Vr assembly [userlist] [infile]-Vr assembly [userlist] [infile] Inscrit l’assembly pour que la vérification soit ignorée.Registers assembly for verification skipping. Éventuellement, vous pouvez spécifier une liste de noms d'utilisateurs séparés par une virgule à laquelle l'exception de vérification s'appliquera.Optionally, you can specify a comma-separated list of user names the skip verification should apply to. Si vous spécifiez infile, la vérification reste activée, mais la clé publique figurant dans infile est utilisée pendant les opérations de vérification.If you specify infile, verification remains enabled, but the public key in infile is used in verification operations. Vous pouvez spécifier assembly sous la forme *, strongname pour inscrire tous les assemblys avec le nom fort spécifié.You can specify assembly in the form *, strongname to register all assemblies with the specified strong name. Pour strongname, spécifiez la chaîne de chiffres hexadécimaux représentant la clé publique sous forme de jetons.For strongname, specify the string of hexadecimal digits representing the tokenized form of the public key. Consultez les options -t et -T pour afficher le jeton de clé publique.See the -t and -T options to display the public key token. Attention : Utilisez cette option uniquement pendant le développement.Caution: Use this option only during development. L'ajout d'un assembly à la liste des omissions de vérification crée une faille de sécurité.Adding an assembly to the skip verification list creates a security vulnerability. 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é.A malicious assembly could use the fully specified assembly name (assembly name, version, culture, and public key token) of the assembly added to the skip verification list to fake its identity. Cela permet également à l'assembly malveillant d'ignorer la vérification.This would allow the malicious assembly to also skip verification.
-Vu assembly-Vu assembly Annule l’inscription de l’assembly pour que la vérification soit ignorée.Unregisters assembly for verification skipping. Les mêmes règles d’affectation de noms aux assemblys s’appliquent aux options -Vr et -Vu.The same rules for assembly naming that apply to -Vr apply to -Vu.
-Vx-Vx Supprime toutes les entrées concernées par l'exception de vérification.Removes all verification-skipping entries.
-?-? Affiche la syntaxe et les options de commande de l'outil.Displays command syntax and options for the tool.

Note

Toutes les options de Sn.exe respectent la casse et doivent être tapées exactement comme indiqué pour pouvoir être reconnues par l'outil.All Sn.exe options are case-sensitive and must be typed exactly as shown to be recognized by the tool.

NotesRemarks

Les options -R et -Rc sont utiles avec les assemblys dont la signature a été différée.The -R and –Rc options are useful with assemblies that have been delay-signed. 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.In this scenario, only the public key has been set at compile time and signing is performed later, when the private key is known.

Note

Pour les paramètres (par exemple, -Vr) qui écrivent dans les ressources protégées, telles que le Registre, exécutez SN.exe comme administrateur.For parameters (for example, –Vr) that write to protected resources such as the registry, run SN.exe as an administrator.

ExemplesExamples

La commande suivante crée une nouvelle paire de clés aléatoire et la stocke dans keyPair.snk.The following command creates a new, random key pair and stores it in 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.The following command stores the key in keyPair.snk in the container MyContainer in the strong name CSP.

sn -i keyPair.snk MyContainer  

La commande suivante extrait la clé publique de keyPair.snk et la stocke dans publicKey.snk.The following command extracts the public key from keyPair.snk and stores it in 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.The following command displays the public key and the token for the public key contained in publicKey.snk.

sn -tp publicKey.snk  

La commande suivante vérifie l'assembly MyAsm.dll.The following command verifies the assembly MyAsm.dll.

sn -v MyAsm.dll  

La commande suivante supprime MyContainer du fournisseur de services de chiffrement par défaut.The following command deletes MyContainer from the default CSP.

sn -d MyContainer  

Voir aussiSee Also

OutilsTools
Al.exe (Assembly Linker)Al.exe (Assembly Linker)
Assemblys avec nom fortStrong-Named Assemblies
Invites de commandesCommand Prompts