PFX/PKCS12 to SNK conversion for mono

后端 未结 3 714
甜味超标
甜味超标 2021-01-05 17:24

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

相关标签:
3条回答
  • 2021-01-05 18:04

    sn -pis 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.

    0 讨论(0)
  • 2021-01-05 18:04

    Try sn -p key.pfx key.snk instead.

    0 讨论(0)
  • 2021-01-05 18:10

    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);
                }
            }
        }
    }
    
    0 讨论(0)
提交回复
热议问题