アセンブリに署名する強力な名前がアセンブリの内容の何らかのハッシュを使用し、署名後にアセンブリが変更された場合、もう仕事はありません。しかし、私はちょうどそれが構築された後、アプリケーションに余分なWin32リソースを追加する小さなユーティリティを作成し、限り私はそれが強力な名前の署名されたアセンブリがまったく機能を停止させないことを伝えることができます。アセンブリのどの部分が厳密な名前の署名を検証するか
小さなテストアプリケーションを作成しました。このアプリケーションはアセンブリ名だけを出力し、強力な名前を付けて署名し、それに余分なアイコンを追加しました。以下は、このプログラムは次のとおりです。
class Program
{
static void Main(string[] args)
{
Console.WriteLine("My name is " + Assembly.GetExecutingAssembly().GetName());
}
}
私は、私はまだそれを実行することができ、そしてそれは何の問題もなく私の公開キートークンとそのアセンブリ名をプリントアウトアセンブリ変更後:
My name is TestApp, Version=0.0.0.0, Culture=neutral, PublicKeyToken=cd4a03be895200fa
今、私の質問厳密な名前の署名は、アセンブリのいくつかの部分をチェックするだけですか?つまり、win32リソースをハッシュしませんか、完全に誤解していますか?署名後に私のアセンブリが変更された場合、動作を停止しないでください。
しかし、デジタル署名にはwin32リソースのハッシュは含まれていませんか?なぜなら、アセンブリに署名した後でも、それらを変更するのは完全にうまくいくと思われ、問題なく動作します。署名付きアセンブリが変更された場合の予想される動作は何ですか?それを始めることができるべきか? –
@EinarEgilsson、この実行可能アセンブリをGACにインストールしようとするとどうなりますか? –
@LexLi Ah、ok、そこに私は "強い署名を検証できませんでした"というエラーが出ます。したがって、リソースを変更すると、厳密な名前の署名が破棄されます。面白いことに、.exeはまだ実行することができます、私はそれが失敗するはずだと思ったでしょう! –