예제 #1
0
        static void Main(string[] args)
        {
            CspProviderFlags flag = CspProviderFlags.UseMachineKeyStore;

            if (args.Length >= 1)
            {
                if (args[0].EndsWith(".pfx", StringComparison.OrdinalIgnoreCase) == true)
                {
                    Console.WriteLine(GetKeyContainerName(args[0]));
                    return;
                }

                flag = (CspProviderFlags)Enum.Parse(typeof(CspProviderFlags), args[0]);
            }

            foreach (var kc in KeyUtilities.EnumerateKeyContainers("Microsoft Strong Cryptographic Provider"))
            {
                CspParameters cspParams = new CspParameters();
                cspParams.KeyContainerName = kc;
                cspParams.Flags            = flag;
                using (RSACryptoServiceProvider prov = new RSACryptoServiceProvider(cspParams))
                {
                    if (prov.CspKeyContainerInfo.Exportable)
                    {
                        var blob             = prov.ExportCspBlob(true);
                        StrongNameKeyPair kp = new StrongNameKeyPair(prov.ExportCspBlob(false));
                        Console.WriteLine(kc + " pk length:" + kp.PublicKey.Length);
                    }
                }
                Console.WriteLine();
            }
        }