How I do a sign an assembly that has already been built into a dll specifically flute.dll

The reason I want to sign the dll is because I want to add it to the Global Assembly Cache. The assembly is a css parsing engine written in Java and ported to J#. I use VS2008 so I can’t make J# projects. It doesn’t have a strong name key assigned to it and I have no idea how to do it now that it’s built.

Anyone have any ideas?

Answers:

Thank you for visiting the Q&A section on Magenaut. Please note that all the answers may not help you solve the issue immediately. So please treat them as advisements. If you found the post helpful (or not), leave a comment & I’ll get back to you as soon as possible.

Method 1

After a little searching, I found this post that explains one way of doing it.

Exerpt:

From a VS.NET command prompt, enter the following:

  1. Generate a KeyFile:
    sn -k keyPair.snk
  2. Obtain the MSIL for the provided assembly:
    ildasm providedAssembly.dll /out:providedAssembly.il
  3. Rename/move the original assembly:
    ren providedAssembly.dll providedAssembly.dll.orig
  4. Create a new assembly from the MSIL output and your assembly KeyFile:
    ilasm providedAssembly.il /dll /key=keyPair.snk

Method 2

Step 1: Dis-assemble the assembly

ildasm myTest.dll /out:myTest.il

Step 2: Re-Assemble using your strong-name key

ilasm myTest.il /res:myTest.res /dll /key:myTest.snk /out:myTestSN.dll

For verification you can use following command:

sn -vf myTestSN.dll

Hope this helps!

Method 3

This link also shows how to do it, including when one of the 3rd party assemblies you’re signing has a reference to another unsigned assembly that you’re signing:

http://buffered.io/posts/net-fu-signing-an-unsigned-assembly-without-delay-signing

Edit: sorry, link is busted.

Method 4

The Strong Name tool can re-sign an existing assembly, using the -R option. However, from what I understand, the assembly has to be previously signed or delay-signed… not sure you can use it with an unsigned assembly, but you can give it a try

Method 5

Thx especially PJ8 for posting an answer 8 years ago that still saved me today. “My” assembly needed to go in the GAC but was dependent on SQLite-pcl-net which as of version 1.3.1 is not strong-named although it is now dependent on the strong-named SQLitePCLRaw.bundle_green. So I had to sign SQLite-pcl-net in order to sign my own assembly in other words. I ended up with a cradle-to-grave .bat file consolidated from info in this post and a few other places I traveled today. The “pros” are 1. that this .bat runs in the location of the assembly that you want to sign 2. shows at least a hint as to where the three tools might be located on a dev machine. 3. shows all the steps in order. The “con” of course is that your mileage may vary as to where ildasm, ilasm and sn are actually located on your particular PC. Anyway cheers.

REM Create a new, random key pair
"c:program files (x86)microsoft sdkswindowsv8.1abinNETFX 4.5.1 Toolssn" -k SQLite-net.snk
REM Store the key in the container MySQLiteKeys in the strong name Cryptographic Services Provider (CSP).
"c:program files (x86)microsoft sdkswindowsv8.1abinNETFX 4.5.1 Toolssn" -i SQLite-net.snk MySQLiteKeys
REM Disassemble to Intermediate Language
"c:program files (x86)microsoft sdkswindowsv8.1abinNETFX 4.5.1 Toolsildasm" SQLite-net.dll /out:SQLite-net.il
REM Rename original file
ren SQLite-net.dll SQLite-net.dll.orig
REM Reassemble to a strong-named version
"c:WindowsMicrosoft.NETFrameworkv2.0.50727ilasm" SQLite-net.il /dll /key=SQLite-net.snk /out:SQLite-net.dll 
REM Verify the assembly 
"c:program files (x86)microsoft sdkswindowsv8.1abinNETFX 4.5.1 Toolssn" -v SQLite-net.dll
REM Deletes MySQLiteKeys from the default CSP
"c:program files (x86)microsoft sdkswindowsv8.1abinNETFX 4.5.1 Toolssn" -d MySQLiteKeys
REM View results 
pause


All methods was sourced from stackoverflow.com or stackexchange.com, is licensed under cc by-sa 2.5, cc by-sa 3.0 and cc by-sa 4.0

0 0 votes
Article Rating
Subscribe
Notify of
guest

0 Comments
Oldest
Newest Most Voted
Inline Feedbacks
View all comments
0
Would love your thoughts, please comment.x
()
x