public bool Authentificate(string username, string pin, string cert_thumb)
        {
            Console.WriteLine("Authentificate started  pin: {0}  username: {1}", pin, username);

            string addressToSc = "net.tcp://localhost:9090/SmartCardService";

            Console.WriteLine("Test");
            using (AtmToSmartCardProxy atmToSCSProxy = new AtmToSmartCardProxy(binding, addressToSc))
            {
                Console.WriteLine("Test2");
                User tempUser = null;
                Console.WriteLine("Revocation List, Count: {0}", atmToSCSProxy.GetSmartCardRevocationList().Count);
                if (atmToSCSProxy.GetSmartCardRevocationList().Contains(cert_thumb))
                {
                    Console.WriteLine("Nevalidna smartKartica!");
                    return(false); //da ostane return ili nesto drugo, jer ne sme dalje da krene da izvrsava
                }
                else
                {
                    Console.WriteLine("Smart kartica je validna!");
                    List <KeyValuePair <string, User> > ExistingUserList = atmToSCSProxy.GetExistingUsers();
                    foreach (KeyValuePair <string, User> kvp in ExistingUserList)
                    {
                        if (kvp.Key.Equals(username))
                        {
                            tempUser = kvp.Value;
                            break;
                        }
                    }
                    if (tempUser != null)
                    {
                        binding.Security.Transport.ClientCredentialType = TcpClientCredentialType.Windows;
                        using (AtmToSecurityCheckProxy atmToSCProxy = new AtmToSecurityCheckProxy(binding, address))
                        {
                            Console.WriteLine("Check pin: pin = {0}", pin);
                            if (atmToSCProxy.CheckPin(username, pin))
                            {
                                tempUser.IsAuthenticated = true;
                                atmToSCSProxy.SerializingChangedData(tempUser);

                                return(true);
                            }
                            else
                            {
                                return(false);
                            }
                        }
                    }
                    else
                    {
                        Console.WriteLine("Korisnik sa datim usernamom ne postoji!");
                        return(false);
                    }
                }
            }
        }
        public bool PullMoney(string username, string amount)
        {
            Console.WriteLine("PullMoney started + amount {0} + username {1} ", amount, username);
            ///SmartCardService.SmartCardService scs = new SmartCardService.SmartCardService();
            ///localhost:9090/SmartCardService
            string addressToSc = "net.tcp://localhost:9090/SmartCardService";

            using (AtmToSmartCardProxy atmToSCProxy = new AtmToSmartCardProxy(binding, addressToSc))
            {
                User tempUser = null;
                List <KeyValuePair <string, User> > ExistingUserList = atmToSCProxy.GetExistingUsers();
                foreach (KeyValuePair <string, User> kvp in ExistingUserList)
                {
                    if (kvp.Key.Equals(username))
                    {
                        tempUser = kvp.Value;
                        break;
                    }
                }
                if (!tempUser.IsAuthenticated)
                {
                    Audit.PullMoneyFail(username, amount);
                    return(false);
                }
                if (tempUser != null)
                {
                    if ((tempUser.Balance) - Double.Parse(amount) >= 0)
                    {
                        tempUser.Balance         = tempUser.Balance - Double.Parse(amount);
                        tempUser.IsAuthenticated = false;
                        Console.WriteLine("Uspesno ste podigili {0} dinara sa vaseg racuna!", amount);
                        atmToSCProxy.SerializingChangedData(tempUser);
                        Audit.PullMoneySuccess(username, amount);
                        return(true);
                    }
                    else
                    {
                        Console.WriteLine("Nemate dovoljno novca na racunu.");
                        tempUser.IsAuthenticated = false;
                        atmToSCProxy.SerializingChangedData(tempUser);
                        Audit.PullMoneyFail(username, amount);
                        return(false);
                    }
                }
                else
                {
                    Console.WriteLine("Trazeni korisnik ne postoji u sistemu.");
                    tempUser.IsAuthenticated = false;
                    atmToSCProxy.SerializingChangedData(tempUser);
                    Audit.PullMoneyFail(username, amount);
                    return(false);
                }
            }
        }