示例#1
0
        static void Main(string[] args)
        {
            try
            {
                // check if we have some parameters
                if (args.Count() < 1)
                {
                    Usage();
                    return;
                }

                // check what parameter we have
                switch (args[0].ToLower())
                {
                case "/genkey_pair":
                {
                    // show headline
                    ShowHeadLine();

                    // verify if output file exists
                    if (File.Exists(_dsaPrivKey) || File.Exists(_dsaPubKey))
                    {
                        Console.WriteLine("Error: Output files are currently exists");
                        Environment.ExitCode = -1;
                        return;
                    }

                    // start key generation
                    Console.WriteLine("Generating key pair with 1024 Bits...");
                    DSACryptoServiceProvider prv = new DSACryptoServiceProvider();

                    Console.WriteLine("Storing private key to " + _dsaPrivKey);
                    using (StreamWriter sw = new StreamWriter(_dsaPrivKey))
                    {
                        sw.Write(prv.ToXmlString(true));
                    }

                    Console.WriteLine("Storing public key to " + _dsaPubKey);
                    using (StreamWriter sw = new StreamWriter(_dsaPubKey))
                    {
                        sw.Write(prv.ToXmlString(false));
                    }

                    Console.WriteLine("");
                }
                break;

                case "/sign_update":
                {
                    if (args.Count() != 3)
                    {
                        Usage();
                        Environment.ExitCode = -1;
                        return;
                    }

                    // get parameter
                    String binary  = args[1];
                    String privKey = args[2];

                    if (!File.Exists(binary))
                    {
                        Console.Error.WriteLine("Target binary " + binary + " does not exists");
                        Environment.ExitCode = -1;
                        return;
                    }

                    if (!File.Exists(privKey))
                    {
                        Console.Error.WriteLine("Private key file does not exists");
                        Environment.ExitCode = -1;
                        return;
                    }

                    // Reading private key
                    String key = null;
                    using (StreamReader reader = new StreamReader(privKey))
                    {
                        key = reader.ReadToEnd();
                    }

                    DSACryptoServiceProvider prv = new DSACryptoServiceProvider();
                    prv.FromXmlString(key);

                    // open stream
                    Byte[] hash = null;
                    using (Stream inputStream = File.OpenRead(binary))
                    {
                        hash = prv.SignData(inputStream);
                    }

                    String base64Hash = Convert.ToBase64String(hash);
                    Console.WriteLine(base64Hash);
                }
                break;

                case "/verify_update":
                {
                    if (args.Count() != 4)
                    {
                        Usage();
                        Environment.ExitCode = -1;
                        return;
                    }

                    // get parameter
                    String binary     = args[1];
                    String pubKeyFile = args[2];
                    String sign       = args[3];

                    sign = sign.TrimStart('"');
                    sign = sign.TrimEnd('"');

                    NetSparkle.NetSparkleDSAVerificator dsaVerif = new NetSparkle.NetSparkleDSAVerificator(SecurityMode.UseIfPossible, null, pubKeyFile);
                    switch (dsaVerif.VerifyDSASignatureFile(sign, binary))
                    {
                    case ValidationResult.Valid:
                        Console.WriteLine("Binary " + binary + " is valid");
                        break;

                    case ValidationResult.Invalid:
                        Console.WriteLine("Binary " + binary + " is NOT valid");
                        break;

                    case ValidationResult.Unchecked:
                        Console.WriteLine("Binary " + binary + " could not be checked");
                        break;
                    }
                }
                break;

                default:
                    Usage();
                    break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Something went wrong :-(");
                Console.WriteLine(e.StackTrace);
            }
        }
示例#2
0
        static void Main(string[] args)
        {
            try
            {
                // check if we have some parameters
                if (args.Count() < 1)
                {
                    Usage();
                    return;
                }

                // check what parameter we have
                switch (args[0].ToLower())
                {
                    case "/genkey_pair":
                        {
                            // show headline
                            ShowHeadLine();

                            // verify if output file exists
                            if (File.Exists(_dsaPrivKey) || File.Exists(_dsaPubKey))
                            {
                                Console.WriteLine("Error: Output files are currently exists");
                                Environment.ExitCode = -1;
                                return;
                            }

                            // start key generation
                            Console.WriteLine("Generating key pair with 1024 Bits...");
                            DSACryptoServiceProvider prv = new DSACryptoServiceProvider();

                            Console.WriteLine("Storing private key to " + _dsaPrivKey);
                            using (StreamWriter sw = new StreamWriter(_dsaPrivKey))
                            {
                                sw.Write(prv.ToXmlString(true));
                            }

                            Console.WriteLine("Storing public key to " + _dsaPubKey);
                            using (StreamWriter sw = new StreamWriter(_dsaPubKey))
                            {
                                sw.Write(prv.ToXmlString(false));
                            }

                            Console.WriteLine("");
                        }
                        break;
                    case "/sign_update":
                        {
                            if (args.Count() != 3)
                            {
                                Usage();
                                Environment.ExitCode = -1;
                                return;
                            }

                            // get parameter
                            String binary = args[1];
                            String privKey = args[2];

                            if (!File.Exists(binary))
                            {
                                Console.Error.WriteLine("Target binary " + binary + " does not exists");
                                Environment.ExitCode = -1;
                                return;
                            }

                            if (!File.Exists(privKey))
                            {
                                Console.Error.WriteLine("Private key file does not exists");
                                Environment.ExitCode = -1;
                                return;
                            }

                            // Reading private key
                            String key = null;
                            using (StreamReader reader = new StreamReader(privKey))
                            {
                                key = reader.ReadToEnd();
                            }

                            DSACryptoServiceProvider prv = new DSACryptoServiceProvider();
                            prv.FromXmlString(key);

                            // open stream
                            Byte[] hash = null;
                            using (Stream inputStream = File.OpenRead(binary))
                            {
                                hash = prv.SignData(inputStream);
                            }

                            String base64Hash = Convert.ToBase64String(hash);
                            Console.WriteLine(base64Hash);
                        }
                        break;
                    case "/verify_update":
                        {
                            if (args.Count() != 4)
                            {
                                Usage();
                                Environment.ExitCode = -1;
                                return;
                            }

                            // get parameter
                            String binary = args[1];
                            String pubKeyFile = args[2];
                            String sign = args[3];

                            sign = sign.TrimStart('"');
                            sign = sign.TrimEnd('"');

                            NetSparkle.NetSparkleDSAVerificator dsaVerif = new NetSparkle.NetSparkleDSAVerificator(SecurityMode.UseIfPossible, null, pubKeyFile);
                            switch (dsaVerif.VerifyDSASignatureFile(sign, binary))
                            {
                                case ValidationResult.Valid:
                                    Console.WriteLine("Binary " + binary + " is valid");
                                    break;
                                case ValidationResult.Invalid:
                                    Console.WriteLine("Binary " + binary + " is NOT valid");
                                    break;
                                case ValidationResult.Unchecked:
                                    Console.WriteLine("Binary " + binary + " could not be checked");
                                    break;
                            }
                        }
                        break;
                    default:
                        Usage();
                        break;
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Something went wrong :-(");
                Console.WriteLine(e.StackTrace);
            }
        }