Beispiel #1
0
        public bool LogIn(string nick, string password, byte[] nickhashed, int counter, byte[] G, byte[] J, byte[] P, byte[] Q, byte[] Seed, byte[] X, byte[] Y)
        {
            bool result   = false;
            Chat instance = new Chat();

            instance.Deserialiser();
            User user = instance.SearchNick(nick);

            if (user != null)                     //si l'utilisateur existe
            {
                if (user.CheckPassword(password)) //si le mot de passe de l'utilisateur est bon
                {
                    DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
                    DSAParameters            key      = Security.RecreateKey(counter, G, J, P, Q, Seed, X, Y);
                    mycrypto.ImportParameters(key);
                    ASCIIEncoding encoding = new ASCIIEncoding();
                    if (mycrypto.VerifyData(encoding.GetBytes(nick), nickhashed)) //verification de la cle publique recue
                    {
                        result = true;
                        instance.RemoveUser(user);
                        user.Publickey = key; //on stocke la cle publique pour la reception prochaine de message
                        instance.AddUser(user);
                        instance.Serialiser();
                    }
                }
            }
            return(result);
        }
Beispiel #2
0
        public Message[] ReceiveMessageNonRead(string nick, byte[] nickhashed)
        {
            Chat instance = new Chat();

            instance.Deserialiser();
            User user = instance.SearchNick(nick);

            Message[] unread = null;
            if (user != null) //on verifie si l'utilisateur existe
            {
                ASCIIEncoding            encoding = new ASCIIEncoding();
                DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
                mycrypto.ImportParameters(user.Publickey);
                if (mycrypto.VerifyData(encoding.GetBytes(nick), nickhashed)) //on verifie la provenance de la demande
                {
                    //requete LINQ pour recuperer les messages a lire
                    unread = (from Message m in instance.Messages
                              where m.Creation > user.LastRead
                              select m).ToArray <Message>();

                    instance.RemoveUser(user);
                    user.LastRead = DateTime.Now; //on modifie la date de derniere lecture
                    instance.AddUser(user);
                    instance.Serialiser();
                }
            }
            return(unread);
        }
Beispiel #3
0
        public bool ChangeNick(string oldnick, string newnick, byte[] newnickhashed)
        {
            bool result   = false;
            Chat instance = new Chat();

            instance.Deserialiser();
            User user = instance.SearchNick(oldnick);

            if (user != null)                             //si l'utilisateur actuel existe
            {
                if (instance.SearchNick(newnick) == null) //si le nouveau login choisi est bon
                {
                    ASCIIEncoding            encoding = new ASCIIEncoding();
                    DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
                    mycrypto.ImportParameters(user.Publickey);
                    if (mycrypto.VerifyData(encoding.GetBytes(newnick), newnickhashed)) //verification de la provenance du message
                    {
                        instance.RemoveUser(user);
                        user.Login = newnick;
                        instance.AddUser(user);
                        instance.Serialiser();
                        result = true;
                    }
                }
            }
            return(result);
        }
Beispiel #4
0
        public bool SendPrivateMessage(string nick, string recipient, string message, byte[] messagehashed)
        {
            bool result   = false;
            Chat instance = new Chat();

            instance.Deserialiser();
            User user = instance.SearchNick(nick); //on verifie que l'auteur existe

            if (user != null)
            {
                ASCIIEncoding            encoding = new ASCIIEncoding();
                DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
                mycrypto.ImportParameters(user.Publickey);
                if (mycrypto.VerifyData(encoding.GetBytes(message), messagehashed)) //on verifie la provenance du message
                {
                    Message news      = new Message(nick, message);
                    User    todeliver = instance.SearchNick(recipient); //on verifie la presence du destinataire
                    if (todeliver != null)
                    {
                        Message privatemessage = new Message(nick, message);
                        instance.RemoveUser(todeliver);
                        todeliver.AddPrivateMessage(privatemessage);
                        instance.AddUser(todeliver);
                        instance.Serialiser();
                        result = true;
                    }
                }
            }
            return(result);
        }
Beispiel #5
0
 public bool ChangeNick(string oldnick, string newnick, byte[] newnickhashed)
 {
     bool result = false;
     Chat instance = new Chat();
     instance.Deserialiser();
     User user = instance.SearchNick(oldnick);
     if (user != null) //si l'utilisateur actuel existe
     {
         if (instance.SearchNick(newnick) == null) //si le nouveau login choisi est bon
         {
             ASCIIEncoding encoding = new ASCIIEncoding();
             DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
             mycrypto.ImportParameters(user.Publickey);
             if (mycrypto.VerifyData(encoding.GetBytes(newnick), newnickhashed)) //verification de la provenance du message
             {
                 instance.RemoveUser(user);
                 user.Login = newnick;
                 instance.AddUser(user);
                 instance.Serialiser();
                 result = true;
             }
         }
     }
     return result;
 }
Beispiel #6
0
 public bool SendPrivateMessage(string nick, string recipient, string message, byte[] messagehashed)
 {
     bool result = false;
     Chat instance = new Chat();
     instance.Deserialiser();
     User user = instance.SearchNick(nick); //on verifie que l'auteur existe
     if (user != null)
     {
         ASCIIEncoding encoding = new ASCIIEncoding();
         DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
         mycrypto.ImportParameters(user.Publickey);
         if (mycrypto.VerifyData(encoding.GetBytes(message), messagehashed)) //on verifie la provenance du message
         {
             Message news = new Message(nick, message);
             User todeliver = instance.SearchNick(recipient); //on verifie la presence du destinataire
             if (todeliver != null)
             {
                 Message privatemessage = new Message(nick, message);
                 instance.RemoveUser(todeliver);
                 todeliver.AddPrivateMessage(privatemessage);
                 instance.AddUser(todeliver);
                 instance.Serialiser();
                 result = true;
             }
         }
     }
     return result;
 }
Beispiel #7
0
        public Message[] ReceiveMessageNonRead(string nick, byte[] nickhashed)
        {
            Chat instance = new Chat();
            instance.Deserialiser();
            User user = instance.SearchNick(nick);
            Message[] unread = null;
            if (user != null) //on verifie si l'utilisateur existe
            {
                ASCIIEncoding encoding = new ASCIIEncoding();
                DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
                mycrypto.ImportParameters(user.Publickey);
                if (mycrypto.VerifyData(encoding.GetBytes(nick), nickhashed)) //on verifie la provenance de la demande
                {
                    //requete LINQ pour recuperer les messages a lire
                    unread = (from Message m in instance.Messages
                              where m.Creation > user.LastRead
                              select m).ToArray<Message>();

                    instance.RemoveUser(user);
                    user.LastRead = DateTime.Now; //on modifie la date de derniere lecture
                    instance.AddUser(user);
                    instance.Serialiser();
                }
            }
            return unread;
        }
Beispiel #8
-1
 public bool LogIn(string nick, string password,byte[] nickhashed, int counter, byte[] G, byte[] J, byte[] P, byte[] Q, byte[] Seed, byte[] X, byte[] Y)
 {
     bool result = false;
     Chat instance = new Chat();
     instance.Deserialiser();
     User user = instance.SearchNick(nick);
     if (user != null) //si l'utilisateur existe
     {
         if (user.CheckPassword(password)) //si le mot de passe de l'utilisateur est bon
         {
             DSACryptoServiceProvider mycrypto = new DSACryptoServiceProvider();
             DSAParameters key = Security.RecreateKey(counter, G, J, P, Q, Seed, X, Y);
             mycrypto.ImportParameters(key);
             ASCIIEncoding encoding = new ASCIIEncoding();
             if (mycrypto.VerifyData(encoding.GetBytes(nick), nickhashed)) //verification de la cle publique recue
             {
                 result = true;
                 instance.RemoveUser(user);
                 user.Publickey = key; //on stocke la cle publique pour la reception prochaine de message
                 instance.AddUser(user);
                 instance.Serialiser();
             }
         }
     }
     return result;
 }