Ejemplo n.º 1
0
        public string RSAfirma(string datos)
        {
            BD dbUtiles = new BD(Formulario);
            string[] clavePrivada = dbUtiles.recuperaMisDatosPrivados().Split(',');

            Utiles utiles = new Utiles();
            byte[] dataToSign = utiles.StrToByteArray(datos);
            RSAParameters Cprivada = new RSAParameters()
            {//modulo, exponente, claveprivadaD, DP, DQ, InverseQ, P, Q
                Modulus = Convert.FromBase64String(clavePrivada[0]),
                Exponent = Convert.FromBase64String(clavePrivada[1]),
                D = Convert.FromBase64String(clavePrivada[2]),
                DP = Convert.FromBase64String(clavePrivada[3]),
                DQ = Convert.FromBase64String(clavePrivada[4]),
                InverseQ = Convert.FromBase64String(clavePrivada[5]),
                P = Convert.FromBase64String(clavePrivada[6]),
                Q = Convert.FromBase64String(clavePrivada[7])
            };
            RSACryptoServiceProvider RSA2 = new RSACryptoServiceProvider();
            RSA2.ImportParameters(Cprivada);
            byte[] signedData = RSA2.SignData(dataToSign, "SHA1");
            return Convert.ToBase64String(signedData).ToString();
        }
Ejemplo n.º 2
0
        //La publicidad debe recoger de un fichero la firma y mandarla a cada usuario con el que se autentique.
        private void publicidad_Click(object sender, EventArgs e)
        {
            BD DButiles = new BD(this);
            int CoorX = -1632721;// 0899; //-1538956;//
            int CoorY = 2848901;// 704;// 924;// 2309;//2786158;//
            int CoorZ = 0;
            SError err;
            SGpsPosition gps;
            try
            {
                if (CApplicationAPI.GetActualGpsPosition(out err, out gps, false, 1000) == 1)
                {
                    CoorX = gps.Longitude;
                    CoorY = gps.Latitude;
                }
            }
            catch { }

            string viaOnombre = "El Corte Ingles";//El Corte Ingles
            string sentido = "sentido";
            DateTime fechaDato = DateTime.Now;
            string datoPublicidad = viaOnombre + ";" + sentido + ";" + CoorX + ";" + CoorY + ";" + CoorZ + ";" + fechaDato;//Estos datos los coge de un fichero
            //GENERAMOS FIRMA (ESTO ES PARA PRUEBAS)En la versión final esta firma la recogerá de un fichero que le pasará la autoridad
            Utiles utiles = new Utiles();
            byte[] dataToSign = utiles.StrToByteArray(datoPublicidad);
            RSAParameters Cprivada = new RSAParameters()
            {
                D = Convert.FromBase64String("7QePOux7La+Y3jWwOwyHXqCDiduvXQv23TrfVX6cvTmr9BH0FtBzf4dbxYumjreztNrmX+wYsWH5W4pycB67S/tWODZrlrR8zuCCjWauC3ZjPWnlyU+Npg0qzLm7XkCLiuveQWpR4E/TWcs6Wr9pVL2zXT/BsWYC9t39qvkhTKE="),
                DP = Convert.FromBase64String("fJnDOGGMlWgVoQ+7MZtUfivpChykRC39W5UyTnnZ8+xxkt67nzlxXs2wl3w8EV1wRGYPXr0KfjFldUXYGd8h2Q=="),
                DQ = Convert.FromBase64String("3Ls7pKVPqzABAUxQ6jTKypsH7Zd+DJDhQfQset2sK15DmDU+cAY2BFufKvsojfYI2UKKtqvoIGKrWzZ+zrwKOQ=="),
                Exponent = Convert.FromBase64String("AQAB"),
                InverseQ = Convert.FromBase64String("rWWEy1hBu44BBcjuZwFNiixwEQobmHCG+ZqFRldjJKT/2RThzKNc9Q6vYwR52WSwGNxLmlwTvRb2p/gM13WaVQ=="),
                Modulus = Convert.FromBase64String("98Ej5BZ/VMG4nxCzdMZoZ8V50//GvnEQc3CX4vyHzDjOfUGB21ZjVF12s+h3ZQmQX/Woq1zZM6sNsTLVG2SiQhzwWIEE7ioyr2vn1OjE17QOlmrVtl8lI4txnZQQh8jaq1mEi1lqI7JMvwBr+AmTWz+Vf5RraWv/a7qonMDovyM="),
                P = Convert.FromBase64String("/SEbB4+LoAyHzUFTxyuA2mOJdZYIMiugNv9hUZQUjRzVbavfGVaxP/Pu5nxkyzmPtgcTn3m9nwbqwQSlLwEDdw=="),
                Q = Convert.FromBase64String("+pBuG5WisL4wg+B5auoXSQ5Q0/v4405ypMdQ5p6mG2notIamTZ4sp3m2+PpQOitlXrOQemlL3oaed2SH2XQUtQ==")
            };
            RSACryptoServiceProvider RSA2 = new RSACryptoServiceProvider();
            RSA2.ImportParameters(Cprivada);
            byte[] signedData = RSA2.SignData(dataToSign, "SHA1");
             string firma=Convert.ToBase64String(signedData).ToString();//

            Cliente clientePubli = new Cliente(this, "9050");
            Cripto criputiles = new Cripto(this);
            Invoke(myDelegate, new Object[] { "Sending Advertisements." });
               //SError err;
               /* int res = CApplicationAPI.DeletePoiCategory(out err, "El Corte Inglés", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "28482309", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "atasco", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "comercio", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "el corte ingles", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "elcorteingles", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "posible plaza", "ESP", 0);//(Borramos Para las pruebas)
             res = CApplicationAPI.DeletePoiCategory(out err, "restaurante", "ESP", 0);//(Borramos Para las pruebas)*/

               DButiles.insertarEvento("P1", viaOnombre, sentido, CoorX, CoorY, CoorZ, fechaDato, firma); //-1538936, 2786108, DateTime.Now);//Arinaga
            clientePubli.respuesta("P1", Server.myPseudonimo, criputiles.Encrypt(datoPublicidad+ ";" + firma, DButiles.recuperamySK()) , IPAddress.Broadcast.ToString());//,
            //utiles.anadePoi("El Corte Ingles", "Comercio", CoorX, CoorY, 100);
            utiles.anadePoi("banesto", "Comercio", CoorX, CoorY, 100);
            /*         //----------------------------------------------------------------------------------------------
            //ENVIAMOS APARCAMIENTO TB (PARA PRUEBA)
            CoorX = CoorX + 200;//-1631287;
            //CoorY = 2850168;
            viaOnombre = "calle1";
            sentido = "sentido1";
            fechaDato = DateTime.Now;
            string datoAparcamiento = viaOnombre + ";" + sentido + ";" + CoorX + ";" + CoorY + ";" + CoorZ + ";" + fechaDato;//Estos datos los coge de un fichero
            firma= criputiles.RSAfirma(datoAparcamiento);

            Invoke(myDelegate, new Object[] { "Sending Possible Parking" });
            DButiles.insertarEvento("P2", viaOnombre, sentido, CoorX, CoorY, CoorZ, fechaDato, firma);
            clientePubli.respuesta("P2", Server.myPseudonimo, criputiles.Encrypt(datoAparcamiento + ";"+firma, DButiles.recuperamySK()), IPAddress.Broadcast.ToString());//,
            utiles.anadePoi("Posible Plaza", "Posible Plaza", CoorX, CoorY, 100);
            //----------------------------------------------------------------------------------------------
            //ENVIAMOS ATASCO TB (PARA PRUEBA)

            CoorX = CoorX + 200;// -1538956;
               // CoorY = 2786158;
            viaOnombre = "calle1";
            sentido = "sentido1";
            fechaDato = DateTime.Now;
            string datoAtasco = viaOnombre + ";" + sentido + ";" + CoorX + ";" + CoorY + ";" + CoorZ + ";" + fechaDato;//Estos datos los coge de un fichero
            firma = criputiles.RSAfirma(datoAtasco);

            Invoke(myDelegate, new Object[] { "Sending Possible Traffic Jam" });
            DButiles.insertarEvento("T1", viaOnombre, sentido, CoorX, CoorY, CoorZ, fechaDato, firma);
            clientePubli.respuesta("T1", Server.myPseudonimo, criputiles.Encrypt(datoAtasco + ";" + firma, DButiles.recuperamySK()), IPAddress.Broadcast.ToString());//,
            utiles.anadePoi("Atasco", "Atasco", CoorX, CoorY, 100);*/
        }