8

使用時

  1. DLL の C# ストロングネームと
  2. InternalsVisibleTo タグを使用し、
  3. 公開鍵が SHA256 (または SHA512) を使用する場合

InternalsVisibleToタグがまったく宣言されていないかのように、コンパイル プロセスが失敗することに気付きました。私たちが得るエラーはMyInternalClass is inaccessible due to its protection level <snip>

公開鍵が sha1 を使用する場合 (上記のステップ #3)、コンパイル プロセスは問題なく完全に機能し、内部はテスト プロジェクトに適切に公開されます。ストロングネーム キーを作成する方法は次のとおりです。

sn -k 4096 SignKey.snk
sn -p SignKey.snk SignKeyPublic.snk sha256
sn -tp SignKeyPublic.snk

そして、プロジェクトの内部をテスト プロジェクトに公開する方法は次のとおりです。

[assembly: InternalsVisibleTo("MyProjectTest, PublicKey=LongPublicKeyHere")]

プロジェクトの中Properties\AssemblyInfo.csに貼り付けます。MyProject

質問: strongname プロセスで SHA256 以上を使用するにはどうすればよいですか?

編集:または、これは VS2012 ツールのバグですか?

プラットフォーム、ツール: VS2012 (Update 3)、.NET 4.5、Windows 8 x64

4

1 に答える 1

2

この雑誌の記事でかなり明示的に言及されています:

デジタル署名の実装には、さまざまなメカニズムが使用されます。.NET Framework での厳密な名前の現在の実装は、RSA 公開キー アルゴリズムと SHA-1 ハッシュ アルゴリズムに依存しています。

おそらく、sn.exe に使用したコマンド ライン引数が、厳密な名前をチェックするときに CLR にも表示されることを望んでいたと思われます。それは存在しません。

于 2013-09-24T23:21:21.973 に答える