This is follow up on Mono xbuild error CS1548 - key file has incorrect format
Hi, I have an application that is written in C# using VS2008. At present we are porting
sn -p
is used to extract a public key from a strongname.
However you need the private key in order to sign an assembly - so this (built-in sn
) conversion is not helpful for your goal.
Sadly a quick look at Microsoft sn
options does not document any option to do what you're looking for.
My suggestion is to write a small tool, re-using Mono sn
and Mono.Security.dll
source code, to read the PFX (pkcs#12) file and write it back as a SNK file.
Try sn -p key.pfx key.snk
instead.
Big thanks Poupou for coming up with the answer I have just added the code to the little program I made to get my snk.
using System.IO;
using System.Security.Cryptography;
using System.Security.Cryptography.X509Certificates;
namespace PfxSnk
{
internal class Program
{
private static void Main(string[] args)
{
X509Certificate2 cert = new X509Certificate2(@"KEY.pfx", "pfxPassword", X509KeyStorageFlags.Exportable | X509KeyStorageFlags.PersistKeySet);
RSACryptoServiceProvider provider = (RSACryptoServiceProvider)cert.PrivateKey;
byte[] array = provider.ExportCspBlob(!provider.PublicOnly);
using (FileStream fs = new FileStream("FileName.snk", FileMode.Create, FileAccess.Write))
{
fs.Write(array, 0, array.Length);
}
}
}
}