厳密名ツール (Sn.exe)

厳密名ツールは、厳密な名前を使用してアセンブリに署名する場合に役立ちます。Sn.exe には、キーの管理、署名の生成、署名の検査に関する各オプションが用意されています。

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

パラメータ

オプション 説明

-c [csp]

厳密な名前による署名に使用する既定の暗号サービス プロバイダ (CSP) を設定します。この設定は、コンピュータ全体に適用されます。CSP 名を指定しない場合は、現在の設定がクリアされます。

-d container

指定したキー コンテナを厳密な名前 CSP から削除します。

-D assembly1 assembly2

2 つのアセンブリの違いが、署名だけかどうかを検査します。通常は、このオプションは、別のキー ペアを使用してアセンブリに再署名した後のチェック用として使用されます。

-e assembly outfile

assembly から公開キーを抽出し、outfile に格納します。

-h

このツールのコマンド構文とオプションを表示します。

-i infile container

指定したキー コンテナに、infile に含まれるキー ペアをインストールします。キー コンテナは厳密な名前 CSP 内に常駐します。

-k [keysize] outfile

指定したサイズの新しい RSACryptoServiceProvider キーを生成し、指定したファイルに書き込みます。公開キーと秘密キーの両方がファイルに書き込みまれます。

キーのサイズを指定しない場合、Microsoft Enhanced Cryptographic Provider をインストールしている場合は既定で 1,024 ビットのキーが生成され、インストールしていない場合は既定で 512 ビットのキーが生成されます。

Microsoft Enhanced Cryptographic Provider をインストールしている場合、keysize パラメータは、8 ビット間隔で 384 ビットから 16,384 ビットまでの長さのキーをサポートします。Microsoft Enhanced Cryptographic Provider をインストールしていない場合は、8 ビット間隔で 384 ビットから 512 ビットまでの長さのキーをサポートします。

-m [y|n]

キー コンテナがコンピュータ固有のコンテナか、ユーザー固有のコンテナかを指定します。y を指定した場合、キー コンテナはコンピュータ固有のコンテナです。n を指定した場合、キー コンテナはユーザー固有のコンテナです。

y も n も指定しない場合は、現在の設定が表示されます。

-o infile [outfile]

infile から公開キーを抽出し、.csv ファイルに格納します。公開キーの各バイトはコンマで区切られます。この形式は、ソース コード内で、キーへの参照を初期化済み配列としてハードコーディングする場合に便利です。outfile を指定しない場合、出力はクリップボードに保存されます。

-p infile outfile

infile 内のキー ペアから公開キーを抽出し、outfile に格納します。この公開キーは、アセンブリ リンカ (Al.exe)/delaysign+ オプションと /keyfile オプションを使用して、アセンブリへの署名を遅らせるときに使用できます。アセンブリの署名を遅らせた場合、コンパイル時には公開キーだけが設定され、後で秘密キーが判明したときに追加される署名用にファイル内の領域が予約されます。

-pc container outfile

container 内のキー ペアから公開キーを抽出し、outfile に格納します。

-q[uiet]

クワイエット モードを指定します。このモードでは、成功メッセージは表示されません。

-R[aassembly infile

以前に署名したアセンブリ、または署名を遅らせたアセンブリに、infile 内のキー ペアを使用して再署名します。

-Ra を使用すると、アセンブリ内のすべてのファイルについてハッシュが再計算されます。

-Rc[aassembly container

以前に署名したアセンブリ、または署名を遅らせたアセンブリに、container 内のキー ペアを使用して再署名します。

-Rca を使用すると、アセンブリ内のすべてのファイルについてハッシュが再計算されます。

-Rh assembly

アセンブリ内のすべてのファイルについてハッシュを再計算します。

-t[p] infile

infile に格納されている公開キーに関するトークンを表示します。infile には、以前に -p を使用してキー ペア ファイルから生成された公開キーが含まれている必要があります。-t[p] オプションを使用して、トークンをキー ペア ファイルから直接抽出しないでください。

トークンは、ハッシュ関数によって公開キーから算出されます。領域を節約するために、共通言語ランタイムは厳密な名前を持つアセンブリへの依存度を記録するときに、別のアセンブリへ参照の一部として公開キー トークンをマニフェスト内に格納します。-tp オプションを指定すると、トークンの他に公開キーも表示されます。

このオプションはアセンブリ署名を検証しないため、信頼の決定には使用しないでください。このオプションは、生の公開キー トークン データのみを表示します。

-T[p] assembly

assembly に関する公開キー トークンを表示します。assembly には、アセンブリ マニフェストを含むファイルの名前を指定する必要があります。

トークンは、ハッシュ関数によって公開キーから算出されます。領域を節約するために、共通言語ランタイムは厳密な名前を持つアセンブリへの依存度を記録するときに、別のアセンブリへ参照の一部として公開キー トークンをマニフェスト内に格納します。-Tp オプションを指定すると、トークンの他に公開キーも表示されます。

このオプションはアセンブリ署名を検証しないため、信頼の決定には使用しないでください。このオプションは、生の公開キー トークン データのみを表示します。

-v assembly

assembly 内の厳密な名前を検査します。ここで、assembly はアセンブリ マニフェストを含むファイルの名前です。

-vf assembly

assembly 内の厳密な名前を検査します。-v オプションとは異なり、-vf では -Vr オプションで無効化した場合であっても、検査を強制的に実行します。

-Vl

コンピュータ上の厳密な名前検査に関する、現在の設定を一覧表示します。

-Vr assembly [userlist] [infile]

検査をスキップする assembly を登録します。オプションとして、コンマで区切られたユーザー名の一覧を指定できます。infile を指定した場合、検査は実行されますが、検査時には infile 内の公開キーが使用されます。指定した厳密な名前を持つアセンブリをすべて登録するには、*, strongname という形式で assembly を指定します。strongname は、トークン化した形式の公開キーを表す 16 進形式の文字列として指定する必要があります。公開キー トークンの表示については、-t オプションと -T オプションを参照してください。

ヒント

このオプションは開発時だけ使用します。検証省略リストにアセンブリを追加すると、セキュリティ上の脆弱性が生じます。悪意のあるアセンブリは、検証省略リストに追加されたアセンブリの完全限定アセンブリ名 (アセンブリ名、バージョン、カルチャ、および公開キー トークン) を使用することによって、その ID を偽装できます。これによって、悪意のあるアセンブリの検証も省略できます。

-Vu assembly

検査をスキップする assembly の登録を解除します。-Vr オプションに適用される規則と同じアセンブリ名前付け規則が -Vu オプションにも適用されます。

-Vx

検査をスキップするエントリをすべて削除します。

-?

このツールのコマンド構文とオプションを表示します。

注意

Sn.exe の全オプションでは大文字と小文字が区別されます。また、オプションが正しく認識されるためには、表記されたとおりに正確に入力する必要があります。

解説

-R オプションと –Rc オプションは、署名を遅らせたアセンブリを処理する場合に便利です。その場合、コンパイル時には公開キーだけが設定され、後で秘密キーが判明したときに署名が実行されます。

新しいランダム キー ペアを作成し、keyPair.snk に格納するコマンドを次に示します。

sn -k keyPair.snk

厳密な名前 CSP 内のコンテナ MyContainer 内の keyPair.snk にキーを格納するコマンドを次に示します。

sn -i keyPair.snk MyContainer

keyPair.snk から公開キーを抽出し、publicKey.snk に格納するコマンドを次に示します。

sn -p keyPair.snk publicKey.snk

公開キーおよび publicKey.snk に含まれている公開キーのトークンを表示するコマンドを次に示します。

sn -tp publicKey.snk

アセンブリ MyAsm.dll を検査するコマンドを次に示します。

sn -v MyAsm.dll

既定の CSP から MyContainer を削除するコマンドを次に示します。

sn -d MyContainer

参照

関連項目

.NET Framework ツール
アセンブリ リンカ (Al.exe)
SDK のコマンド プロンプト

概念

厳密な名前付きアセンブリ