summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--ausarbeitung/Grundlagen.tex18
-rw-r--r--ausarbeitung/Grundlagen.tex.backup36
-rw-r--r--ausarbeitung/Grundlagen.tex~20
-rw-r--r--ausarbeitung/maindoc.log6
-rw-r--r--ausarbeitung/maindoc.pdfbin1467630 -> 1467630 bytes
-rw-r--r--friendfinder/Makefile.inc1
-rw-r--r--friendfinder/draw_user.c6
-rw-r--r--friendfinder/e_smart_map.c21
-rwxr-xr-xfriendfinder/guibin208527 -> 479445 bytes
-rw-r--r--friendfinder/receiver.c47
-rw-r--r--friendfinder/sender.c23
11 files changed, 110 insertions, 68 deletions
diff --git a/ausarbeitung/Grundlagen.tex b/ausarbeitung/Grundlagen.tex
index f9634e2..16e08cc 100644
--- a/ausarbeitung/Grundlagen.tex
+++ b/ausarbeitung/Grundlagen.tex
@@ -39,14 +39,14 @@ von \textit{location privacy} entgegenkommen.\newline
Die Verbreitung von solchen mobilen Geräten hat in den letzten Jahren beständig zugenommen und alle neueren Modelle besitzen ein
\textit{GPS}-Modul. Des weiteren sind alle modernen Geräte in der Lage, Daten sowohl über den \textit{3G}-Standart
sowie per \textit{WLAN} zu übertragen. Wenn nun eine Gruppe, welche mit entsprechenden mobilen Geräten ausgestattet ist,
-die Positionen austauschen möchte, so wird zuallerst ein Protokoll benötigt welches die Daten versenden kann. Dieses Protokoll
+die Positionen austauschen möchte, so wird zuallererst ein Protokoll benötigt welches die Daten versenden kann. Dieses Protokoll
sollte sowohl verlässlich als auch für langsame Netze konzipiert sein. Im nächsten Schritt soll diese Verbindung nun nur
verschlüsselte Daten übertragen. Hierzu wird also ein geeigneter Algorithmus benötigt, welcher die Daten verschlüsselt. Dieser
-sollte dabei bei möglichst wenig Berechnungsaufwand eine möglichst gute Verschlüsselung bieten.\newline
-Will man nun Daten verschlüsseln so benötigen sowohl Sender als auch Empfänger die gleichen Schlüssel. Es wird also auch eine
-Möglichkeit gesucht, mit deren Hilfe man Schlüssel auf eine sichere Art und Weiße übertragen kann. Sind diese Anforderungen
-erfüllt, so können die Mitglieder dieser Gruppe nun ihre Positionsdaten austauschen, ohne diese Möglichweiße Personen mitzuteilen
-für die diese nicht bestimmt sind.\newline
+sollte möglichst wenig Berechnungsaufwand eine möglichst gute Verschlüsselung bieten.\newline
+Will man nun Daten verschlüsseln so benötigen sowohl Sender als auch Empfänger dieser Daten die gleichen Schlüssel. Es wird also
+auch eine Möglichkeit gesucht, mit deren Hilfe man Schlüssel auf eine sichere Art und Weiße übertragen kann. Sind diese
+Anforderungen erfüllt, so können die Mitglieder dieser Gruppe nun ihre Positionsdaten austauschen, ohne diese Möglichweise
+Personen mitzuteilen für die diese Daten nicht bestimmt sind.\newline
Mit diesem gegebenen Protokoll und den Verschlüsselungsverfahren ist es nun ohne weiteres möglich auch Textnachrichten zwischen
zwei Mitgliedern einer Gruppe auszutauschen. \newline
%Wenn nun eine Benutzergruppe dieses Programm nutzen möchte, so sollte dies für sie mit einfachen Mitteln möglich sein. Hierzu
@@ -112,9 +112,9 @@ Positionsdaten in verschlüsselter Form versendet werden. \newline
Um die Position anderer Teilnehmer zu visualisieren sollte das Programm in der Lage sein, die eigehenden Positionsdaten sowohl zu
entschlüsseln, als auch diese auf einer Karte darzustellen. Des weiteren muss ein Format für die Karte genutzt werden, welches auf
-dem mobilen Gerät darstelbar ist und man einfach auf den neusten Stand bringen kann. Es sollte auch möglich sein, nur
-Benutzer innerhalb einer bestimmten Entfernung anzuzeigen, da eine Person die sich in sechs Kilometer Entfernung aufhält für
-Dienste dieser Art nur begrenzt sinnvoll sind. \newline
+dem mobilen Gerät darstelbar ist und man einfach auf den neusten Stand bringen kann. Es werden nur Benutzer innerhalb
+eines Radiuses angezeigt, da die Positionen von Teilnehmern, die sich in größerer Entfernung befinden, schwerer zu erreichen
+sind.\newline
Um die Kommunikation zwischen verschiedenen Teilnehmern zu ermöglichen sollte es möglich sein Chatnachrichten auszutauschen. Auch
hier muss gewährleistet sein, dass der Datenverkehr verschlüsselt abläuft und somit das mitlesen der Konversation nicht möglich
diff --git a/ausarbeitung/Grundlagen.tex.backup b/ausarbeitung/Grundlagen.tex.backup
index 712a9a1..e1c5722 100644
--- a/ausarbeitung/Grundlagen.tex.backup
+++ b/ausarbeitung/Grundlagen.tex.backup
@@ -2,12 +2,11 @@
In diesem ersten Teil dieser Bachelor-Arbeit wird der momentane Stand von \textit{location privacy} Software auf mobilen
Geräten aufgezeigt. \textit{Location privacy} wird von Beresford und Stanjano durch ``...the ability to prevent other parties from
-learning one's current or past position'' \citep{privacy} definiert. Allerdings wurde nach Befragungen von Versuchspersonen
-herausgefunden dass die Anwender mit dem Thema Privatsphäre, in Verbindung mit Diensten die die Position angeben, keinerlei
-Bedenken haben \citep{location}.\newline
+learning one's current or past position'' \citep{privacy} definiert.\newline
Des weiteren werden die Anforderungen, die an ein Programm dieser Art gestellt werden, analysiert.
\subsection{Aktueller Stand}
+
Da so gut wie alle aktuellen Smart Phones mit einem \textit{GPS} ausgestattet sind existieren für die verschiedenen
Betriebssysteme schon eine Reihe von Anwendungen die Funktionalitäten rund um die eigene Position bieten. So existieren
Anwendungen um sich Routen erstellen zu lassen, die eigene Position zu bestimmen oder um \textit{Geocaching} zu betreiben. Es
@@ -15,6 +14,9 @@ existieren auch eine Menge von Anwendungen, die die eigene Position für Freunde
So bietet \textit{Google} beispielsweise den Dienst \textit{Google Latitude} \citep{Latitude} an. Bei diesem Programm ist es
möglich die Position von Freunden, die diesen Dienst auch nutzen, auf einer Karte anzeigen zu lassen. Es besteht hierbei die
Möglichkeit die eigene Position per \textit{GPS} oder mit Hilfe von Daten der \textit{GSM-Funkzelle} zu bestimmen.\newline
+Es wurde in einer Befragung von Versuchspersonen herausgefunden, dass diese keine Bedenken im Bezug auf Positionsdaten und
+Privatsphäre haben \citep{location}. Da es aber immer mehr solcher Dienste gibt, sollte man gerade zum Schutz dieser Benutzer,
+Anwendungen entwickeln welche Wert auf die Wahrung \textit{location privacy } legen.\newline
Um die Positionsdaten auf optimale Art und Weiße zu schützen, sollten diese nur in einem verschlüsselten Format
versendet werden. Positionsdaten stellen für den Nutzer sensible Daten dar, da sie viel über seine Gewohnheiten und täglichen
Ablauf verraten können. Wenn man diese Daten unverschlüsselt versendet so begibt man sich in die Gefahr das regelmäßige
@@ -37,14 +39,14 @@ von \textit{location privacy} entgegenkommen.\newline
Die Verbreitung von solchen mobilen Geräten hat in den letzten Jahren beständig zugenommen und alle neueren Modelle besitzen ein
\textit{GPS}-Modul. Des weiteren sind alle modernen Geräte in der Lage, Daten sowohl über den \textit{3G}-Standart
sowie per \textit{WLAN} zu übertragen. Wenn nun eine Gruppe, welche mit entsprechenden mobilen Geräten ausgestattet ist,
-die Positionen austauschen möchte, so wird zuallerst ein Protokoll benötigt welches die Daten versenden kann. Dieses Protokoll
+die Positionen austauschen möchte, so wird zuallererst ein Protokoll benötigt welches die Daten versenden kann. Dieses Protokoll
sollte sowohl verlässlich als auch für langsame Netze konzipiert sein. Im nächsten Schritt soll diese Verbindung nun nur
verschlüsselte Daten übertragen. Hierzu wird also ein geeigneter Algorithmus benötigt, welcher die Daten verschlüsselt. Dieser
-sollte dabei bei möglichst wenig Berechnungsaufwand eine möglichst gute Verschlüsselung bieten.\newline
-Will man nun Daten verschlüsseln so benötigen sowohl Sender als auch Empfänger die gleichen Schlüssel. Es wird also auch eine
-Möglichkeit gesucht, mit deren Hilfe man Schlüssel auf eine sichere Art und Weiße übertragen kann. Sind diese Anforderungen
-erfüllt, so können die Mitglieder dieser Gruppe nun ihre Positionsdaten austauschen, ohne diese Möglichweiße Personen mitzuteilen
-für die diese nicht bestimmt sind.\newline
+sollte möglichst wenig Berechnungsaufwand eine möglichst gute Verschlüsselung bieten.\newline
+Will man nun Daten verschlüsseln so benötigen sowohl Sender als auch Empfänger dieser Daten die gleichen Schlüssel. Es wird also
+auch eine Möglichkeit gesucht, mit deren Hilfe man Schlüssel auf eine sichere Art und Weiße übertragen kann. Sind diese
+Anforderungen erfüllt, so können die Mitglieder dieser Gruppe nun ihre Positionsdaten austauschen, ohne diese Möglichweise
+Personen mitzuteilen für die diese Daten nicht bestimmt sind.\newline
Mit diesem gegebenen Protokoll und den Verschlüsselungsverfahren ist es nun ohne weiteres möglich auch Textnachrichten zwischen
zwei Mitgliedern einer Gruppe auszutauschen. \newline
%Wenn nun eine Benutzergruppe dieses Programm nutzen möchte, so sollte dies für sie mit einfachen Mitteln möglich sein. Hierzu
@@ -80,13 +82,15 @@ zwei Mitgliedern einer Gruppe auszutauschen. \newline
\subsection{Ziele}
-Die Anwendung eines solchen Programmes soll dem Nutzer möglichst einfach gemacht werden. Es soll also sicher gestellt sein, dass
-es auch Benutzern ohne Fachkentniss möglich ist, die benötigten Schlüssel untereinander auszutauschen und somit festzulegen wer
-alles diese Positionsdaten einsehen darf. Dies ist notwendig um auch Personen, die mit der Thematik von \textit{location privacy}
-noch nicht so vertraut sind, die Nutzung des Programmes zu ermöglichen. Des weiteren muss beim Schlüsselaustausch gewährleistet
-sein, dass der Schlüssel auf eine sichere Art und Weiße übertragen wird, ohne das andere diesen mitlesen können. Hierbei muss
-allerdings beachtet werden, dass diese Software auf mobilen Geräten lauffähig sein soll. Es sollte also gewährleistet werden dass
-die genutzten Algorithmen nicht zu berechnungsintensiv sind, die Datensicherheit aber trotz allem gegeben ist. \newline
+Die Anwendung eines solchen Programmes soll dem Nutzer möglichst einfach gemacht werden und trotzdem die gesetzten Ziele, wie die
+Verschlüsselung der Daten und Nutzung einer dezentralen Infrastruktur, erfüllen. \newline
+
+Es soll also sicher gestellt sein, dass es auch Benutzern ohne Fachkentniss möglich ist, die benötigten Schlüssel untereinander
+auszutauschen und somit festzulegen wer alles diese Positionsdaten einsehen darf. Des weiteren muss beim Schlüsselaustausch
+gewährleistet sein, dass der Schlüssel auf eine sichere Art und Weiße übertragen wird, ohne das andere diesen mitlesen können.
+Hierbei muss allerdings beachtet werden, dass diese Software auf mobilen Geräten lauffähig sein soll. Es sollte also gewährleistet
+werden dass die genutzten Algorithmen nicht zu berechnungsintensiv sind, die Datensicherheit aber trotz allem gegeben ist.
+\newline
Da auch ein zentraler Knoten, über den der gesamte Datenverkehr aller Benutzer läuft, unerwünscht ist, muss hier ein
Kommunikationsdienst genutzt werden, welcher ein dezentrales Prinzip verfolgt. Auch hier muss, wie bei der
diff --git a/ausarbeitung/Grundlagen.tex~ b/ausarbeitung/Grundlagen.tex~
index 68519a1..16e08cc 100644
--- a/ausarbeitung/Grundlagen.tex~
+++ b/ausarbeitung/Grundlagen.tex~
@@ -15,7 +15,7 @@ So bietet \textit{Google} beispielsweise den Dienst \textit{Google Latitude} \ci
möglich die Position von Freunden, die diesen Dienst auch nutzen, auf einer Karte anzeigen zu lassen. Es besteht hierbei die
Möglichkeit die eigene Position per \textit{GPS} oder mit Hilfe von Daten der \textit{GSM-Funkzelle} zu bestimmen.\newline
Es wurde in einer Befragung von Versuchspersonen herausgefunden, dass diese keine Bedenken im Bezug auf Positionsdaten und
-Privatsphäre haben \citep{location}. Da es aber immer mehr solcher Dienste gibt, sollte man gerade zum Schutz diese Benutzer,
+Privatsphäre haben \citep{location}. Da es aber immer mehr solcher Dienste gibt, sollte man gerade zum Schutz dieser Benutzer,
Anwendungen entwickeln welche Wert auf die Wahrung \textit{location privacy } legen.\newline
Um die Positionsdaten auf optimale Art und Weiße zu schützen, sollten diese nur in einem verschlüsselten Format
versendet werden. Positionsdaten stellen für den Nutzer sensible Daten dar, da sie viel über seine Gewohnheiten und täglichen
@@ -39,14 +39,14 @@ von \textit{location privacy} entgegenkommen.\newline
Die Verbreitung von solchen mobilen Geräten hat in den letzten Jahren beständig zugenommen und alle neueren Modelle besitzen ein
\textit{GPS}-Modul. Des weiteren sind alle modernen Geräte in der Lage, Daten sowohl über den \textit{3G}-Standart
sowie per \textit{WLAN} zu übertragen. Wenn nun eine Gruppe, welche mit entsprechenden mobilen Geräten ausgestattet ist,
-die Positionen austauschen möchte, so wird zuallerst ein Protokoll benötigt welches die Daten versenden kann. Dieses Protokoll
+die Positionen austauschen möchte, so wird zuallererst ein Protokoll benötigt welches die Daten versenden kann. Dieses Protokoll
sollte sowohl verlässlich als auch für langsame Netze konzipiert sein. Im nächsten Schritt soll diese Verbindung nun nur
verschlüsselte Daten übertragen. Hierzu wird also ein geeigneter Algorithmus benötigt, welcher die Daten verschlüsselt. Dieser
-sollte dabei bei möglichst wenig Berechnungsaufwand eine möglichst gute Verschlüsselung bieten.\newline
-Will man nun Daten verschlüsseln so benötigen sowohl Sender als auch Empfänger die gleichen Schlüssel. Es wird also auch eine
-Möglichkeit gesucht, mit deren Hilfe man Schlüssel auf eine sichere Art und Weiße übertragen kann. Sind diese Anforderungen
-erfüllt, so können die Mitglieder dieser Gruppe nun ihre Positionsdaten austauschen, ohne diese Möglichweiße Personen mitzuteilen
-für die diese nicht bestimmt sind.\newline
+sollte möglichst wenig Berechnungsaufwand eine möglichst gute Verschlüsselung bieten.\newline
+Will man nun Daten verschlüsseln so benötigen sowohl Sender als auch Empfänger dieser Daten die gleichen Schlüssel. Es wird also
+auch eine Möglichkeit gesucht, mit deren Hilfe man Schlüssel auf eine sichere Art und Weiße übertragen kann. Sind diese
+Anforderungen erfüllt, so können die Mitglieder dieser Gruppe nun ihre Positionsdaten austauschen, ohne diese Möglichweise
+Personen mitzuteilen für die diese Daten nicht bestimmt sind.\newline
Mit diesem gegebenen Protokoll und den Verschlüsselungsverfahren ist es nun ohne weiteres möglich auch Textnachrichten zwischen
zwei Mitgliedern einer Gruppe auszutauschen. \newline
%Wenn nun eine Benutzergruppe dieses Programm nutzen möchte, so sollte dies für sie mit einfachen Mitteln möglich sein. Hierzu
@@ -112,9 +112,9 @@ Positionsdaten in verschlüsselter Form versendet werden. \newline
Um die Position anderer Teilnehmer zu visualisieren sollte das Programm in der Lage sein, die eigehenden Positionsdaten sowohl zu
entschlüsseln, als auch diese auf einer Karte darzustellen. Des weiteren muss ein Format für die Karte genutzt werden, welches auf
-dem mobilen Gerät darstelbar ist und man einfach auf den neusten Stand bringen kann. Es sollte auch möglich sein, nur
-Benutzer innerhalb einer bestimmten Entfernung anzuzeigen, da eine Person die sich in sechs Kilometer Entfernung aufhält für
-Dienste dieser Art nur begrenzt sinnvoll sind. \newline
+dem mobilen Gerät darstelbar ist und man einfach auf den neusten Stand bringen kann. Es werden nur Benutzer innerhalb
+eines Radiuses angezeigt, da die Positionen von Teilnehmern, die sich in größerer Entfernung befinden, schwerer zu erreichen
+sind.\newline
Um die Kommunikation zwischen verschiedenen Teilnehmern zu ermöglichen sollte es möglich sein Chatnachrichten auszutauschen. Auch
hier muss gewährleistet sein, dass der Datenverkehr verschlüsselt abläuft und somit das mitlesen der Konversation nicht möglich
diff --git a/ausarbeitung/maindoc.log b/ausarbeitung/maindoc.log
index d8a3ab7..1a50faf 100644
--- a/ausarbeitung/maindoc.log
+++ b/ausarbeitung/maindoc.log
@@ -1,7 +1,7 @@
-This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2009.12.22) 18 FEB 2010 18:50
+This is pdfTeXk, Version 3.141592-1.40.3 (Web2C 7.5.6) (format=pdflatex 2009.12.22) 18 FEB 2010 19:46
entering extended mode
%&-line parsing enabled.
-**maindoc
+**maindoc.tex
(./maindoc.tex
LaTeX2e <2005/12/01>
Babel <v3.8h> and hyphenation patterns for english, usenglishmax, dumylang, noh
@@ -1124,7 +1124,7 @@ Here is how much of TeX's memory you used:
11546 multiletter control sequences out of 10000+50000
24736 words of font info for 62 fonts, out of 1200000 for 2000
28 hyphenation exceptions out of 8191
- 35i,11n,46p,303b,538s stack positions out of 5000i,500n,6000p,200000b,5000s
+ 35i,11n,46p,307b,538s stack positions out of 5000i,500n,6000p,200000b,5000s
{/usr/share/texmf-texlive/
fonts/enc/dvips/base/8r.enc}</usr/share/texmf-texlive/fonts/type1/bluesky/cm/cm
mi10.pfb></usr/share/texmf-texlive/fonts/type1/bluesky/cm/cmr10.pfb></usr/share
diff --git a/ausarbeitung/maindoc.pdf b/ausarbeitung/maindoc.pdf
index 0bab1b0..466717f 100644
--- a/ausarbeitung/maindoc.pdf
+++ b/ausarbeitung/maindoc.pdf
Binary files differ
diff --git a/friendfinder/Makefile.inc b/friendfinder/Makefile.inc
index cd381c4..819e7c7 100644
--- a/friendfinder/Makefile.inc
+++ b/friendfinder/Makefile.inc
@@ -19,6 +19,7 @@ OBJECTS += receiver.o
OBJECTS += sender.o
OBJECTS += read_file.o
OBJECTS += barcode.o
+OBJECTS += crypto.o
OBJECTS += e_smart_tile.o
OBJECTS += e_smart_map.o
diff --git a/friendfinder/draw_user.c b/friendfinder/draw_user.c
index 5e877c1..c65fb83 100644
--- a/friendfinder/draw_user.c
+++ b/friendfinder/draw_user.c
@@ -52,13 +52,13 @@ void draw_user(struct position *pos)
if (sender_lat > 0 && sender_lon > 0)
{
- printf("sender_lat %f \n", sender_lat);
+ /* printf("sender_lat %f \n", sender_lat);
printf("sender_lon %f \n", sender_lon);
- printf("sender_nick %s \n", pos->nick);
+ printf("sender_nick %s \n", pos->nick);*/
if (active_map == 1 && test_distance(sender_lat, sender_lon, e, n, own_lat, own_lon, own_e, own_n) == 1)
{
- printf("PRINTING nick: %s lat: %f lon: %f \n", pos->nick, sender_lat, sender_lon, pos->lon);
+ // printf("PRINTING nick: %s lat: %f lon: %f \n", pos->nick, sender_lat, sender_lon, pos->lon);
e_smart_map_overlay_set_bubble(map, "routing", pos->nick, pos->nick, sender_lat, sender_lon, 0xffffffff);
}
}
diff --git a/friendfinder/e_smart_map.c b/friendfinder/e_smart_map.c
index 7f19a2e..d87335d 100644
--- a/friendfinder/e_smart_map.c
+++ b/friendfinder/e_smart_map.c
@@ -65,7 +65,7 @@ static struct bubble *create_text_bubble(struct smart_map *smart, char *info, ch
bubble->bb = elm_bubble_add(smart->win);
elm_bubble_info_set(bubble->bb, info);
evas_object_size_hint_min_set(bubble->bb, 150, 150);
- evas_object_size_hint_max_set(bubble->bb, 300, 300);
+ evas_object_size_hint_max_set(bubble->bb, 300, 300);
evas_object_size_hint_weight_set(bubble->bb, 1.0, 1.0);
evas_object_size_hint_align_set(bubble->bb, 0.0, 0.0);
elm_bubble_content_set(bubble->bb, bubble->av);
@@ -84,14 +84,29 @@ static struct bubble *create_text_bubble(struct smart_map *smart, char *info, ch
return bubble;
}
+struct bubble *bb;
+first_draw = 0;
void e_smart_map_overlay_set_bubble(Evas_Object *o, char *overlay, char *info, char *text, double lat, double lon, int flags)
{
struct smart_map *smart;
smart = evas_object_smart_data_get(o);
- struct bubble *bb;
+ //struct bubble *bb;
+
+ if (first_draw == 0)
+ {
+ bb = create_text_bubble(smart, info, text);
+
+ first_draw = 1;
+ }
+
+ if (first_draw = 1)
+ {
+ evas_object_del(bb->bb);
+ bb = create_text_bubble(smart, info, text);
+ }
+
struct overlay_item *poi = malloc(sizeof(struct overlay_item));
- bb = create_text_bubble(smart, info, text);
poi->obj = &bb->object;
poi->lat = lat;
diff --git a/friendfinder/gui b/friendfinder/gui
index cce80ee..64b740a 100755
--- a/friendfinder/gui
+++ b/friendfinder/gui
Binary files differ
diff --git a/friendfinder/receiver.c b/friendfinder/receiver.c
index 1295983..ee02249 100644
--- a/friendfinder/receiver.c
+++ b/friendfinder/receiver.c
@@ -8,6 +8,7 @@
#include "draw_user.h"
#include "read_file.h"
#include "receiver.h"
+#include "cryptossl.h"
static irc_session_t *session;
irc_callbacks_t callbacks;
@@ -110,16 +111,16 @@ int get_sender_array_pos(char* nick)
{
for (int i = 0; i < s_sender_size; i++)
{
- if (s_sender[i]->is_init == 1 && strlen(s_sender[i]->nick) == 0)//strcmp(s_sender[i]->nick, nick) == 0)
+ if (s_sender[i]->is_init == 0)// && strcmp(s_sender[i]->nick, nick) != 0)
{
+ s_sender[i]->is_init = 1;
+ strcpy(s_sender[i]->nick, nick);
+
return i;
}
- if (s_sender[i]->is_init == 0 && strcmp(s_sender[i]->nick, nick) != 0)
+ else if (s_sender[i]->is_init == 1 && strcmp(s_sender[i]->nick, nick) == 0)
{
- s_sender[i]->is_init = 1;
- memcpy(s_sender[i]->nick, nick, strlen(nick));
-
return i;
}
}
@@ -157,8 +158,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
if (_sender->lat_first_set == 1 && _sender->lat_second_set == 1)
{
- memcpy(_sender->lat, _sender->lat_first, strlen(_sender->lat_first));
-
+ memcpy(_sender->lat, _sender->lat_first, sizeof(_sender->lat_first));
strcat(_sender->lat, _sender->lat_second);
_sender->lat_set = 1;
@@ -171,8 +171,9 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
if (_sender->lon_first_set == 1 && _sender->lon_second_set == 1)
{
- memcpy(_sender->lon, _sender->lon_first, strlen(_sender->lon_first));
+ memcpy(_sender->lon, _sender->lon_first, sizeof(_sender->lon_first));
strcat(_sender->lon, _sender->lon_second);
+
_sender->lon_set = 1;
_sender->lon_first_set = 0;
_sender->lon_second_set = 0;
@@ -181,7 +182,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
_sender->lon_second[0] = '\0';
}
- printf("lon_set: %i \n", _sender->lon_set);
+/* printf("lon_set: %i \n", _sender->lon_set);
printf("lon: %s \n", _sender->lon);
printf("lat_set: %i \n", _sender->lat_set);
printf("lat: %s \n", _sender->lat);
@@ -196,7 +197,7 @@ void repair_position(struct sender *_sender, unsigned char *decrypted)
printf("first_lat: %s \n", _sender->lat_first);
printf("second_lat_set: %i \n", _sender->lat_second_set);
printf("second_lat: %s \n", _sender->lat_second);
- printf("====================== \n");
+ printf("====================== \n");*/
}
@@ -216,7 +217,8 @@ void get_position(irc_session_t * session, const char * event, const char * orig
disconnect_receiver(session, event, origin, params, count);
unsigned char *decrypted;
-
+ unsigned char *encrypted_base64;
+
char *sender_org = (char*) malloc(username_length + 1);
irc_target_get_nick(origin, sender_name, sizeof(sender_name));
@@ -227,28 +229,36 @@ void get_position(irc_session_t * session, const char * event, const char * orig
&& strcmp(params[1], "ack") != 0)
{
int pos = get_sender_array_pos(sender_org);
-
+
if (s_sender[pos]->lat_set == 0)
{
+ encrypted_base64 = (char*) malloc(sizeof(char) * 50);
decrypted = (char*) malloc(sizeof(char) * 7);
- BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
+ from_base64(params[1], strlen(params[1]), encrypted_base64, 50);
+ BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT);
+
decrypted[strlen(decrypted)] = '\0';
repair_position(s_sender[pos], decrypted);
+ free(encrypted_base64);
free(decrypted);
}
else if (s_sender[pos]->lon_set == 0)
{
+ encrypted_base64 = (char*) malloc(sizeof(char) * 50);
decrypted = (char*) malloc(sizeof(char) * 7);
- BF_ecb_encrypt(params[1], decrypted, &key, BF_DECRYPT);
+ from_base64(params[1], strlen(params[1]), encrypted_base64, 50);
+ BF_ecb_encrypt(encrypted_base64, decrypted, &key, BF_DECRYPT);
+
decrypted[strlen(decrypted)] = '\0';
repair_position(s_sender[pos], decrypted);
+ free(encrypted_base64);
free(decrypted);
}
@@ -291,8 +301,7 @@ void get_position(irc_session_t * session, const char * event, const char * orig
void init_sender_struct(int number)
{
-// s_sender = (struct sender(*)[number]) malloc(sizeof(struct sender*) * number);
- s_sender = (struct sender(*)[number]) malloc(sizeof(struct sender) * number);
+ s_sender = (struct sender**) malloc(sizeof(struct sender*) * number);
s_sender_size = number;
@@ -301,13 +310,13 @@ void init_sender_struct(int number)
s_sender[i] = (struct sender*) malloc(sizeof(struct sender));
s_sender[i]->nick = (char*) malloc(sizeof(char) * 20);
- s_sender[i]->nick[0] = '\0';
+ // s_sender[i]->nick[0] = '\0';
s_sender[i]->lat = (char*) malloc(sizeof(char) * 10);
- s_sender[i]->lat[0] = '\0';
+// s_sender[i]->lat[0] = '\0';
s_sender[i]->lon = (char*) malloc(sizeof(char) * 10);
- s_sender[i]->lon[0] = '\0';
+// s_sender[i]->lon[0] = '\0';
// s_sender[i]->is_init = (int) malloc(sizeof(int));
s_sender[i]->is_init = 0;
diff --git a/friendfinder/sender.c b/friendfinder/sender.c
index 1d157cb..6f67730 100644
--- a/friendfinder/sender.c
+++ b/friendfinder/sender.c
@@ -7,6 +7,7 @@
#include "openssl/blowfish.h"
#include "sender.h"
#include "read_file.h"
+#include "cryptossl.h"
static irc_session_t *session;
irc_callbacks_t callbacks;
@@ -143,6 +144,12 @@ void send_position(irc_session_t * session, const char * event, const char * ori
unsigned char *crypted_lon_second = (char*) malloc(sizeof(char) * 9);
crypted_lon_second[0] = '\0';
+ unsigned char *crypted_lat_first_base64 = (char*) malloc(sizeof(char) * 50);
+ unsigned char *crypted_lat_second_base64 = (char*) malloc(sizeof(char) * 50);
+ unsigned char *crypted_lon_first_base64 = (char*) malloc(sizeof(char) * 50);
+ unsigned char *crypted_lon_second_base64 = (char*) malloc(sizeof(char) * 50);
+
+
if (first_send == 0)
{
@@ -179,14 +186,20 @@ void send_position(irc_session_t * session, const char * event, const char * ori
BF_ecb_encrypt(pos->lon_first, crypted_lon_first, &key, BF_ENCRYPT);
BF_ecb_encrypt(pos->lon_second, crypted_lon_second, &key, BF_ENCRYPT);
-
- irc_cmd_msg(session, "#test", crypted_lat_first);
+
+ to_base64(crypted_lat_first, strlen(crypted_lat_first), crypted_lat_first_base64, 50);
+ to_base64(crypted_lat_second, strlen(crypted_lat_second), crypted_lat_second_base64, 50);
+
+ to_base64(crypted_lon_first, strlen(crypted_lon_first), crypted_lon_first_base64, 50);
+ to_base64(crypted_lon_second, strlen(crypted_lon_second), crypted_lon_second_base64, 50);
+
+ irc_cmd_msg(session, "#test", crypted_lat_first_base64);
- irc_cmd_msg(session, "#test", crypted_lat_second);
+ irc_cmd_msg(session, "#test", crypted_lat_second_base64);
- irc_cmd_msg(session, "#test", crypted_lon_first);
+ irc_cmd_msg(session, "#test", crypted_lon_first_base64);
- irc_cmd_msg(session, "#test", crypted_lon_second);
+ irc_cmd_msg(session, "#test", crypted_lon_second_base64);
//increase counter variable, which counts number of send positions!
msg_count = msg_count + 2;