私は、.NETのアセンブリにPublicKey = 00000000000000000400000000000000が含まれていることに気付きました。さらに、sn.exeが生成できる(最小384ビット)だけでなく、ゼロ。.NETコアアセンブリの非常に特殊なPublicKey
このような公開鍵で署名鍵を生成するにはどうすればよいですか?
私は、.NETのアセンブリにPublicKey = 00000000000000000400000000000000が含まれていることに気付きました。さらに、sn.exeが生成できる(最小384ビット)だけでなく、ゼロ。.NETコアアセンブリの非常に特殊なPublicKey
このような公開鍵で署名鍵を生成するにはどうすればよいですか?
これは、ECMA標準で定義された公開鍵です。
これは3つの相反する要件に対処することです:
これらの3つの事柄は同時に起こることはありません!
.NETのバージョンを作成する場合(ポイント2)、標準ライブラリ(ポイント3)のバージョンを提供する必要があります(ポイント1)ので、署名する必要があります私がMicrosoftであることを証明する。ああ待って、私はMicrosoftではない! (ええと、再びポイント2)。
は代わりに何が起こるかです:
公開鍵00000000000000000400000000000000
(ECMA規格で定義されている)に対応する鍵で署名されたものとして関連アセンブリをマークしますが、実際には上記の秘密鍵で署名されています。
CLIのコードでは、公開鍵00000000000000000400000000000000
に対応するキーで署名されていると主張するアセンブリのチェックは、実際の公開鍵でチェックされます。これがチェックアウトされた場合、それらのアセンブリを構築することを信頼している誰かによって署名されているだけです。もちろん
、MSのフレームワークは、Monoのは、彼らを信用しないだろう、と我々はすべてのECMA標準キーに対応する異なる本当の鍵を持っているので、我々は、彼らのどちらかを信頼していないだろう、私たちのアセンブリを信頼しません。それはどんなものでなければなりません。
一方、00000000000000000400000000000000
が実際の有効な公開鍵と一致しないということは、それが他の公開鍵と衝突することができないことを意味します。
+ジョンハンナ、詳細な説明をありがとう!私はキーが何らかの形で特別だと思っていましたが、今はどのように見えますか? –
Windows SDKの「sn.exe」署名ツールのドキュメントを見てきましたか? –
@dario_ramos:はい、しました。 –
あなたの公開鍵を特定のものにしたい、あるいはゼロをたくさん持たせたいですか?どういうことなんですか? –