<?xml version="1.0" encoding="UTF-8"?><rss version="2.0"
	xmlns:content="http://purl.org/rss/1.0/modules/content/"
	xmlns:dc="http://purl.org/dc/elements/1.1/"
	xmlns:atom="http://www.w3.org/2005/Atom"
	xmlns:sy="http://purl.org/rss/1.0/modules/syndication/"
	xmlns:georss="http://www.georss.org/georss" xmlns:geo="http://www.w3.org/2003/01/geo/wgs84_pos#" xmlns:media="http://search.yahoo.com/mrss/"
		>
<channel>
	<title>Comments on: Three ways to tell if a .NET Assembly (DLL) has Strong Name</title>
	<atom:link href="http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/feed/" rel="self" type="application/rss+xml" />
	<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/</link>
	<description>Yes, another noisy coder...</description>
	<lastBuildDate>Sat, 04 Feb 2012 01:02:04 +0000</lastBuildDate>
	<sy:updatePeriod>hourly</sy:updatePeriod>
	<sy:updateFrequency>1</sy:updateFrequency>
	<generator>http://wordpress.com/</generator>
	<item>
		<title>By: ELMAH in the GAC &#124; Pros Global TV</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-1352</link>
		<dc:creator><![CDATA[ELMAH in the GAC &#124; Pros Global TV]]></dc:creator>
		<pubDate>Wed, 03 Aug 2011 00:07:04 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-1352</guid>
		<description><![CDATA[[...] use the Strong Name Tool (sn.exe) or the Microsoft Intermediate Language Disassembler (ILDASM.EXE). Here&#8217;s a blog that shows how to do either one. Or you can simply trust that it is strong named. If it isn&#8217;t, the next step won&#8217;t [...]]]></description>
		<content:encoded><![CDATA[<p>[...] use the Strong Name Tool (sn.exe) or the Microsoft Intermediate Language Disassembler (ILDASM.EXE). Here&#8217;s a blog that shows how to do either one. Or you can simply trust that it is strong named. If it isn&#8217;t, the next step won&#8217;t [...]</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Wilder</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-1240</link>
		<dc:creator><![CDATA[Bill Wilder]]></dc:creator>
		<pubDate>Wed, 18 May 2011 03:03:49 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-1240</guid>
		<description><![CDATA[@renniepet - you are indeed correct - that is what I meant. Unfortunately, Wordpress does not appear to allow me to edit that comment (http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-981) to correct it. Thank you for the clarification.]]></description>
		<content:encoded><![CDATA[<p>@renniepet &#8211; you are indeed correct &#8211; that is what I meant. Unfortunately, WordPress does not appear to allow me to edit that comment (<a href="http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-981" rel="nofollow">http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-981</a>) to correct it. Thank you for the clarification.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: renniepet</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-1239</link>
		<dc:creator><![CDATA[renniepet]]></dc:creator>
		<pubDate>Wed, 18 May 2011 00:53:48 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-1239</guid>
		<description><![CDATA[In the last sentence of the second-last paragraph I think you mean “you can trust that these bits have not changed since the the &lt;i&gt;digital signature&lt;/i&gt; was applied.”]]></description>
		<content:encoded><![CDATA[<p>In the last sentence of the second-last paragraph I think you mean “you can trust that these bits have not changed since the the <i>digital signature</i> was applied.”</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Wilder</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-1133</link>
		<dc:creator><![CDATA[Bill Wilder]]></dc:creator>
		<pubDate>Tue, 15 Mar 2011 18:58:00 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-1133</guid>
		<description><![CDATA[@Ioana it appears you are aware that strong naming can only be applied to assemblies that rely only on other assemblies which are strong named. So I see you problem. I suppose you could use the &quot;sn&quot; tool (see http://msdn.microsoft.com/en-us/library/k5b5tt23.aspx) to strong name the AutoCAD file and &quot;see what happens&quot; and whether it meets your needs. Make backups first.. :-) Of course, you may not yet know the state of the OTHER assemblies the AutoCAD dll relies on, so you may need to recursively apply strong names.]]></description>
		<content:encoded><![CDATA[<p>@Ioana it appears you are aware that strong naming can only be applied to assemblies that rely only on other assemblies which are strong named. So I see you problem. I suppose you could use the &#8220;sn&#8221; tool (see <a href="http://msdn.microsoft.com/en-us/library/k5b5tt23.aspx" rel="nofollow">http://msdn.microsoft.com/en-us/library/k5b5tt23.aspx</a>) to strong name the AutoCAD file and &#8220;see what happens&#8221; and whether it meets your needs. Make backups first.. <img src='http://s0.wp.com/wp-includes/images/smilies/icon_smile.gif' alt=':-)' class='wp-smiley' />  Of course, you may not yet know the state of the OTHER assemblies the AutoCAD dll relies on, so you may need to recursively apply strong names.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Ioana</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-1132</link>
		<dc:creator><![CDATA[Ioana]]></dc:creator>
		<pubDate>Tue, 15 Mar 2011 09:23:53 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-1132</guid>
		<description><![CDATA[Hi,
This article is very useful! Thanks a lot!
I also have a question : I am trying to make my assembly strong named but I am having an error because another dll than I am using in the project is not strong named. How can I make it strong named? (the dll is from AutoCAD C:\Program Files\Autodesk\AutoCAD Architecture 2011\ acdbmgd.dll). Hope you can help me. Thanks in advance.]]></description>
		<content:encoded><![CDATA[<p>Hi,<br />
This article is very useful! Thanks a lot!<br />
I also have a question : I am trying to make my assembly strong named but I am having an error because another dll than I am using in the project is not strong named. How can I make it strong named? (the dll is from AutoCAD C:\Program Files\Autodesk\AutoCAD Architecture 2011\ acdbmgd.dll). Hope you can help me. Thanks in advance.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Bill Wilder</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-981</link>
		<dc:creator><![CDATA[Bill Wilder]]></dc:creator>
		<pubDate>Wed, 05 Jan 2011 01:54:44 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-981</guid>
		<description><![CDATA[@sveerap - thanks for the feedback. My point &quot;Strong Names and Digital Signatures are Orthogonal Concerns&quot; can be restated as they have nothing to do with each other. For example, you can have one with out the other, or you can use them both, but they don&#039;t overlap. 

It is unfortunate that applying a strong name and applying a digital signature both involve similar crypto concepts and both update the binary, but that happens to be the case. Also, I think it would have been possible for Microsoft to design an approach that only required one step, but this would have been at the expense of complexity for those who only wanted to strong name - this is because the digital certificates used for strong naming can be generated by you, on your personal dev machine, whereas the digital certificates used for digitally signing will typically be purchased from a PKI authority like Verisign (or perhaps provided from an internal PKI within your company for internal-use-only assemblies).

When you apply a strong name, sn.exe updates the assembly (e.g., Foo.dll) with an unambiguous entry claiming something like &quot;this binary is named Foo.dll, is of version 1.2.3.4, is culture &#039;en-us&#039; (or neutral, etc.), is for processor architecture MSIL (or x86, etc), and Public Key &#039;abcde...&#039; was used to create the strong name.&quot; This is to avoid the &quot;DLL Hell&quot; mentioned above within the post.

DLL Hell can happen any time you need to concurrently support more than one version of an Assembly (or DLL as we used to call them). With strong names, you can now have two Assemblies, both named Foo.dll, used concurrently on your system - they can even both be in the &quot;same&quot; place, side-by-side in the Global Assembly Cache (&quot;GAC&quot; - &quot;the gack&quot;). Further, your application can choose to only work with Foo.dll version 1.2.3.4 (because it was tested with that), and can fail fast (if you want it to) when Foo.dll 2.0.0.0 is installed and 1.2.3.4 is no longer available. Now further imagine you want a version of Foo.dll for French and another for Russian; no problem. Now you migrate Foo.dll from raw x86 over to MSIL architecture; no problem. DLL Hell is avoided and more fine-grained control is available. 

Now so far this only addresses being clear about which version of the assembly ought to be loaded. And it is most of the way there. But is not &lt;em&gt;entirely&lt;/em&gt; SECURE. It would be possible for a hacker to create a tampered assembly that appeared to be Foo.dll version 1.2.3.4 - but wasn&#039;t. To ensure that the binary was not (maliciously or otherwise) edited after creation, we apply a digital signature to the whole file.

The only interdependency caveat is that you&#039;ll need to apply the strong name before applying the digital signature. Both the strong name and the digital signature will change the binary, but due to the &lt;em&gt;purpose&lt;/em&gt; of the digital signature, it comes afterwards since it is used to tell you that the assembly has not been tampered with since the strong name was applied.

In summary, &lt;strong&gt;the strong name and the digital signature address different architectural concerns&lt;/strong&gt;. The strong name says says &quot;this binary is named Foo.dll, has version 1.2.3.4, is culture &#039;en-us&#039;, and is for processor architecture MSIL&quot; while the digital signature says &quot;you can trust that these bits have not changed since the the strong name was applied.&quot;

In particular, if you are developing assemblies exclusively for internal use within a company, and don&#039;t need to worry about hackers or conflicts, you are probably fine with skipping the digital signing. But you definitely will want the strong name.

Hope that helps.
-Bill]]></description>
		<content:encoded><![CDATA[<p>@sveerap &#8211; thanks for the feedback. My point &#8220;Strong Names and Digital Signatures are Orthogonal Concerns&#8221; can be restated as they have nothing to do with each other. For example, you can have one with out the other, or you can use them both, but they don&#8217;t overlap. </p>
<p>It is unfortunate that applying a strong name and applying a digital signature both involve similar crypto concepts and both update the binary, but that happens to be the case. Also, I think it would have been possible for Microsoft to design an approach that only required one step, but this would have been at the expense of complexity for those who only wanted to strong name &#8211; this is because the digital certificates used for strong naming can be generated by you, on your personal dev machine, whereas the digital certificates used for digitally signing will typically be purchased from a PKI authority like Verisign (or perhaps provided from an internal PKI within your company for internal-use-only assemblies).</p>
<p>When you apply a strong name, sn.exe updates the assembly (e.g., Foo.dll) with an unambiguous entry claiming something like &#8220;this binary is named Foo.dll, is of version 1.2.3.4, is culture &#8216;en-us&#8217; (or neutral, etc.), is for processor architecture MSIL (or x86, etc), and Public Key &#8216;abcde&#8230;&#8217; was used to create the strong name.&#8221; This is to avoid the &#8220;DLL Hell&#8221; mentioned above within the post.</p>
<p>DLL Hell can happen any time you need to concurrently support more than one version of an Assembly (or DLL as we used to call them). With strong names, you can now have two Assemblies, both named Foo.dll, used concurrently on your system &#8211; they can even both be in the &#8220;same&#8221; place, side-by-side in the Global Assembly Cache (&#8220;GAC&#8221; &#8211; &#8220;the gack&#8221;). Further, your application can choose to only work with Foo.dll version 1.2.3.4 (because it was tested with that), and can fail fast (if you want it to) when Foo.dll 2.0.0.0 is installed and 1.2.3.4 is no longer available. Now further imagine you want a version of Foo.dll for French and another for Russian; no problem. Now you migrate Foo.dll from raw x86 over to MSIL architecture; no problem. DLL Hell is avoided and more fine-grained control is available. </p>
<p>Now so far this only addresses being clear about which version of the assembly ought to be loaded. And it is most of the way there. But is not <em>entirely</em> SECURE. It would be possible for a hacker to create a tampered assembly that appeared to be Foo.dll version 1.2.3.4 &#8211; but wasn&#8217;t. To ensure that the binary was not (maliciously or otherwise) edited after creation, we apply a digital signature to the whole file.</p>
<p>The only interdependency caveat is that you&#8217;ll need to apply the strong name before applying the digital signature. Both the strong name and the digital signature will change the binary, but due to the <em>purpose</em> of the digital signature, it comes afterwards since it is used to tell you that the assembly has not been tampered with since the strong name was applied.</p>
<p>In summary, <strong>the strong name and the digital signature address different architectural concerns</strong>. The strong name says says &#8220;this binary is named Foo.dll, has version 1.2.3.4, is culture &#8216;en-us&#8217;, and is for processor architecture MSIL&#8221; while the digital signature says &#8220;you can trust that these bits have not changed since the the strong name was applied.&#8221;</p>
<p>In particular, if you are developing assemblies exclusively for internal use within a company, and don&#8217;t need to worry about hackers or conflicts, you are probably fine with skipping the digital signing. But you definitely will want the strong name.</p>
<p>Hope that helps.<br />
-Bill</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: sveerap</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-971</link>
		<dc:creator><![CDATA[sveerap]]></dc:creator>
		<pubDate>Sun, 02 Jan 2011 00:57:01 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-971</guid>
		<description><![CDATA[Hi Bill Wilder,
              Thanks for the nice article. I too have been googling for something like this . Though I have still some queries around the difference between strong name and digital signing (i.e. diff between  signtool and sn). When you say , orthogonal , can you explain with an example.

When we strong name an assembly, we use a key to give it a strong name. Is it not enough for protecting the integrity and verification. Doesn&#039;t strong name produce a digital signature in an assembly manifest?. Why do we need additional digital signing?. Is it like , first we give strong name using our key and then digital sign it with the certificate using signtool?. I think I am missing something in my analysis. Please help.]]></description>
		<content:encoded><![CDATA[<p>Hi Bill Wilder,<br />
              Thanks for the nice article. I too have been googling for something like this . Though I have still some queries around the difference between strong name and digital signing (i.e. diff between  signtool and sn). When you say , orthogonal , can you explain with an example.</p>
<p>When we strong name an assembly, we use a key to give it a strong name. Is it not enough for protecting the integrity and verification. Doesn&#8217;t strong name produce a digital signature in an assembly manifest?. Why do we need additional digital signing?. Is it like , first we give strong name using our key and then digital sign it with the certificate using signtool?. I think I am missing something in my analysis. Please help.</p>
]]></content:encoded>
	</item>
	<item>
		<title>By: Lyman Groombridge</title>
		<link>http://blog.codingoutloud.com/2010/03/13/three-ways-to-tell-whether-an-assembly-dl-is-strong-named/#comment-360</link>
		<dc:creator><![CDATA[Lyman Groombridge]]></dc:creator>
		<pubDate>Sun, 14 Mar 2010 11:09:07 +0000</pubDate>
		<guid isPermaLink="false">http://blog.codingoutloud.com/?p=659#comment-360</guid>
		<description><![CDATA[You cannot believe how long ive been googling for something like this. Through 10 pages of Yahoo results and couldnt find anything. Quick search on bing. There was this.... Really have to start using it more often!]]></description>
		<content:encoded><![CDATA[<p>You cannot believe how long ive been googling for something like this. Through 10 pages of Yahoo results and couldnt find anything. Quick search on bing. There was this&#8230;. Really have to start using it more often!</p>
]]></content:encoded>
	</item>
</channel>
</rss>

