This commit is contained in:
tom_win 2020-04-10 19:04:14 +02:00
parent dcc301c745
commit 0a572e0d27
8 changed files with 65 additions and 34 deletions

View File

@ -10,7 +10,7 @@
#include "kryptografia.h" #include "kryptografia.h"
#include "rs232.h" #include "rs232.h"
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta, nastavenia_aplikacie *nastavenia) int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie *nastavenia)
{ {
int uspech; int uspech;

View File

@ -89,7 +89,7 @@ int cakat_na_komunikaciu(int cislo_portu);
* @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru * @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru
* @vrati int : operacia bola uspesna(0), neuspesna(-1) * @vrati int : operacia bola uspesna(0), neuspesna(-1)
*/ */
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta, nastavenia_aplikacie* nastavenia); int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia);
/** /**
* prijat_subor: realizuje prijem suboru * prijat_subor: realizuje prijem suboru

View File

@ -544,7 +544,7 @@ void zobraz_certifikat(WOLFSSL* ssl)
X509_free(certifikat); X509_free(certifikat);
} }
byte* generovat_kontrolny_sucet_suboru(hashovacia_funkcia funkcia, char* cesta, int* velkost) byte* generovat_kontrolny_sucet_suboru(hashovacia_funkcia funkcia, const char* cesta, int* velkost)
{ {
int pocet_bajtov; int pocet_bajtov;
FILE* subor = fopen(cesta, "rb"); FILE* subor = fopen(cesta, "rb");

View File

@ -41,7 +41,7 @@ typedef struct nastavenia_aplikacie {
* na zaklade nazvu funkcie uvedenom v prvom argumente * na zaklade nazvu funkcie uvedenom v prvom argumente
* @vrati smernik na vygenerovany hash * @vrati smernik na vygenerovany hash
*/ */
byte* generovat_kontrolny_sucet_suboru(hashovacia_funkcia funkcia, char* cesta, int* velkost); byte* generovat_kontrolny_sucet_suboru(hashovacia_funkcia funkcia, const char* cesta, int* velkost);
/** /**
* generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority, * generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority,

View File

@ -41,7 +41,8 @@
#define KOMUNIKACNY_SUBOR "klient.txt" #define KOMUNIKACNY_SUBOR "klient.txt"
int rs232_prijat; int rs232_prijat;
int cislo_rozhrania = 4; int cislo_rozhrania = 0;
int prebieha_nacitanie = 0;
int aktualne_data = 0; int aktualne_data = 0;
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx) int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
@ -53,7 +54,6 @@ int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
{ {
FILE* f = fopen(KOMUNIKACNY_SUBOR, "ab"); FILE* f = fopen(KOMUNIKACNY_SUBOR, "ab");
int nacitane_data = 0; int nacitane_data = 0;
int prebieha_nacitanie = 0;
unsigned char znak; unsigned char znak;
//kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy //kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy
@ -67,26 +67,43 @@ int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
uspech = RS232_PollComport(cislo_rozhrania, &znak, 1); uspech = RS232_PollComport(cislo_rozhrania, &znak, 1);
if(uspech > 0) if(uspech > 0)
{ {
if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia <= 2)) if(!prebieha_nacitanie && (znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia <= 2))
{ {
zaciatok_spravy_pozicia++; zaciatok_spravy_pozicia++;
} }
else if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia > 2)) else if(!prebieha_nacitanie && (znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia == 3))
{ {
//ak bol najdeny koniec kontrolneho vzoru, tak je zapnuta znacka, //ak bol najdeny koniec kontrolneho vzoru, tak je zapnuta znacka,
//ktora urcuje ze prebieha nacitavanie spravy //ktora urcuje ze prebieha nacitavanie spravy
prebieha_nacitanie = 1; prebieha_nacitanie = 1;
zaciatok_spravy_pozicia = 0; zaciatok_spravy_pozicia = 0;
//zaciatok_spravy_pozicia = 0;
} }
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia <= 2)) else if((prebieha_nacitanie && (znak == koniec_spravy[0]) && (koniec_spravy_pozicia == 0)) || (!prebieha_nacitanie && (znak == koniec_spravy[0]) && (koniec_spravy_pozicia <= 2)))
{ {
koniec_spravy_pozicia++; koniec_spravy_pozicia++;
prebieha_nacitanie = 0;
} }
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia > 2)) else if(!prebieha_nacitanie && znak != koniec_spravy[0])
{
for(int i = 0; i < koniec_spravy_pozicia; i++)
{
fwrite((char*)&koniec_spravy[i], 1, uspech, f);
nacitane_data += uspech;
}
fwrite((char*)&znak, 1, uspech, f);
nacitane_data += uspech;
koniec_spravy_pozicia = 0;
prebieha_nacitanie = 1;
}
else if(!prebieha_nacitanie && (znak == koniec_spravy[0]) && (koniec_spravy_pozicia == 3))
{ {
//ak bol najdeny koniec kontrolneho vzoru, tak je vypnuta znacka, //ak bol najdeny koniec kontrolneho vzoru, tak je vypnuta znacka,
//ktora urcuje ze prebieha nacitanie spravy //ktora urcuje ze prebieha nacitanie spravy
prebieha_nacitanie = 0; prebieha_nacitanie = 0;
koniec_spravy_pozicia = 0;
//koniec_spravy_pozicia = 0;
break; break;
} }
else else
@ -99,11 +116,10 @@ int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
} }
} }
} }
printf("Nacital som %d dat\n", nacitane_data); aktualne_data = nacitane_data;
aktualne_data = nacitane_data; nacitane_data = 0;
fclose(f); fclose(f);
} }
//nacitanie dat zo suboru do buffera //nacitanie dat zo suboru do buffera
uspech = 0; uspech = 0;
while(uspech <= 0) while(uspech <= 0)
@ -119,9 +135,9 @@ int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
unsigned char zaciatok_spravy[] = {0xAA, 0xAA, 0xAA, 0xAA}; unsigned char zaciatok_spravy[] = {0xAA, 0xAA, 0xAA, 0xAA};
unsigned char koniec_spravy[] = {0xBB, 0xBB, 0xBB, 0xBB}; unsigned char koniec_spravy[] = {0xBB, 0xBB, 0xBB, 0xBB};
RS232_SendBuf(cislo_rozhrania, (unsigned char*)zaciatok_spravy, sizeof(zaciatok_spravy)); RS232_SendBuf(cislo_rozhrania, (unsigned char*)zaciatok_spravy, sizeof(zaciatok_spravy));
uspech = (int)RS232_SendBuf(cislo_rozhrania, (unsigned char*)buf, (size_t)sz); uspech = (int)RS232_SendBuf(cislo_rozhrania, (unsigned char*)buf, sz);
RS232_SendBuf(cislo_rozhrania, (unsigned char*)koniec_spravy, sizeof(koniec_spravy)); RS232_SendBuf(cislo_rozhrania, (unsigned char*)koniec_spravy, sizeof(koniec_spravy));
printf("Odoslal som %d %d\n", uspech, sz); RS232_flushTX(cislo_rozhrania);
return uspech; return uspech;
} }
@ -132,7 +148,7 @@ int main(int argc, char const *argv[])
int rychlost = 9600; int rychlost = 9600;
WOLFSSL *ssl; WOLFSSL *ssl;
WOLFSSL_CTX *ctx = NULL; WOLFSSL_CTX *ctx = NULL;
char* subor = NULL; const char* subor = NULL;
int zadane_rozhranie = 0; int zadane_rozhranie = 0;
int uvedeny_subor = 0; int uvedeny_subor = 0;
int nacitanie_zo_suboru = 0; int nacitanie_zo_suboru = 0;
@ -203,7 +219,6 @@ int main(int argc, char const *argv[])
} }
else if(!strcmp(argv[i+1], "ecc")) else if(!strcmp(argv[i+1], "ecc"))
{ {
printf("jo\n");
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_ecc.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_ecc.pem", NULL);
if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1; if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0); wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);

Binary file not shown.

View File

@ -42,8 +42,10 @@
int rs232_prijat; int rs232_prijat;
int cislo_rozhrania = 0; int cislo_rozhrania = 0;
int prebieha_nacitanie = 0;
int aktualne_data = 0; int aktualne_data = 0;
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx) int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
{ {
int uspech = 0; int uspech = 0;
@ -53,7 +55,6 @@ int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
{ {
FILE* f = fopen(KOMUNIKACNY_SUBOR, "ab"); FILE* f = fopen(KOMUNIKACNY_SUBOR, "ab");
int nacitane_data = 0; int nacitane_data = 0;
int prebieha_nacitanie = 0;
unsigned char znak; unsigned char znak;
//kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy //kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy
@ -67,26 +68,43 @@ int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
uspech = RS232_PollComport(cislo_rozhrania, &znak, 1); uspech = RS232_PollComport(cislo_rozhrania, &znak, 1);
if(uspech > 0) if(uspech > 0)
{ {
//ak bol najdeny koniec kontrolneho vzoru, tak je zapnuta znacka, if(!prebieha_nacitanie && (znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia <= 2))
//ktora urcuje ze prebieha nacitavanie spravy
if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia <= 2))
{ {
zaciatok_spravy_pozicia++; zaciatok_spravy_pozicia++;
} }
else if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia > 2)) else if(!prebieha_nacitanie && (znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia == 3))
{ {
//ak bol najdeny koniec kontrolneho vzoru, tak je zapnuta znacka,
//ktora urcuje ze prebieha nacitavanie spravy
prebieha_nacitanie = 1; prebieha_nacitanie = 1;
zaciatok_spravy_pozicia = 0; zaciatok_spravy_pozicia = 0;
//zaciatok_spravy_pozicia = 0;
} }
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia <= 2)) else if((prebieha_nacitanie && (znak == koniec_spravy[0]) && (koniec_spravy_pozicia == 0)) || (!prebieha_nacitanie && (znak == koniec_spravy[0]) && (koniec_spravy_pozicia <= 2)))
{ {
koniec_spravy_pozicia++; koniec_spravy_pozicia++;
}
//ak bol najdeny koniec kontrolneho vzoru, tak je vypnuta znacka,
//ktora urcuje ze prebieha nacitanie spravy
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia > 2))
{
prebieha_nacitanie = 0; prebieha_nacitanie = 0;
}
else if(!prebieha_nacitanie && znak != koniec_spravy[0])
{
for(int i = 0; i < koniec_spravy_pozicia; i++)
{
fwrite((char*)&koniec_spravy[i], 1, uspech, f);
nacitane_data += uspech;
}
fwrite((char*)&znak, 1, uspech, f);
nacitane_data += uspech;
koniec_spravy_pozicia = 0;
prebieha_nacitanie = 1;
}
else if(!prebieha_nacitanie && (znak == koniec_spravy[0]) && (koniec_spravy_pozicia == 3))
{
//ak bol najdeny koniec kontrolneho vzoru, tak je vypnuta znacka,
//ktora urcuje ze prebieha nacitanie spravy
prebieha_nacitanie = 0;
koniec_spravy_pozicia = 0;
//koniec_spravy_pozicia = 0;
break; break;
} }
else else
@ -100,11 +118,9 @@ int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
} }
} }
aktualne_data = nacitane_data; aktualne_data = nacitane_data;
printf("Nacital som %d dat\n", nacitane_data); nacitane_data = 0;
fclose(f); fclose(f);
} }
//nacitanie dat zo suboru do buffera //nacitanie dat zo suboru do buffera
uspech = 0; uspech = 0;
while(uspech <= 0) while(uspech <= 0)
@ -124,7 +140,7 @@ int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
RS232_SendBuf(cislo_rozhrania, (unsigned char*)zaciatok_spravy, 4); RS232_SendBuf(cislo_rozhrania, (unsigned char*)zaciatok_spravy, 4);
uspech = RS232_SendBuf(cislo_rozhrania, (unsigned char*)buf, sz); uspech = RS232_SendBuf(cislo_rozhrania, (unsigned char*)buf, sz);
RS232_SendBuf(cislo_rozhrania, (unsigned char*)koniec_spravy, 4); RS232_SendBuf(cislo_rozhrania, (unsigned char*)koniec_spravy, 4);
printf("Odoslal som %d %d\n", uspech, sz); RS232_flushTX(cislo_rozhrania);
return uspech; return uspech;
} }

Binary file not shown.