Ejemplo n.º 1
0
        public int Execute()
        {
            if (string.IsNullOrEmpty(OutputPath))
            {
                Console.WriteLine("No output file specified/");
                _opts.WriteOptionDescriptions(Console.Error);
                return(1);
            }
            if (string.IsNullOrEmpty(Name))
            {
                Console.WriteLine("No key specified");
                _opts.WriteOptionDescriptions(Console.Error);
                return(1);
            }

            if (false == OutputPath.EndsWith(".pfx", StringComparison.InvariantCultureIgnoreCase))
            {
                OutputPath += ".pfx";
            }

            CngKey key;

            using (var finder = new KeyFinder())
            {
                if (finder.Find(Name, out key))
                {
                    WritePrivateKey(key);
                    return(0);
                }
                return(2);
            }
        }
Ejemplo n.º 2
0
        public int Execute()
        {
            if (!Options.Valid)
            {
                WriteHelp(Console.Out);
                return(1);
            }

            try
            {
                CngKey key;
                var    finder = new KeyFinder();
                if (string.IsNullOrEmpty(Options.Anything))
                {
                    if (finder.Find(Options.Name, Options.UniqueId, out key))
                    {
                        Console.WriteLine("Found key " + Options.Name ?? Options.UniqueId);
                        Console.WriteLine("\t algorithm: " + key.Algorithm);
                        Console.WriteLine("\t keysize: " + key.KeySize);
                        Console.WriteLine("\t usages: " + key.KeyUsage);
                        Console.WriteLine("\t uniquename: " + key.UniqueName);
                    }
                }
                else if (finder.Find(Options.Anything, out key))
                {
                    Console.WriteLine("Found key " + Options.Name ?? Options.UniqueId);
                    Console.WriteLine("\t algorithm: " + key.Algorithm);
                    Console.WriteLine("\t keysize: " + key.KeySize);
                    Console.WriteLine("\t usages: " + key.KeyUsage);
                    Console.WriteLine("\t uniquename: " + key.UniqueName);
                }

                return(2);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(3);
            }
        }
Ejemplo n.º 3
0
        public int Execute()
        {
            if (string.IsNullOrEmpty(Name))
            {
                Console.WriteLine("Key name must be specified");
                return(1);
            }
            if (!Principals.Any())
            {
                Console.WriteLine("No usernames were provided");
                return(1);
            }

            CngKey key;

            using (var finder = new KeyFinder())
            {
                if (finder.Find(Name, out key))
                {
                    try
                    {
                        var path = @"C:\Documents and Settings\All Users\Application Data\Microsoft\Crypto\Keys\" +
                                   key.UniqueName;
                        var file   = new FileInfo(path);
                        var policy = file.GetAccessControl();
                        foreach (var principal in Principals)
                        {
                            var rule = new FileSystemAccessRule(principal, FileSystemRights.ReadAndExecute,
                                                                InheritanceFlags.None,
                                                                PropagationFlags.NoPropagateInherit,
                                                                AccessControlType.Allow);
                            policy.AddAccessRule(rule);
                        }
                        file.SetAccessControl(policy);
                        Console.WriteLine("Access granted successfully");
                        return(0);
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                        return(3);
                    }
                }
                return(2);
            }
        }
Ejemplo n.º 4
0
        public int Execute()
        {
            if (string.IsNullOrEmpty(Name))
            {
                WriteHelp(Console.Error);
                return(1);
            }

            CngKey key;
            var    finder = new KeyFinder();

            try
            {
                if (finder.Find(Name, out key))
                {
                    key.Delete();
                    Console.WriteLine("Key " + Name + " deleted successfully");
                }

                else
                {
                    return(2);
                }

                return(0);
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return(3);
            }
            finally
            {
                finder.Dispose();
            }
        }
Ejemplo n.º 5
0
        public int Execute()
        {
            if (!Options.Valid)
            {
                WriteHelp(Console.Out);
                return 1;
            }

            try
            {
                CngKey key;
                var finder = new KeyFinder();
                if(string.IsNullOrEmpty(Options.Anything))
                {
                    if (finder.Find(Options.Name, Options.UniqueId, out key))
                    {
                        Console.WriteLine("Found key " + Options.Name ?? Options.UniqueId);
                        Console.WriteLine("\t algorithm: " + key.Algorithm);
                        Console.WriteLine("\t keysize: " + key.KeySize);
                        Console.WriteLine("\t usages: " + key.KeyUsage);
                        Console.WriteLine("\t uniquename: " + key.UniqueName);
                    }
                }
                else if (finder.Find(Options.Anything, out key))
                {
                    Console.WriteLine("Found key " + Options.Name ?? Options.UniqueId);
                    Console.WriteLine("\t algorithm: " + key.Algorithm);
                    Console.WriteLine("\t keysize: " + key.KeySize);
                    Console.WriteLine("\t usages: " + key.KeyUsage);
                    Console.WriteLine("\t uniquename: " + key.UniqueName);
                }

                return 2;
            }
            catch (Exception e)
            {
                Console.WriteLine(e.Message);
                return 3;
            }
        }