Sn.exe (nástroj pro silný název)

Nástroj Silný název (Sn.exe) pomáhá podepisovat sestavení silnými názvy. Nástroj Sn.exe poskytuje možnosti pro správu klíčů, generování podpisů a ověřování podpisů.

Upozornění

Nespoléhejte na silné názvy pro zabezpečení. Poskytují pouze jedinečnou identitu.

Další informace o silných pojmenování a sestaveních se silným názvem najdete v tématu Sestavení se silným názvem a Postupy: Podepsání sestavení silným názvem.

Nástroj Strong Name je automaticky nainstalován se sadou Visual Studio. Pokud chcete nástroj spustit, použijte Visual Studio Developer Command Prompt nebo Visual Studio Developer PowerShell.

Poznámka

Na 64bitových počítačích spusťte 32bitovou verzi Sn.exe pomocí rozhraní Developer Command Prompt pro Visual Studio a 64bitové verze pomocí příkazového řádku win64 Visual Studio x64.

V příkazovém řádku zadejte následující:

Syntaxe

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

Parametry

Možnost Popis
-a identityKeyPairFile signaturePublicKeyFile Generuje AssemblySignatureKeyAttribute data pro migraci klíče identity do klíče podpisu ze souboru.
-ac identityPublicKeyFile identityKeyPairContainer signaturePublicKeyFile Generuje AssemblySignatureKeyAttribute data pro migraci klíče identity do klíče podpisu z kontejneru klíčů.
-c [csp] Nastaví výchozího zprostředkovatele kryptografických služeb (CSP) pro použití k podepisování se silným názvem. Toto nastavení platí pro celý počítač. Pokud název CSP nezadáte, nástroj Sn.exe vymaže aktuální nastavení.
-d container Odstraní zadaný kontejner klíče z CSP silného názvu.
-D assembly1 assembly2 Ověří, zda se dvě sestavení liší pouze v podpisu. Toto se často používá jako kontrola poté, co bylo sestavení znovu podepsáno jiným párem klíčů.
-e assembly outfile Extrahuje veřejný klíč ze sestavení a uloží ho do souboru outfile.
-h Zobrazí syntaxi příkazu a možnosti nástroje.
-i infile container Nainstaluje pár klíčů z infile v zadaném kontejneru klíčů. Kontejner klíčů je umístěn v CSP silného názvu.
-k [keysize] outfile Vygeneruje RSACryptoServiceProvider nový klíč zadané velikosti a zapíše ho do zadaného souboru. Do souboru je zapsán veřejný i soukromý klíč.

Nezadáte-li velikost klíče, je dle výchozího nastavení vygenerován 1024bitový klíč, pokud máte nainstalovaný vylepšený zprostředkovatel kryptografických služeb Microsoft. V opačném případě je vygenerován 512bitový klíč.

Parametr keysize podporuje délky klíčů od 384 bitů po 16 384 bitů v přírůstcích po 8 bitech, pokud máte nainstalovaného zprostředkovatele kryptografických služeb Microsoft Enhanced. Je-li nainstalován základní zprostředkovatel kryptografických služeb Microsoft, podporuje délky klíčů od 384 do 512 bitů v krocích po 8 bitech.
-m [y|n] Určí, zda jsou kontejnery klíčů specifické pro počítač nebo pro uživatele. Pokud zadáte y, kontejnery klíčů jsou specifické pro počítač. Pokud zadáte n, kontejnery klíčů jsou specifické pro uživatele.

Není-li zadána žádná z hodnot y nebo n, zobrazí tato možnost aktuální nastavení.
-o infile [outfile] Extrahuje veřejný klíč z infile a uloží ho do .csv souboru. Každý bajt veřejného klíče je oddělen čárkou. Tento formát je užitečný pro pevné zakódování odkazů na klíče jako inicializovaných polí ve zdrojovém kódu. Pokud nezadáte výstupní soubor, umístí tato možnost výstup do schránky. Poznámka: Tato možnost neověřuje, že vstup je pouze veřejný klíč. Pokud obsahuje infile pár klíčů s privátním klíčem, extrahuje se také privátní klíč.
-p infile outfile [hashalg] Extrahuje veřejný klíč z páru klíčů v souboru infile a uloží ho do souboru outfile, volitelně pomocí algoritmu RSA určeného parametrem hashalg. Tento veřejný klíč lze použít ke zpoždění podepsání sestavení pomocí možností /delaysign+ a /keyfile v linkeru sestavení (Al.exe). Pokud je sestavení podepsáno opožděně, je v době kompilace nastaven pouze veřejný klíč a v souboru je vyhrazen prostor pro pozdější přidání podpisu, až bude znám soukromý klíč.
-pc container outfile [hashalg] Extrahuje veřejný klíč z páru klíčů v kontejneru a uloží ho do souboru outfile. Pokud použijete možnost hashalg , algoritmus RSA se použije k extrakci veřejného klíče.
-Pb [y|n] Určí, zda bude vynucena zásada potlačení silných názvů. Pokud zadáte y, silné názvy pro sestavení s plnou důvěryhodností nejsou ověřeny při načtení do úplné důvěryhodnosti . Pokud zadáte n, ověří se správnost silných názvů, ale ne konkrétní silný název. Nemá StrongNameIdentityPermission žádný vliv na sestavení s plnou důvěryhodností. Je zapotřebí provést vlastní kontrolu shody silných názvů.

Pokud nezadáte yn ani , tato možnost zobrazí aktuální nastavení. Výchozí formát je y. Poznámka: V 64bitových počítačích musíte tento parametr nastavit v 32bitové i 64bitové instanci nástroje Sn.exe.
-q[uiet] Určuje použití tichého režimu; potlačí zobrazování zpráv o úspěchu.
-R[a] assembly infile Znovu podepíše dříve podepsané nebo zpožděně podepsané sestavení pomocí páru klíčů v souboru infile.

Pokud se použije -Ra , pro všechny soubory v sestavení se znovu začtou.
-Rc[a] assembly container Znovu podepíše dříve podepsané nebo pozdrženě podepsané sestavení pomocí páru klíčů v kontejneru.

Pokud se použije -Rca , pro všechny soubory v sestavení se znovu začtou.
-Rh assembly Přepočítá hodnoty hash pro všechny soubory v sestavení.
-t[p] infile Zobrazí token pro veřejný klíč uložený v souboru infile. Obsah infile musí být veřejný klíč, který se předtím vygeneroval ze souboru páru klíčů pomocí -p. Možnost -t[p] nepoužívejte k extrahování tokenu přímo ze souboru páru klíčů.

Nástroj Sn.exe počítá token z veřejného klíče pomocí funkce hash. Z důvodu šetření místem ukládá modul CLR tokeny veřejných klíčů do manifestů jako součást odkazů na jiné sestavení ve chvíli, kdy je do sestavení se silným názvem zaznamenána závislost. Možnost -tp zobrazí kromě tokenu veřejný klíč. Pokud byl AssemblySignatureKeyAttribute atribut použit na sestavení, token je pro klíč identity a zobrazí se název hashovací algoritmu a klíč identity.

Tato možnost neověřuje popis sestavení a neměla by být použita pro rozhodování o důvěryhodnosti. Tato možnost zobrazuje pouze nezpracovaná data tokenu veřejného klíče.
-T[p] assembly Zobrazí token veřejného klíče pro sestavení. Sestavení musí být název souboru, který obsahuje manifest sestavení.

Nástroj Sn.exe počítá token z veřejného klíče pomocí funkce hash. Z důvodu šetření místem ukládá modul runtime tokeny veřejných klíčů do manifestů jako součást odkazů na jiné sestavení ve chvíli, kdy je do sestavení se silným názvem zaznamenána závislost. Možnost -Tp zobrazí kromě tokenu také veřejný klíč. Pokud byl AssemblySignatureKeyAttribute atribut použit na sestavení, token je pro klíč identity a zobrazí se název hashovací algoritmu a klíč identity.

Tato možnost neověřuje popis sestavení a neměla by být použita pro rozhodování o důvěryhodnosti. Tato možnost zobrazuje pouze nezpracovaná data tokenu veřejného klíče.
-TS assembly infile Test podepíše podepsané nebo částečně podepsané sestavení párem klíčů v souboru infile.
-TSc assembly container Test podepíše podepsané nebo částečně podepsané sestavení párem klíčů v kontejneru kontejneru klíčů.
-v assembly Ověřuje silný název v sestavení, kde sestavení je název souboru, který obsahuje manifest sestavení.
-vf assembly Ověřuje silný název v sestavení. Na rozdíl od možnosti -vvynutí -vf ověření i v případě, že je zakázané pomocí možnosti -Vr .
-Vk regfile.reg assembly [userlist] [infile] Vytvoří soubor registračních položek (.reg), které lze použít k registraci zadaného sestavení pro vynechání ověření. Pravidla pro pojmenování sestavení, která platí pro možnost -Vr , platí také pro –Vk . Informace o možnostech userlist a infile najdete v možnosti –Vr .
-Vl Vypíše aktuální nastavení pro ověřování silných názvů v tomto počítači.
-Vr assembly [userlist] [infile] Zaregistruje sestavení pro přeskočení ověření. Volitelně lze také zadat čárkou oddělený seznam uživatelských jmen, pro která by vynechání ověřování mělo platit. Pokud zadáte infile, ověřování zůstane povolené, ale veřejný klíč v souboru infile se použije při ověřovacích operacích. Můžete zadat sestavení ve tvaru *, strongname k registraci všech sestavení se zadaným silným názvem. Pro strongname zadejte řetězec šestnáctkové číslice představující tokenizovanou formu veřejného klíče. Pokud chcete zobrazit token veřejného klíče, podívejte se na možnosti -t a -T . Pozor: Tuto možnost použijte pouze během vývoje. Přidání sestavení na seznam pro přeskočení ověření vytvoří ohrožení zabezpečení. Škodlivé sestavení by mohlo použít plně zadaný název sestavení (název sestavení, verze, jazyková verze a token veřejného klíče), které je přidáno do seznamu pro přeskočení ověření, k falšování identity. To by také umožnilo škodlivému sestavení přeskočit ověření.
-Vu assembly Zruší registraci sestavení pro přeskočení ověření. Stejná pravidla pro pojmenování sestavení, která platí pro -Vr , platí pro -Vu.
-Vx Odstraní všechny záznamy o vynechání ověřování.
-? Zobrazí syntaxi příkazu a možnosti nástroje.

Poznámka

Všechny možnosti nástroje Sn.exe rozlišují velká a malá písmena a musí být pro rozpoznání nástrojem zapsána přesně dle tabulky.

Poznámky

Možnosti -R a –Rc jsou užitečné u sestavení, která byla podepsána zpožděním. V tomto scénáři byl při kompilování nastaven pouze veřejný klíč a podepsání bylo provedeno později, až při znalosti soukromého klíče.

Poznámka

Pro parametry (například –Vr), které zapisovat do chráněných prostředků, jako je například registr, SN.exe jako správce.

Nástroj Silný název předpokládá, že se generují páry veřejného a privátního klíče s identifikátorem AT_SIGNATURE algoritmu. Páry veřejného a privátního klíče vygenerované algoritmem AT_KEYEXCHANGE generují chybu.

Příklady

Následující příkaz vytvoří nový náhodný pár klíčů a uloží ho do .keyPair.snk

sn -k keyPair.snk  

Následující příkaz uloží klíč do kontejneru keyPair.snkMyContainer v CSP se silným názvem.

sn -i keyPair.snk MyContainer  

Následující příkaz extrahuje veřejný klíč z keyPair.snk a uloží ho do .publicKey.snk

sn -p keyPair.snk publicKey.snk  

Následující příkaz zobrazí veřejný klíč a token pro veřejný klíč obsažený v publicKey.snk.

sn -tp publicKey.snk  

Následující příkaz ověří sestavení MyAsm.dll.

sn -v MyAsm.dll  

Následující příkaz odstraní výchozího MyContainer poskytovatele CSP.

sn -d MyContainer  

Viz také