//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);*/ }
/*Función que comprueba las firmas y si son correctas agrega el mensaje en BD*/ public void MensajeAgregado(string msje) { BD AccesoBD = new BD(Formulario); Utiles utiles = new Utiles(); string evento, posibleevento; /* Cripto criputiles = new Cripto(); DetectaIncidente incidente = new DetectaIncidente(Formulario);*/ //Se comprueba si ya existe el incidente en las coordenadas X,Y aprox.la Base de datos evento = AccesoBD.ExisteEvento("T1", NombreVia, SentidoMarcha, CoodX, CoordY); Formulario.Invoke(Formulario.myDelegate, new Object[] { "¿Tengo el evento en BD? " }); if (evento.Equals("")) { Formulario.Invoke(Formulario.myDelegate, new Object[] { "¿Tengo el posible evento en BD? " }); posibleevento = AccesoBD.ExistePosibleEvento("T1", NombreVia, SentidoMarcha, CoodX, CoordY); //Si lo tengo es porque ya lo firmé, ahora lo borro de posible evento y lo inserto en Evento if (!posibleevento.Equals("")) { string[] info = msje.Split('.'); string[] inf_firma = info[1].Split('|'); AccesoBD.insertarEvento("T1", NombreVia, SentidoMarcha, CoodX, CoordY, CoordZ, HoraGeneracionPaquete, inf_firma[0]); //utiles.anadePoi("Atasco", "Atasco", (int)(CoodX * 100000), (int)(CoordY * 100000), 100); utiles.anadePoi("Atasco", "Atasco", (int)(CoodX), (int)(CoordY), 100); AccesoBD.EliminaPosibleEvento("T1", HoraGeneracionPaquete); } else { //Compruebo las firmas contenidas en el mensaje Formulario.Invoke(Formulario.myDelegate, new Object[] { "This packet contains incident information" }); Formulario.Invoke(Formulario.myDelegate, new Object[] { "Check Signatures" }); if (CompruebaFirmas(msje)) { Formulario.Invoke(Formulario.myDelegate, new Object[] { "Las Firmas son buenas" }); string[] info = msje.Split('.'); string mensaje = info[0]; AccesoBD.insertarEvento("T1", NombreVia, SentidoMarcha, CoodX, CoordY, CoordZ, HoraGeneracionPaquete, info[1]); //utiles.anadePoi("Atasco", "Atasco", (int)(CoodX * 100000), (int)(CoordY * 100000), 100); utiles.anadePoi("Atasco", "Atasco", (int)(CoodX), (int)(CoordY), 100); Formulario.Invoke(Formulario.myDelegate4, new Object[] { mensaje + "in " + CoodX + "," + CoordY + ". Recalculating route" }); } //Informo de que podría tratarse de un ataque else { Formulario.Invoke(Formulario.myDelegate, new Object[] { "Attempted Attack on the network" }); } }//end else existePosibleEvento }//EndIF Existeevento else { Formulario.Invoke(Formulario.myDelegate, new Object[] { "Ya tengo el Evento en mi BD no hago nada" }); } }
private void Atasco_Click(object sender, EventArgs e) { BD DButiles = new BD(this); int CoorX = -1632700;// 0899; //-1538956;// int CoorY = 2848779;//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 = "Atasco"; string sentido = "sentido"; DateTime fechaDato = DateTime.Now; string datoPublicidad = viaOnombre + ";" + sentido + ";" + CoorX + ";" + CoorY + ";" + CoorZ + ";" + fechaDato;//Estos datos los coge de un fichero // string firma = Convert.ToBase64String(signedData).ToString();// Utiles utiles = new Utiles(); Cliente clientePubli = new Cliente(this, "9050"); Cripto criputiles = new Cripto(this); //---------------------------------------------------------------------------------------------- //ENVIAMOS ATASCO TB (PARA PRUEBA) //CoorX = CoorX + 200;// -1538956; // CoorY = 2786158; viaOnombre = "calle1"; sentido = "sentido1"; fechaDato = DateTime.Now;//.GetDateTimeFormats("MM/dd/yyyy HH:mm:ss"); agregacion datoagregado= new agregacion(this, viaOnombre, sentido, CoorX, CoorY, CoorZ, fechaDato); string firma = datoagregado.FirmarMsje("Traffic Jam", Server.myPseudonimo); string datoAtasco = viaOnombre + "_" + sentido + "_" + CoorX + "_" + CoorY + "_" + CoorZ + "_" + fechaDato.ToString("MM/dd/yyyy HH:mm:ss");//Estos datos los coge de un fichero // firma = criputiles.RSAfirma(datoAtasco); string mensaje = "A_Traffic Jam." + firma + '|'+Server.myPseudonimo + "_" + 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(mensaje, DButiles.recuperamySK()), IPAddress.Broadcast.ToString());//,+ ";" + firma utiles.anadePoi("Atasco", "Atasco", CoorX, CoorY, 100); }