This question is an extension of the following:
I am looking at Strong Naming a custom assembly along with code signing it and have read various SO posts (see above) and the MSDN. I understand the following:
DLL Hell
caused by identically named assemblies from different publishers.I understand 2 to be a logical extension of 1. Is my understand above correct? But, what is the difference between 2 and 3 above? Does 3 have any advantage over 1 or is it just a way to allow migration across algorithms only? Said differently, I imagine the 2 and 3 exist for distinct reasons; what is that reason/implementation?
Addition to 1: You want strong naming to ensure no unsigned assembly is referenced. You might not want to use the GAC.
Correction to 2: code signing != strong naming. for strong naming usesn.exe
to create a key. For code signing a x.509 Digital certificate with its private key is needed. A certificate itself has no password. The password is used by the PFX/PKCS#12 container format to protect the private key. Other options. like e.g. a smart card or token are possible.
So 2 is NOT the extension to 1. 3 has the advantage of using better hash algorithms and two instead of one signature.