2020-03-11 21:01:54 +00:00
|
|
|
//////////////////////////////////////////////////
|
|
|
|
// Bakalarska praca //
|
|
|
|
// Meno studenta: Tomas Lukac //
|
|
|
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
|
|
|
// Skola: KEMT FEI TUKE //
|
2020-03-12 16:22:08 +00:00
|
|
|
// Datum poslednej upravy: 12.3.2020 //
|
2020-03-11 21:01:54 +00:00
|
|
|
//////////////////////////////////////////////////
|
|
|
|
|
|
|
|
#ifndef __KOMUNIKACIA_H__
|
|
|
|
#define __KOMUNIKACIA_H__
|
|
|
|
|
|
|
|
#include <stdio.h>
|
|
|
|
#include <stdlib.h>
|
|
|
|
#include <string.h>
|
|
|
|
#include <wolfssl/ssl.h>
|
|
|
|
|
2020-03-19 12:55:34 +00:00
|
|
|
#include "kryptografia.h"
|
|
|
|
|
2020-03-12 16:22:08 +00:00
|
|
|
#define VELKOST_CESTY 64 //velkost retazca, kt. uklada lokaciu suboru
|
|
|
|
#define VELKOST_SUBOR 32 //velkost retazca, kt. uklada velkost prenasaneho suboru
|
|
|
|
|
2020-03-11 21:01:54 +00:00
|
|
|
#if defined(_WIN32)
|
|
|
|
//makro ktore urcuje win distribuciu ak nieje detekovana
|
|
|
|
#ifndef _WIN32_WINNT
|
|
|
|
#define _WIN32_WINNT 0x0600
|
|
|
|
#endif
|
|
|
|
#include <winsock.h>
|
|
|
|
#include <windows.h>
|
|
|
|
#include <ws2tcpip.h>
|
|
|
|
#define ukoncit_soket closesocket
|
|
|
|
#define socklen_t int
|
|
|
|
#define EINPROGRESS WSAEINPROGRESS
|
|
|
|
#define EINTR WSAEINTR
|
|
|
|
|
|
|
|
//hovori visual c prekladacu aby nalinkoval ws2_32 kniznicu
|
|
|
|
//ak pouzivame minqw pragma sa ignoruje a musime ju zadat pri kompilaci manualne : -lws2_32
|
|
|
|
#pragma comment(lib, "ws2_32.lib")
|
|
|
|
#else
|
|
|
|
#include <sys/types.h>
|
|
|
|
#include <sys/socket.h>
|
|
|
|
#include <netinet/in.h>
|
|
|
|
#include <arpa/inet.h>
|
|
|
|
#include <netdb.h>
|
|
|
|
#include <unistd.h>
|
|
|
|
#include <errno.h>
|
|
|
|
#define ukoncit_soket close
|
|
|
|
#endif
|
|
|
|
|
|
|
|
//////////////////////////////
|
|
|
|
// TCP/IP KOMUNIKACNY KANAL //
|
|
|
|
//////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
* pripojit_na_server: realizuje pripojenie na server
|
|
|
|
* @parameter char* ip_adresa : ip adresa servera, na ktory sa chce klient pripojit
|
|
|
|
* @parameter int cislo_portu : cislo portu na ktorom server ocakava komunikaciu
|
|
|
|
* @parameter int pocet_sekund : casovy interval
|
|
|
|
* @vrati int : cislo soketu
|
|
|
|
*/
|
|
|
|
int pripojit_na_server(char *ip_adresa, int cislo_portu, int pocet_sekund);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* cakat_na_komunikaciu : realizuje vytvorenie soketu a jeho priradenie ku portu,
|
|
|
|
* na ktorom server ocakava komunikaciu
|
|
|
|
* @parameter int cislo_portu: cislo portu na ktorom server bude ocakavat komunikaciu
|
|
|
|
* @vrati int : cislo soketu
|
|
|
|
*/
|
|
|
|
int cakat_na_komunikaciu(int cislo_portu);
|
|
|
|
|
|
|
|
/////////////////////////////
|
|
|
|
// RS232 KOMUNIKACNY KANAL //
|
|
|
|
/////////////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rs232_zapis: umoznuje zapis dat do serialoveho portu
|
|
|
|
* @parameter WOLSSL* ssl : ukazuje na aktualnu relaciu
|
|
|
|
* @parameter char* buf : ukazuje na buffer, do kt. zapise wolfssl zasifrovany text na odoslanie
|
|
|
|
* @parameter int sz : velkost buffera
|
|
|
|
* @parameter void* ctx : ukazuje na WOLFSSL_CTX strukturu
|
|
|
|
* @vrati int
|
|
|
|
*/
|
|
|
|
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* rs232_citanie: umoznuje citanie dat zo serialoveho portu
|
|
|
|
* @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu
|
|
|
|
* @parameter char* buf : ukazuje na buffer, kde prichadzajuci zasifrovany text by mal byt nakopirovany
|
|
|
|
* aby ho wolfssl mohla odsifrovat
|
|
|
|
* @parameter int sz : velkost buffera
|
|
|
|
* @parameter void* ctx : ukazuje na WOLFSSL_CTX strukturu
|
|
|
|
* @vrati int
|
|
|
|
*/
|
|
|
|
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx);
|
|
|
|
|
|
|
|
//////////////////////
|
|
|
|
// PRACA SO SUBORMI //
|
|
|
|
//////////////////////
|
|
|
|
|
|
|
|
/**
|
|
|
|
* poslat_subor: realizuje odoslanie suboru
|
|
|
|
* @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu
|
|
|
|
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
|
|
|
* @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru
|
|
|
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
|
|
|
*/
|
|
|
|
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta);
|
|
|
|
|
|
|
|
/**
|
|
|
|
* prijat_subor: realizuje prijem suboru
|
|
|
|
* @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu
|
|
|
|
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
|
|
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
|
|
|
*/
|
|
|
|
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx);
|
|
|
|
|
2020-03-19 12:55:34 +00:00
|
|
|
/**
|
|
|
|
* nastav_funkciu: nastavi hashovaciu funkciu ktora bude pouzita pri vypocte kontrolneho suctu suboru
|
|
|
|
* @paramater hashovacia_funkcia funkcia : nazov hashovacej funkcie
|
|
|
|
moznosti: funkcia_SHA, funkcia_SHA224, funkcia_SHA256, funkcia_SHA384, funkcia_SHA512, funkcia_BLAKE2B, funkcia_RIPEMD160
|
|
|
|
*/
|
|
|
|
void nastav_funkciu(hashovacia_funkcia funkcia);
|
|
|
|
|
|
|
|
|
2020-03-11 21:01:54 +00:00
|
|
|
#endif
|