예제 #1
0
        public byte[] CreateSignature(byte[] data, string signCertCN)
        {
            X509Certificate2 certificateSign = CertManager.GetCertificateFromStorage(StoreName.My,
                                                                                     StoreLocation.LocalMachine, signCertCN);

            return(DigitalSignature.Create(data, HashAlgorithm.SHA1, certificateSign));
        }
예제 #2
0
        public bool ResetPinCode(SecureString pin)
        {
            try
            {
                X509Certificate2 certificate = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, username);

                X509Certificate2 certificateSign = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, username + "Sign");

                // hash klijentskog PINa
                byte[] hash = DigitalSignature.CreateHash(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1");

                /// Create a signature using SHA1 hash algorithm
                byte[] signature = DigitalSignature.Create(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1", certificateSign);

                Console.WriteLine("Delete all cert files and press any key");
                Console.ReadKey();

                return(ResetPinCode(signature, certificate));
            }
            catch (Exception e)
            {
                Console.WriteLine("[ResetPinCode] ERROR = {0}", e.Message);
                return(false);
            }
        }
예제 #3
0
        public bool WithdrawSmartCardClient(SecureString pin)
        {
            try
            {
                X509Certificate2 certificateSign = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, username + "Sign");

                // hash klijentskog PINa
                byte[] hash = DigitalSignature.CreateHash(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1");

                /// Create a signature using SHA1 hash algorithm
                byte[] signature = DigitalSignature.Create(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1", certificateSign);

                return(factory.WithdrawSmartCardClient(signature));
            }
            catch (Exception e)
            {
                Console.WriteLine("[WithdrawSmartCardClient] ERROR = {0}", e.Message);
                return(false);
            }
        }
예제 #4
0
        public bool SendPin(SecureString pin)
        {
            try
            {
                string signCertCN = Formatter.ParseName(WindowsIdentity.GetCurrent().Name) + "Sign";

                /// Create a signature based on the "signCertCN"
                X509Certificate2 signCert = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, signCertCN);
                // hash klijentskog PINa
                byte[] hash = DigitalSignature.CreateHash(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1");
                /// Create a signature using SHA1 hash algorithm
                byte[] signature = DigitalSignature.Create(new System.Net.NetworkCredential(string.Empty, pin).Password, "SHA1", signCert);
                return(SendPin(signature));
            }
            catch (Exception e)
            {
                Console.WriteLine("[SendPin] ERROR = {0}", e.Message);
                return(false);
            }
        }
예제 #5
0
        public void CreateAlarm(int period, X509Certificate2 signCert)
        {
            while (!StopThread)
            {
                try
                {
                    string[] messages  = File.ReadAllLines(@"../../../Publisher/messages.txt");
                    Random   randomInt = new Random();
                    Alarm    alarm     = new Alarm(DateTime.Now, messages[randomInt.Next(0, messages.Count())], randomInt.Next(1, 101));
                    byte[]   signature = DigitalSignature.Create(alarm, "SHA1", signCert);

                    Publish(alarm, signature);
                }
                catch (Exception e)
                {
                    Console.WriteLine(e.Message);
                }

                Thread.Sleep(period * 1000);
            }
        }
예제 #6
0
        public Tuple <bool, byte[]> WriteDB(string name, Element e)
        {
            signCert = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, Config.ServisSign);
            Tuple <bool, byte[]> rVal = new Tuple <bool, byte[]>(Commandos.WriteDB(name, e), DigitalSignature.Create(name, "SHA1", signCert));

            return(rVal);
        }
예제 #7
0
        public Tuple <float, byte[]> MedianMonthlyIncomeByCity(string name, string city)
        {
            signCert = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, Config.ServisSign);
            Tuple <float, byte[]> rVal = new Tuple <float, byte[]>(Commandos.MedianMonthlyIncomeByCity(name, city), DigitalSignature.Create(name, "SHA1", signCert));

            return(rVal);
        }
예제 #8
0
        public Tuple <Dictionary <string, Element>, byte[]> MaxIncomeByCountry(string name)
        {
            signCert = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, Config.ServisSign);
            Tuple <Dictionary <string, Element>, byte[]> rVal = new Tuple <Dictionary <string, Element>, byte[]>(Commandos.MaxIncomeByCountry(name), DigitalSignature.Create(name, "SHA1", signCert));

            return(rVal);
        }
예제 #9
0
        private static void Main(string[] args)
        {
            NetTcpBinding binding    = new NetTcpBinding();
            string        address    = "net.tcp://localhost:9999/FileManager";
            string        signCertCN = Formatter.ParseName(WindowsIdentity.GetCurrent().Name.ToLower()) + "_sign"; //client_sign invalidUser_sign Client invalidUser

            Console.ReadLine();
            try
            {
                using (ClientProxy proxy = new ClientProxy(binding, new EndpointAddress(new Uri(address))))
                {
                    if (signCertCN == "invaliduser_sign")
                    {
                        signCertCN = "invalidUser_sign";
                    }

                    X509Certificate2 clientCERT = CertManager.GetCertificateFromStorage(StoreName.My,
                                                                                        StoreLocation.LocalMachine, signCertCN);
                    Console.WriteLine("Connected to Services");
                    byte[] signature;

                    while (true)
                    {
                        Console.WriteLine("*****************Menu*****************");
                        Console.WriteLine("1. Dodaj fajl\n2. Azuriraj fajl\n3.Exit");
                        Console.Write("Choose option: ");
                        int choice = int.Parse(Console.ReadLine());
                        switch (choice)
                        {
                        case 1:
                            Console.WriteLine("Unesite ime fajla u kom zelite da unesete tekst");
                            string filename = Console.ReadLine();
                            Console.WriteLine("Unesite tekst koji zelite da upisete u fajl koji ste uneli");
                            string text = Console.ReadLine();
                            signature = DigitalSignature.Create(text, HashAlgorithms.SHA1, clientCERT);
                            proxy.AddFile(filename, signature, text);
                            break;

                        case 2:
                            Console.WriteLine("Unesite ime fajla u kom zelite da promenite tekst");
                            filename = Console.ReadLine();
                            Console.WriteLine("Unesite tekst koji zelite da izmenite");
                            text      = Console.ReadLine();
                            signature = DigitalSignature.Create(text, HashAlgorithms.SHA1, clientCERT);
                            proxy.EditFile(filename, signature, text);
                            break;

                        case 3:
                            Console.WriteLine("Press any key to exit the application..");
                            Console.ReadLine();
                            return;

                        default:
                            Console.WriteLine("Niste uneli ispravnu opciju.");
                            break;
                        }
                    }
                }
            }
            catch (Exception e)
            {
                Console.WriteLine("Something went wrong while starting Client service");
                Console.WriteLine("[ERROR] {0}", e.Message);
                Console.WriteLine("[StackTrace] {0}", e.StackTrace);
            }
        }
예제 #10
0
        public static void ExecuteCommandWriter(IWriterService proxy, int op, X509Certificate2 signCert)
        {
            string name = "";

            if (op != 0)
            {
                name = HelperFunctions.ReadDatabaseName();
            }
            switch (op)
            {
            case 1:
                CheckIfExecuted(proxy.CreateDB(name, DigitalSignature.Create(name, "SHA1", signCert)));
                break;

            case 2:
                CheckIfExecuted(proxy.DeleteDB(name, DigitalSignature.Create(name, "SHA1", signCert)));
                break;

            case 3:
                Element tmpElem = Element.LoadFromConsole();
                CheckIfExecuted(proxy.WriteDB(name, tmpElem, DigitalSignature.Create(name, "SHA1", signCert)));
                break;

            case 4:
                List <Element> elems = proxy.ReadDB(name, DigitalSignature.Create(name, "SHA1", signCert));
                Console.WriteLine("Ids of all elements:");
                DisplayAllElements(elems, true);

                Element toEdit = GetElementToEdit(elems);

                Element newElem = Element.LoadFromConsole();
                newElem.Id = toEdit.Id;
                CheckIfExecuted(proxy.EditDB(name, newElem, DigitalSignature.Create(name, "SHA1", signCert)));
                break;

            case 5:
                DisplayAllElements(proxy.ReadDB(name, DigitalSignature.Create(name, "SHA1", signCert)));
                break;

            case 6:
                string city = HelperFunctions.ReadCity();
                Console.Write("Prosecna plata za grad " + city + ": ");
                Console.WriteLine(proxy.MedianMonthlyIncomeByCity(name, city, DigitalSignature.Create(name, "SHA1", signCert)));
                break;

            case 7:
                string country = HelperFunctions.ReadCountry();
                Console.WriteLine("Unesi godinu:");
                int   year = int.Parse(Console.ReadLine());
                float medianMonthlyIncome = proxy.MedianMonthlyIncome(name, country, year, DigitalSignature.Create(name, "SHA1", signCert));
                Console.WriteLine("Prosecna plata za " + country + " u " + year + " god.:" + medianMonthlyIncome);
                break;

            case 8:
                var tmpDict = proxy.MaxIncomeByCountry(name, DigitalSignature.Create(name, "SHA1", signCert));
                Console.WriteLine("Najveca plata za svaku drzavu:");
                foreach (KeyValuePair <string, Element> kvp in tmpDict)
                {
                    Console.WriteLine(kvp.Key + " : id:" + kvp.Value.Id + " plata:" + kvp.Value.Income);
                }
                break;

            case 0:
                Console.WriteLine("Cao poz");
                break;
            }
        }
예제 #11
0
파일: Program.cs 프로젝트: Dexter255/SBES
        private static void SelectOption(WCFClient proxy, string option)
        {
            //Debugger.Launch();
            string databaseName        = String.Empty;
            string returnedValueString = String.Empty;
            string city    = String.Empty;
            string country = String.Empty;
            string payday  = String.Empty;
            string temp    = String.Empty;
            string message = String.Empty;

            byte[] signature;
            short  fromAge;
            short  toAge;

            if (option != "9")
            {
                Console.Write("\nEnter database name: ");
                databaseName = Console.ReadLine();
            }

            switch (option)
            {
            case "1":
                returnedValueString = proxy.CreateDatabase(databaseName);
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "2":
                returnedValueString = proxy.DeleteDatabase(databaseName);
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "3":
                message = CreateMessage(databaseName, "Insert");

                signature = DigitalSignature.Create(message, proxy.Credentials.ClientCertificate.Certificate);

                returnedValueString = proxy.Insert(message, signature);
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "4":
                message = CreateMessage(databaseName, "Edit");

                signature = DigitalSignature.Create(message, proxy.Credentials.ClientCertificate.Certificate);

                returnedValueString = proxy.Edit(message, signature);
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "5":
                returnedValueString = DataCryptography.DecryptData(proxy.Credentials.ClientCertificate.Certificate, proxy.ViewAll(databaseName));
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "6":
                returnedValueString = DataCryptography.DecryptData(proxy.Credentials.ClientCertificate.Certificate, proxy.ViewMaxPayed(databaseName));
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "7":
                Console.Write("Country: ");
                country = Console.ReadLine();

                do
                {
                    Console.Write("Payday: ");
                    payday = Console.ReadLine();
                } while (!Int32.TryParse(payday, out int id));

                returnedValueString = DataCryptography.DecryptData(proxy.Credentials.ClientCertificate.Certificate, proxy.AverageSalaryByCountryAndPayday(databaseName, country, payday));

                //returnedValueString = proxy.AverageSalaryByCountryAndPayday(databaseName, country, payday);
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "8":
                Console.Write("City: ");
                city = Console.ReadLine();

                do
                {
                    do
                    {
                        Console.Write("From age: ");
                        temp = Console.ReadLine();
                    } while (!short.TryParse(temp, out fromAge));

                    do
                    {
                        Console.Write("To age: ");
                        temp = Console.ReadLine();
                    } while (!short.TryParse(temp, out toAge));
                } while (fromAge > toAge);

                returnedValueString = DataCryptography.DecryptData(proxy.Credentials.ClientCertificate.Certificate, proxy.AverageSalaryByCityAndAge(databaseName, city, fromAge, toAge));
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "9":
                returnedValueString = DataCryptography.DecryptData(proxy.Credentials.ClientCertificate.Certificate, proxy.ViewDatabasesNames());
                Console.WriteLine(Environment.NewLine + returnedValueString);

                break;

            case "10":
                Console.WriteLine("Exit");
                break;

            default:
                Console.WriteLine("Unknown command");
                break;
            }
        }
예제 #12
0
        static void Main(string[] args)
        {
            Console.ReadKey();
            ClientSCSProxy clientSCSProxy = new ClientSCSProxy();

            X509Certificate2 cert = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, Formatter.ParseName(WindowsIdentity.GetCurrent().Name));

            if (cert == null)
            {
                int option = 0;
                while (option != 2)
                {
                    Console.WriteLine("Do you want to make SmartCard?\n\t1. Yes\n\t2. No");
                    try
                    {
                        option = Int32.Parse(Console.ReadLine());
                        if (option == 1)
                        {
                            if (clientSCSProxy.CertificateIssue())
                            {
                                Console.WriteLine("Your SmartCard is successfully created. Please install it and press any key when you are done.");
                                Console.ReadKey();
                                break;
                            }
                        }
                        else if (option == 2)
                        {
                            Console.WriteLine("Goodbye. Press any key to exit.");
                            break;
                        }
                    }
                    catch (Exception e)
                    {
                        Console.WriteLine(e.Message);
                    }
                }
            }
            else
            {
                ClientATMProxy   clientATMProxy = new ClientATMProxy();
                X509Certificate2 certSign       = CertManager.GetCertificateFromStorage(StoreName.My, StoreLocation.LocalMachine, Formatter.ParseName(WindowsIdentity.GetCurrent().Name + "Sign"));
                if (certSign != null)
                {
                    int option = 0;
                    while (option != 5)
                    {
                        Console.WriteLine("\nInsert PIN : ");

                        string pin     = Console.ReadLine();
                        byte[] signPin = DigitalSignature.Create(pin, HashAlgorithm.SHA1, certSign);

                        string username     = Formatter.ParseName(WindowsIdentity.GetCurrent().Name);
                        byte[] signUsername = DigitalSignature.Create(username, HashAlgorithm.SHA1, certSign);

                        try
                        {
                            if (clientATMProxy.ValidatePIN(pin, signPin, username, signUsername))
                            {
                                while (option != 5)
                                {
                                    Console.WriteLine("\nDo you want to:\n\t1. PayIn\n\t2. PayOut\n\t3. Print all users\n\t4. Change Pin\n\t5. Exit");
                                    try
                                    {
                                        option = Int32.Parse(Console.ReadLine());
                                        string amount;
                                        if (option == 1)
                                        {
                                            Console.WriteLine("Amount: ");
                                            amount = Console.ReadLine();
                                            try
                                            {
                                                byte[] signAmount = DigitalSignature.Create(amount, Manager.HashAlgorithm.SHA1, certSign);
                                                Console.WriteLine(clientATMProxy.PayIn(username, signUsername, amount, signAmount));
                                            }
                                            catch (Exception e)
                                            {
                                                Console.WriteLine(e.Message);
                                            }
                                        }
                                        else if (option == 2)
                                        {
                                            Console.WriteLine("Amount: ");
                                            amount = Console.ReadLine();

                                            byte[] signAmount = DigitalSignature.Create(amount, Manager.HashAlgorithm.SHA1, certSign);
                                            Console.WriteLine(clientATMProxy.PayOut(username, signUsername, amount, signAmount));
                                        }
                                        else if (option == 3)
                                        {
                                            Console.WriteLine(clientATMProxy.PrintAllClients());
                                        }
                                        else if (option == 4)
                                        {
                                            if (clientSCSProxy.ChangePin(username))
                                            {
                                                Console.WriteLine("Change PIN successfully executed.");
                                                break;
                                            }
                                            else
                                            {
                                                Console.WriteLine("Change PIN failed.");
                                            }
                                        }
                                    }
                                    catch (Exception e)
                                    {
                                        Console.WriteLine(e.Message);
                                    }
                                }
                            }
                            else
                            {
                                Console.WriteLine("Invalid PIN.");
                            }
                        }
                        catch
                        {
                            Console.WriteLine("ACCES DENIED.");
                            break;
                        }
                    }
                }
                else
                {
                    Console.WriteLine("User does not have sign certificate (or manage private keys).");
                }
            }

            Console.WriteLine("Goodbye. Press any key to exit.");
            Console.ReadKey();
        }