..
This commit is contained in:
parent
e82eace59d
commit
a5a06d2255
@ -1,18 +1,18 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
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
|
||||||
ah0n5tR31CEtP2wHbOP2xOOwEYaEsHQKujHzgCyamMQk9Adt5fLwdhsSyVSaFhll
|
L84DlrLoJLNjtjyLlBbg4nOAWahbMmY0Fq76Nc6IsJ2Qv2dip3bjHa40eXCWVnb3
|
||||||
fqsUu3MM72qGX8XHLoTy0iUCgYAx7AI9xFNEStIXyPKEdNiGsqCPORzk6NsWW7qO
|
ji3agQYBulcJ4vjALsvejwKBgQCJQPuMGHb0a5TMPcHfbDzDZlYg0aU1WSubnHhE
|
||||||
uYTylMk7tyU1/L1eYePQvu6gV5IZ6GcwaLkTNep7NVgsvV0e9ZT1ku/a7OgpivRX
|
DiBsaGyWq6wotby8RZqMXjfCrsUzUdCYw3Zyt8oOLuqsp5sGHCty7rP6pbrbhkRC
|
||||||
fCU3ZzkkE5YqvT2lJA9sKG/PzQIUoX9i7lVRE45CwRWkm3VaoxFtClLBVgYIEVNA
|
z+nQeDS2Gx9FmXSTE8EtZDPosqlxJObQp2IkZxN9KkP2zFGuhl8bo1oOtSw7SUDl
|
||||||
5NQevQKBgCv+Gl7uk1N9VrlD2XwwmHCWooqVr3FPOq6ztX4014DzZmxkyem9GJGZ
|
qxXvGQKBgQDPRhUKxKk+ApDRLImWTjuG6PCBi2XhVXd+HIE6JnUgnDZSNOn2WJqH
|
||||||
uyuzM4bKjb/lmk4RI19VZoExyt+7K3eWUSUQNS6Erhcjx74+vSngKOV2TNiGnByx
|
IVWxIc/OAlg0e3rRWCbmwJAjHhZZ+pCp1gju12SjiVzBri2KIxOhVj8IucqvpIyr
|
||||||
oJoUlKquhEijlX/pJtH8812EYGtm5COkRA2QkWfr6hb6KQtz4wq7
|
kOSwd33TlO0aRq0gM3xHvLUsb31sjHJeVTTrgiKbwAVcYMzLrjoJXg==
|
||||||
-----END RSA PRIVATE KEY-----
|
-----END RSA PRIVATE KEY-----
|
||||||
|
@ -1,18 +1,18 @@
|
|||||||
-----BEGIN CERTIFICATE-----
|
-----BEGIN CERTIFICATE-----
|
||||||
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
|
||||||
-----END CERTIFICATE-----
|
-----END CERTIFICATE-----
|
||||||
|
@ -1,27 +1,27 @@
|
|||||||
-----BEGIN RSA PRIVATE KEY-----
|
-----BEGIN RSA PRIVATE KEY-----
|
||||||
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
|
||||||
-----END RSA PRIVATE KEY-----
|
-----END RSA PRIVATE KEY-----
|
||||||
|
@ -9,20 +9,15 @@
|
|||||||
#include "komunikacia.h"
|
#include "komunikacia.h"
|
||||||
#include "kryptografia.h"
|
#include "kryptografia.h"
|
||||||
|
|
||||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie *nastavenia)
|
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie *nastavenia, int velkost_bloku_dat)
|
||||||
{
|
{
|
||||||
int uspech;
|
int uspech;
|
||||||
|
|
||||||
//odoslanie nazvu (resp. cesty) suboru
|
while(wolfSSL_write(ssl, cesta, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA)
|
||||||
uspech = 0;
|
|
||||||
while(uspech < VELKOST_CESTY)
|
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_write(ssl, cesta, VELKOST_CESTY);
|
if(wolfSSL_want_write(ssl)) continue;
|
||||||
if(uspech <= 0)
|
fprintf(stderr, "Nastala chyba pri posielani nazvu suboru\n");
|
||||||
{
|
return -1;
|
||||||
fprintf(stderr, "Nastala chyba pri posielani dat o subore.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//otvorenie suboru na citanie
|
//otvorenie suboru na citanie
|
||||||
@ -40,123 +35,143 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_a
|
|||||||
//nastavi ukazovatel na koniec suboru
|
//nastavi ukazovatel na koniec suboru
|
||||||
//a zisti velkost suboru
|
//a zisti velkost suboru
|
||||||
fseek(subor, 0, SEEK_END);
|
fseek(subor, 0, SEEK_END);
|
||||||
int velkost = (int)ftell(subor);
|
int velkost_suboru = (int)ftell(subor);
|
||||||
char velkost_suboru[VELKOST_SUBOR];
|
char velkost_suboru_retazec[SPRAVA_VELKOST_BUFFERA];
|
||||||
sprintf(velkost_suboru, "%ld", velkost);
|
sprintf(velkost_suboru_retazec, "%d", velkost_suboru);
|
||||||
printf("Velkost suboru: %s bajtov\n", velkost_suboru);
|
printf("Velkost suboru: %s bajtov\n", velkost_suboru_retazec);
|
||||||
uspech = 0;
|
|
||||||
while(uspech < VELKOST_SUBOR)
|
while(wolfSSL_write(ssl, velkost_suboru_retazec, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA)
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_write(ssl, velkost_suboru, VELKOST_SUBOR);
|
if(wolfSSL_want_write(ssl)) continue;
|
||||||
if(uspech <= 0)
|
fprintf(stderr, "Nastala chyba pri posielani velkosti suboru\n");
|
||||||
{
|
return -1;
|
||||||
fprintf(stderr, "Nastala chyba pri posielani dat o velkosti suboru.\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//nastavi ukazovatel na zaciatok suboru
|
//nastavi ukazovatel na zaciatok suboru
|
||||||
//a nacita data zo suboru do pola
|
//a nacita data zo suboru do pola
|
||||||
unsigned char* pole = calloc(velkost, sizeof(unsigned char));
|
unsigned char* data = calloc(velkost_suboru, sizeof(unsigned char));
|
||||||
if(pole == NULL)
|
if(data == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole\n");
|
fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole data,\ndo ktoreho sa nacita obsah suboru\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
fseek(subor, 0, SEEK_SET);
|
fseek(subor, 0, SEEK_SET);
|
||||||
fread((unsigned char*)pole, 1, velkost, subor);
|
fread((unsigned char*)data, 1, velkost_suboru, subor);
|
||||||
|
|
||||||
//posielanie jednotlivych bajtov
|
//posielanie jednotlivych bajtov
|
||||||
|
unsigned char* data_ukazovatel = data;
|
||||||
uspech = 0;
|
uspech = 0;
|
||||||
while(uspech < velkost)
|
int ostava_poslat = velkost_suboru;
|
||||||
|
for(int i = 0; i < (velkost_suboru/velkost_bloku_dat) + 1; ++i)
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_write(ssl, pole, velkost);
|
if(ostava_poslat > velkost_bloku_dat)
|
||||||
if(uspech <= 0)
|
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nastala chyba pri posielani suboru.\n");
|
while(wolfSSL_write(ssl, data_ukazovatel, velkost_bloku_dat) != velkost_bloku_dat)
|
||||||
return -1;
|
{
|
||||||
|
if(wolfSSL_want_write(ssl)) continue;
|
||||||
|
fprintf(stderr, "Nastala chyba pri posielani suboru\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
uspech = 0;
|
||||||
|
while(wolfSSL_write(ssl, data_ukazovatel, ostava_poslat) != ostava_poslat)
|
||||||
|
{
|
||||||
|
if(wolfSSL_want_write(ssl)) continue;
|
||||||
|
fprintf(stderr, "Nastala chyba pri posielani suboru\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data_ukazovatel += velkost_bloku_dat;
|
||||||
|
ostava_poslat -= velkost_bloku_dat;
|
||||||
}
|
}
|
||||||
printf("Subor bol uspesne odoslany.\n");
|
printf("Subor bol uspesne odoslany.\n");
|
||||||
|
|
||||||
//generovanie a poslanie kontrolneho suctu serveru pre kontrolu
|
//generovanie a poslanie kontrolneho suctu serveru pre kontrolu
|
||||||
unsigned char* kontrolny_sucet;
|
unsigned char* kontrolny_sucet;
|
||||||
int velkost_kontrolneho_suctu;
|
int velkost_kontrolneho_suctu;
|
||||||
kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost, &velkost_kontrolneho_suctu);
|
kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost_suboru, &velkost_kontrolneho_suctu);
|
||||||
|
|
||||||
uspech = 0;
|
while(wolfSSL_write(ssl, kontrolny_sucet, velkost_kontrolneho_suctu) != velkost_kontrolneho_suctu)
|
||||||
while(uspech < velkost_kontrolneho_suctu)
|
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_write(ssl, kontrolny_sucet, velkost_kontrolneho_suctu);
|
if(wolfSSL_want_write(ssl)) continue;
|
||||||
|
fprintf(stderr, "Nastala chyba pri posielani kontrolneho suctu\n");
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
free(kontrolny_sucet);
|
free(kontrolny_sucet);
|
||||||
fclose(subor);
|
fclose(subor);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia)
|
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat)
|
||||||
{
|
{
|
||||||
int uspech;
|
int uspech;
|
||||||
|
|
||||||
//prijem dat o subore
|
//prijem dat o subore
|
||||||
char* cesta = calloc(VELKOST_CESTY, sizeof(char));
|
char* cesta = calloc(SPRAVA_VELKOST_BUFFERA, sizeof(char));
|
||||||
char* velkost_suboru = calloc(VELKOST_SUBOR, sizeof(char));
|
char* velkost_suboru_retazec = calloc(SPRAVA_VELKOST_BUFFERA, sizeof(char));
|
||||||
|
|
||||||
uspech = 0;
|
while(wolfSSL_read(ssl, cesta, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA)
|
||||||
while(uspech < VELKOST_CESTY)
|
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_read(ssl, cesta, VELKOST_CESTY);
|
if(wolfSSL_want_read(ssl)) continue;
|
||||||
if(uspech <= 0)
|
fprintf(stderr, "Nastala chyba pri prijati nazvu suboru\n");
|
||||||
{
|
return -1;
|
||||||
fprintf(stderr, "Nastala chyba pri prijati dat o subore\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
printf("Prebieha prijimanie suboru %s\n", cesta);
|
printf("Prebieha prijimanie suboru %s\n", cesta);
|
||||||
|
|
||||||
//ziskanie informacie od klienta o velkosti odoslaneho suboru
|
//ziskanie informacie od klienta o velkosti odoslaneho suboru
|
||||||
uspech = 0;
|
while(wolfSSL_read(ssl, velkost_suboru_retazec, SPRAVA_VELKOST_BUFFERA) != SPRAVA_VELKOST_BUFFERA)
|
||||||
while(uspech < VELKOST_SUBOR)
|
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_read(ssl, velkost_suboru, VELKOST_SUBOR);
|
if(wolfSSL_want_read(ssl)) continue;
|
||||||
if(uspech <= 0)
|
fprintf(stderr, "Nastala chyba pri prijati velkosti suboru\n");
|
||||||
{
|
return -1;
|
||||||
fprintf(stderr, "Nastala chyba pri prijati velkosti suboru\n");
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
int velkost = (int)atol(velkost_suboru);
|
int velkost_suboru = (int)atol(velkost_suboru_retazec);
|
||||||
if(velkost < 1)
|
if(velkost_suboru <= 0)
|
||||||
{
|
{
|
||||||
printf("Nastala chyba pri prijati suboru\n");
|
printf("Bola prijata informacia o velkosti suboru s hodnotu mensou nez 0\nPravdepodobne nastala chyba pri prenose\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Velkost suboru: %s bajtov\n", velkost_suboru);
|
printf("Velkost suboru: %s bajtov\n", velkost_suboru_retazec);
|
||||||
}
|
}
|
||||||
|
|
||||||
//prijem jednotlivych bajtov
|
//prijem jednotlivych bajtov
|
||||||
unsigned char* pole = calloc(velkost, sizeof(unsigned char));
|
unsigned char* data = calloc(velkost_suboru, sizeof(unsigned char));
|
||||||
if(pole == NULL)
|
if(data == NULL)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole\n");
|
fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre pole data\ndo ktoreho sa zapisu prijate data\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
unsigned char* pole_uk = pole;
|
|
||||||
|
unsigned char* data_ukazovatel = data;
|
||||||
uspech = 0;
|
int ostava_prijat = velkost_suboru;
|
||||||
for(int i = 0; i < (velkost/16384) + 1; ++i)
|
for(int i = 0; i < (velkost_suboru/velkost_bloku_dat) + 1; ++i)
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_read(ssl, pole_uk, velkost);
|
if(ostava_prijat > velkost_bloku_dat)
|
||||||
pole_uk += 16384;
|
{
|
||||||
if(uspech <= 0)
|
while(wolfSSL_read(ssl, data_ukazovatel, velkost_bloku_dat) != velkost_bloku_dat)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nastala chyba pri posielani suboru.\n");
|
if(wolfSSL_want_read(ssl)) continue;
|
||||||
|
fprintf(stderr, "Nastala chyba pri prijimani suboru\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
while(wolfSSL_read(ssl, data_ukazovatel, ostava_prijat) != ostava_prijat)
|
||||||
|
{
|
||||||
|
if(wolfSSL_want_read(ssl)) continue;
|
||||||
|
fprintf(stderr, "Nastala chyba pri prijimani suboru\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
data_ukazovatel += velkost_bloku_dat;
|
||||||
|
ostava_prijat -= velkost_bloku_dat;
|
||||||
}
|
}
|
||||||
printf("Subor bol uspesne prijaty.\n");
|
printf("Subor bol uspesne prijaty.\n");
|
||||||
|
|
||||||
@ -165,25 +180,34 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastaveni
|
|||||||
int velkost_kontrolneho_suctu;
|
int velkost_kontrolneho_suctu;
|
||||||
|
|
||||||
FILE *subor = fopen(cesta, "wb+");
|
FILE *subor = fopen(cesta, "wb+");
|
||||||
int n = fwrite((unsigned char*)pole, 1, velkost, subor);
|
int pocet_zapisanych_bajtov = fwrite((unsigned char*)data, 1, velkost_suboru, subor);
|
||||||
|
if(pocet_zapisanych_bajtov <= 0)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Nepodarilo sa zapisat do suboru obsah prijateho suboru\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if(pocet_zapisanych_bajtov < velkost_suboru)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Nepodarilo sa zapisat do suboru cely obsah prijateho suboru\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Do suboru %s bolo zapisanych %d bajtov\n", cesta, pocet_zapisanych_bajtov);
|
||||||
|
}
|
||||||
fclose(subor);
|
fclose(subor);
|
||||||
|
|
||||||
|
|
||||||
kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost, &velkost_kontrolneho_suctu);
|
kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia, cesta, velkost_suboru, &velkost_kontrolneho_suctu);
|
||||||
|
|
||||||
//prijem hashu, ktory vypocital server
|
//prijem kontrolneho suctu, ktory vypocital server
|
||||||
char* prijaty_kontrolny_sucet = calloc(velkost_kontrolneho_suctu, sizeof(char));
|
char* prijaty_kontrolny_sucet = calloc(velkost_kontrolneho_suctu, sizeof(char));
|
||||||
|
|
||||||
uspech = 0;
|
while(wolfSSL_read(ssl, (char*)prijaty_kontrolny_sucet, velkost_kontrolneho_suctu) != velkost_kontrolneho_suctu)
|
||||||
while(uspech != velkost_kontrolneho_suctu)
|
|
||||||
{
|
{
|
||||||
uspech = wolfSSL_read(ssl, (char*)prijaty_kontrolny_sucet, velkost_kontrolneho_suctu);
|
if(wolfSSL_want_read(ssl)) continue;
|
||||||
if(uspech <= 0)
|
fprintf(stderr, "Nastala chyba pri prijati kontrolneho suctu\n");
|
||||||
{
|
return -1;
|
||||||
fprintf(stderr, "Nastala chyba pri prijati kontrolneho suctu.\n");
|
|
||||||
free(prijaty_kontrolny_sucet);
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
//kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju
|
//kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju
|
||||||
@ -199,7 +223,7 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastaveni
|
|||||||
}
|
}
|
||||||
|
|
||||||
free(cesta);
|
free(cesta);
|
||||||
free(velkost_suboru);
|
free(velkost_suboru_retazec);
|
||||||
free(kontrolny_sucet);
|
free(kontrolny_sucet);
|
||||||
free(prijaty_kontrolny_sucet);
|
free(prijaty_kontrolny_sucet);
|
||||||
return 0;
|
return 0;
|
||||||
@ -420,14 +444,19 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor)
|
|||||||
FILE* subor = fopen(komunikacny_subor, "ab+");
|
FILE* subor = fopen(komunikacny_subor, "ab+");
|
||||||
|
|
||||||
int uspech = 0;
|
int uspech = 0;
|
||||||
int prebieha_nacitanie_velkosti_spravy = 0;
|
stav_nacitania stav;
|
||||||
int prebieha_nacitanie_kontrolneho_suctu = 0;
|
stav = NEPREBIEHA_NACITANIE;
|
||||||
int prebieha_nacitanie_dat = 0;
|
|
||||||
unsigned char znak;
|
unsigned char znak;
|
||||||
|
|
||||||
//mnozstvo nacitanych dat
|
//mnozstvo nacitanych dat
|
||||||
int nacitane_data = 0;
|
int nacitane_data = 0;
|
||||||
|
|
||||||
|
//kontrolny vzor ktory jednoznacne identifikuje zaciatok spravy
|
||||||
|
unsigned char kontrolny_vzor[] = {0xAA, 0xAA, 0xAA, 0xAA};
|
||||||
|
//urcuje kolko bajtov z kontrolneho vzoru
|
||||||
|
//uz bolo prijatych z celkoveho poctu (4)
|
||||||
|
int kontrolny_vzor_pozicia = 0;
|
||||||
|
|
||||||
//velkost spravy, ktora sa bude prijmat
|
//velkost spravy, ktora sa bude prijmat
|
||||||
int velkost_spravy = 0;
|
int velkost_spravy = 0;
|
||||||
unsigned char velkost_spravy_hex[4];
|
unsigned char velkost_spravy_hex[4];
|
||||||
@ -443,70 +472,68 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor)
|
|||||||
int kontrolny_sucet_pozicia = 0;
|
int kontrolny_sucet_pozicia = 0;
|
||||||
|
|
||||||
unsigned char* prijate_data;
|
unsigned char* prijate_data;
|
||||||
|
|
||||||
//kontrolny vzor ktory jednoznacne identifikuje zaciatok spravy
|
|
||||||
unsigned char kontrolny_vzor[] = {0xAA, 0xAA, 0xAA, 0xAA};
|
|
||||||
int kontrolny_vzor_pozicia = 0; //aktualna pozicia v kontrolnom vzore
|
|
||||||
int velkost_kontrolneho_vzoru = sizeof(kontrolny_vzor)/sizeof(kontrolny_vzor[0]);
|
|
||||||
|
|
||||||
while(1)
|
while(stav != NACITANIE_UKONCENE)
|
||||||
{
|
{
|
||||||
uspech = RS232_PollComport(cislo_rozhrania, &znak, 1);
|
uspech = RS232_PollComport(cislo_rozhrania, &znak, 1);
|
||||||
if(uspech > 0)
|
if(uspech > 0)
|
||||||
{
|
{
|
||||||
//nacitanie kontrolneho vzoru
|
switch(stav)
|
||||||
if(!prebieha_nacitanie_velkosti_spravy && !prebieha_nacitanie_dat && !prebieha_nacitanie_kontrolneho_suctu &&
|
|
||||||
znak == kontrolny_vzor[kontrolny_vzor_pozicia])
|
|
||||||
{
|
{
|
||||||
kontrolny_vzor_pozicia++;
|
case NEPREBIEHA_NACITANIE:
|
||||||
if(kontrolny_vzor_pozicia == 4)
|
if(znak == kontrolny_vzor[kontrolny_vzor_pozicia])
|
||||||
{
|
|
||||||
prebieha_nacitanie_velkosti_spravy = 1;
|
|
||||||
kontrolny_vzor_pozicia = 0;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
//nacitanie velkosti spravy
|
|
||||||
else if(!prebieha_nacitanie_dat && prebieha_nacitanie_velkosti_spravy)
|
|
||||||
{
|
|
||||||
velkost_spravy_hex[velkost_spravy_pozicia] = znak;
|
|
||||||
velkost_spravy_pozicia++;
|
|
||||||
if(velkost_spravy_pozicia == 4)
|
|
||||||
{
|
|
||||||
velkost_spravy = (uint32_t)velkost_spravy_hex[0] << 24 | (uint32_t)velkost_spravy_hex[1] << 16 |
|
|
||||||
(uint32_t)velkost_spravy_hex[2] << 8 | (uint32_t)velkost_spravy_hex[3];
|
|
||||||
prebieha_nacitanie_kontrolneho_suctu = 1;
|
|
||||||
prebieha_nacitanie_velkosti_spravy = 0;
|
|
||||||
|
|
||||||
prijate_data = calloc(velkost_spravy, sizeof(unsigned char));
|
|
||||||
if(prijate_data == NULL)
|
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre prijate_data\n");
|
kontrolny_vzor_pozicia++;
|
||||||
return -1;
|
|
||||||
}
|
}
|
||||||
}
|
if(kontrolny_vzor_pozicia == 4)
|
||||||
}
|
{
|
||||||
//nacitanie kontrolneho vzoru
|
kontrolny_vzor_pozicia = 0;
|
||||||
else if(!prebieha_nacitanie_dat && prebieha_nacitanie_kontrolneho_suctu)
|
stav = PREBIEHA_NACITANIE_VELKOSTI_SPRAVY;
|
||||||
{
|
}
|
||||||
kontrolny_sucet_hex[kontrolny_sucet_pozicia] = znak;
|
break;
|
||||||
kontrolny_sucet_pozicia++;
|
case PREBIEHA_NACITANIE_VELKOSTI_SPRAVY:
|
||||||
if(kontrolny_sucet_pozicia == 4)
|
velkost_spravy_hex[velkost_spravy_pozicia] = znak;
|
||||||
{
|
velkost_spravy_pozicia++;
|
||||||
kontrolny_sucet = (uint32_t)kontrolny_sucet_hex[0] << 24 | (uint32_t)kontrolny_sucet_hex[1] << 16 |
|
if(velkost_spravy_pozicia == 4)
|
||||||
(uint32_t)kontrolny_sucet_hex[2] << 8 | (uint32_t)kontrolny_sucet_hex[3];
|
{
|
||||||
prebieha_nacitanie_dat = 1;
|
velkost_spravy = (uint32_t)velkost_spravy_hex[0] << 24 | (uint32_t)velkost_spravy_hex[1] << 16 |
|
||||||
prebieha_nacitanie_velkosti_spravy = 0;
|
(uint32_t)velkost_spravy_hex[2] << 8 | (uint32_t)velkost_spravy_hex[3];
|
||||||
}
|
velkost_spravy_pozicia = 0;
|
||||||
}
|
stav = PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU;
|
||||||
//nacitanie dat
|
|
||||||
else
|
//dynamicka alokacia pola s velkostou, ktora bola prijata
|
||||||
{
|
//do neho bude zapisana prijata sprava
|
||||||
if(prebieha_nacitanie_dat)
|
prijate_data = calloc(velkost_spravy, sizeof(unsigned char));
|
||||||
{
|
if(prijate_data == NULL)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Nepodarilo sa dynamicky alokovat pamat pre prijate_data\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU:
|
||||||
|
kontrolny_sucet_hex[kontrolny_sucet_pozicia] = znak;
|
||||||
|
kontrolny_sucet_pozicia++;
|
||||||
|
if(kontrolny_sucet_pozicia == 4)
|
||||||
|
{
|
||||||
|
kontrolny_sucet = (uint32_t)kontrolny_sucet_hex[0] << 24 | (uint32_t)kontrolny_sucet_hex[1] << 16 |
|
||||||
|
(uint32_t)kontrolny_sucet_hex[2] << 8 | (uint32_t)kontrolny_sucet_hex[3];
|
||||||
|
kontrolny_sucet_pozicia = 0;
|
||||||
|
stav = PREBIEHA_NACITANIE_DAT;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
case PREBIEHA_NACITANIE_DAT:
|
||||||
prijate_data[nacitane_data] = znak;
|
prijate_data[nacitane_data] = znak;
|
||||||
nacitane_data += uspech;
|
nacitane_data += uspech;
|
||||||
if(nacitane_data == velkost_spravy) break;
|
if(nacitane_data == velkost_spravy)
|
||||||
}
|
{
|
||||||
|
stav = NACITANIE_UKONCENE;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
default:
|
||||||
|
//tento stav by nemal nikdy nastat
|
||||||
|
fprintf(stderr, "Nepodarilo sa urcit stav nacitania spravy pomocou RS232\n");
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -531,7 +558,7 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
printf("Sprava neprisla v poriadku");
|
fprintf(stderr, "Sprava neprisla v poriadku");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -17,8 +17,9 @@
|
|||||||
#include "kryptografia.h"
|
#include "kryptografia.h"
|
||||||
#include "../externe_kniznice/teuniz_rs232/rs232.h"
|
#include "../externe_kniznice/teuniz_rs232/rs232.h"
|
||||||
|
|
||||||
#define VELKOST_CESTY 64 //velkost retazca, kt. uklada lokaciu suboru
|
//velkost buffrov ktore ukladaju doplnujuce data pri komunikacii
|
||||||
#define VELKOST_SUBOR 32 //velkost retazca, kt. uklada velkost prenasaneho suboru
|
//napr. velkost suboru, cestu ku suboru a ine
|
||||||
|
#define SPRAVA_VELKOST_BUFFERA 64
|
||||||
|
|
||||||
#if defined(_WIN32)
|
#if defined(_WIN32)
|
||||||
//makro ktore urcuje win distribuciu ak nieje detekovana
|
//makro ktore urcuje win distribuciu ak nieje detekovana
|
||||||
@ -76,6 +77,12 @@ int cakat_na_komunikaciu(int cislo_portu);
|
|||||||
// RS232 KOMUNIKACNY KANAL //
|
// RS232 KOMUNIKACNY KANAL //
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
||||||
|
typedef enum stav_nacitania {
|
||||||
|
NEPREBIEHA_NACITANIE, PREBIEHA_NACITANIE_VELKOSTI_SPRAVY, PREBIEHA_NACITANIE_KONTROLNEHO_SUCTU,
|
||||||
|
PREBIEHA_NACITANIE_DAT, NACITANIE_UKONCENE
|
||||||
|
} stav_nacitania;
|
||||||
|
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* rs232_otvorit_rozhranie: realizuje otvorenie RS232 serioveho rozhrania
|
* rs232_otvorit_rozhranie: realizuje otvorenie RS232 serioveho rozhrania
|
||||||
* @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania
|
* @parameter int cislo_rozhrania: cislo RS232 serioveho rozhrania
|
||||||
@ -119,17 +126,19 @@ int rs232_prijat_spravu(int cislo_rozhrania, const char* komunikacny_subor);
|
|||||||
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
||||||
* @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru
|
* @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru
|
||||||
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
|
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
|
||||||
|
* @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data posielat
|
||||||
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia);
|
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, const char* cesta, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prijat_subor: realizuje prijem suboru
|
* prijat_subor: realizuje prijem suboru
|
||||||
* @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu
|
* @parameter WOLFSSL* ssl : ukazuje na aktualnu relaciu
|
||||||
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
||||||
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
|
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
|
||||||
|
* @parameter int velkost_bloku_dat: velkost dat po ktorych sa budu data prijimat
|
||||||
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia);
|
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia, int velkost_bloku_dat);
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -71,7 +71,7 @@ void zobraz_sifru(WOLFSSL* ssl)
|
|||||||
printf ("Pouzita sifra: %s\n", wolfSSL_get_cipher(ssl));
|
printf ("Pouzita sifra: %s\n", wolfSSL_get_cipher(ssl));
|
||||||
}
|
}
|
||||||
|
|
||||||
int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
int generovat_rsa_certifikat(const char* subor_certifikat, const char* subor_kluc, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
||||||
{
|
{
|
||||||
int uspech = 0;
|
int uspech = 0;
|
||||||
|
|
||||||
@ -151,7 +151,7 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char
|
|||||||
pem_kluc_velkost = uspech;
|
pem_kluc_velkost = uspech;
|
||||||
|
|
||||||
//zapis vygenerovaneho klucu do suboru
|
//zapis vygenerovaneho klucu do suboru
|
||||||
subor = fopen("../../certifikaty/vygenerovany_kluc.key", "wb");
|
subor = fopen(subor_kluc, "wb+");
|
||||||
fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
|
fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
|
||||||
fclose(subor);
|
fclose(subor);
|
||||||
|
|
||||||
@ -204,8 +204,8 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char
|
|||||||
}
|
}
|
||||||
pem_certifikat_velkost = uspech;
|
pem_certifikat_velkost = uspech;
|
||||||
|
|
||||||
//zapis vygenerovaneho klucu do suboru
|
//zapis vygenerovaneho certifikatu do suboru
|
||||||
subor = fopen("../../certifikaty/vygenerovany_certifikat.pem", "wb");
|
subor = fopen(subor_certifikat, "wb+");
|
||||||
fwrite(pem_certifikat, 1, pem_certifikat_velkost, subor);
|
fwrite(pem_certifikat, 1, pem_certifikat_velkost, subor);
|
||||||
fclose(subor);
|
fclose(subor);
|
||||||
|
|
||||||
@ -214,7 +214,7 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
int generovat_ecc_certifikat(const char* subor_certifikat, const char* subor_kluc, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
||||||
{
|
{
|
||||||
int uspech = 0 ;
|
int uspech = 0 ;
|
||||||
|
|
||||||
@ -293,7 +293,7 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
|
|||||||
pem_kluc_velkost = uspech;
|
pem_kluc_velkost = uspech;
|
||||||
|
|
||||||
//zapis vygenerovaneho kluca do suboru
|
//zapis vygenerovaneho kluca do suboru
|
||||||
subor = fopen("../certifikaty/vygenerovany_kluc.key", "wb");
|
subor = fopen(subor_kluc, "wb+");
|
||||||
fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
|
fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
|
||||||
fclose(subor);
|
fclose(subor);
|
||||||
|
|
||||||
@ -347,14 +347,14 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
|
|||||||
pem_certifikat_velkost = uspech;
|
pem_certifikat_velkost = uspech;
|
||||||
|
|
||||||
//zapis vygenerovaneho klucu do suboru
|
//zapis vygenerovaneho klucu do suboru
|
||||||
subor = fopen("../certifikaty/vygenerovany_certifikat.pem", "wb");
|
subor = fopen(subor_certifikat, "wb+");
|
||||||
fwrite(pem_certifikat, 1, pem_certifikat_velkost, subor);
|
fwrite(pem_certifikat, 1, pem_certifikat_velkost, subor);
|
||||||
fclose(subor);
|
fclose(subor);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
int vygenerovat_rsa_ziadost(const char* subor_ziadost, const char* subor_kluc, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
||||||
{
|
{
|
||||||
int uspech = 0;
|
int uspech = 0;
|
||||||
|
|
||||||
@ -392,6 +392,11 @@ int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char*
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FILE* subor = fopen(subor_kluc, "wb+");
|
||||||
|
fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
|
||||||
|
fclose(subor);
|
||||||
|
printf("RSA kluc bol uspesne vygenerovany\n");
|
||||||
|
|
||||||
//premenne pre ukladanie dat ziadosti
|
//premenne pre ukladanie dat ziadosti
|
||||||
Cert ziadost;
|
Cert ziadost;
|
||||||
unsigned char der_ziadost[VELKOST_BUFFERA];
|
unsigned char der_ziadost[VELKOST_BUFFERA];
|
||||||
@ -429,9 +434,13 @@ int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char*
|
|||||||
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
|
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
pem_ziadost_velkost = uspech;
|
||||||
|
subor = fopen(subor_ziadost, "wb+");
|
||||||
|
fwrite(pem_ziadost, 1, pem_ziadost_velkost, subor);
|
||||||
|
fclose(subor);
|
||||||
}
|
}
|
||||||
|
|
||||||
int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
int vygenerovat_ecc_ziadost(const char* subor_ziadost, const char* subor_kluc, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
|
||||||
{
|
{
|
||||||
int uspech = 0;
|
int uspech = 0;
|
||||||
|
|
||||||
@ -469,6 +478,11 @@ int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algor
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
FILE* subor = fopen(subor_kluc, "wb+");
|
||||||
|
fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
|
||||||
|
fclose(subor);
|
||||||
|
printf("ECC kluc bol uspesne vygenerovany\n");
|
||||||
|
|
||||||
//premenne pre ukladanie dat ziadosti
|
//premenne pre ukladanie dat ziadosti
|
||||||
Cert ziadost;
|
Cert ziadost;
|
||||||
unsigned char der_ziadost[VELKOST_BUFFERA];
|
unsigned char der_ziadost[VELKOST_BUFFERA];
|
||||||
@ -506,6 +520,10 @@ int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algor
|
|||||||
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
|
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
pem_ziadost_velkost = uspech;
|
||||||
|
subor = fopen(subor_ziadost, "wb+");
|
||||||
|
fwrite(pem_ziadost, 1, pem_ziadost_velkost, subor);
|
||||||
|
fclose(subor);
|
||||||
}
|
}
|
||||||
|
|
||||||
int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const char* subor_kluc)
|
int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const char* subor_kluc)
|
||||||
@ -541,7 +559,6 @@ int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const ch
|
|||||||
|
|
||||||
void zobraz_certifikat(WOLFSSL* ssl)
|
void zobraz_certifikat(WOLFSSL* ssl)
|
||||||
{
|
{
|
||||||
printf("Informacie o certifikate:\n");
|
|
||||||
WOLFSSL_X509 *certifikat = wolfSSL_get_peer_certificate(ssl);
|
WOLFSSL_X509 *certifikat = wolfSSL_get_peer_certificate(ssl);
|
||||||
char* pole;
|
char* pole;
|
||||||
if (!certifikat)
|
if (!certifikat)
|
||||||
|
@ -26,8 +26,13 @@
|
|||||||
#include <stddef.h>
|
#include <stddef.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
|
|
||||||
|
//velkost bufferov do ktorych sa ukladaju data certifikatov, klucov, ziadosti
|
||||||
#define VELKOST_BUFFERA 4096
|
#define VELKOST_BUFFERA 4096
|
||||||
|
|
||||||
|
//pocet bajtov ktore vstupuju do crc funkcie
|
||||||
#define CRC32_VELKOST 10
|
#define CRC32_VELKOST 10
|
||||||
|
|
||||||
|
//velkost vystupu blake2d hashu v bitoch
|
||||||
#define BLAKE2B_VELKOST 64
|
#define BLAKE2B_VELKOST 64
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -82,41 +87,49 @@ unsigned char* generovat_kontrolny_sucet_suboru(nastavenia_aplikacie* nastavenia
|
|||||||
/**
|
/**
|
||||||
* generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority,
|
* generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority,
|
||||||
* vygenerovanie a podpis ecc certifikatu pomocou sukromneho kluca a certifikatu autority
|
* vygenerovanie a podpis ecc certifikatu pomocou sukromneho kluca a certifikatu autority
|
||||||
|
* @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM
|
||||||
|
* @parameter const char* subor_certifikat : absolutna cesta ku suboru s certifikatom vo formate PEM
|
||||||
* @parameter int pocet_bitov : velkost kluca
|
* @parameter int pocet_bitov : velkost kluca
|
||||||
* @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca
|
* @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca
|
||||||
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
|
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
|
||||||
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
int generovat_ecc_certifikat(const char* subor_kluc, const char* subor_certifikat, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* generovat_rsa_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority,
|
* generovat_rsa_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority,
|
||||||
* vygenerovanie a podpis rsa certifikatu pomocou sukromneho kluca a certifikatu autority
|
* vygenerovanie a podpis rsa certifikatu pomocou sukromneho kluca a certifikatu autority
|
||||||
|
* @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM
|
||||||
|
* @parameter const char* subor_certifikat : absolutna cesta ku suboru s certifikatom vo formate PEM
|
||||||
* @parameter int pocet_bitov : velkost kluca
|
* @parameter int pocet_bitov : velkost kluca
|
||||||
* @parameter int exponent : hodnota exponentu
|
* @parameter int exponent : hodnota exponentu
|
||||||
* @parameter int algoritmus : kod algoritmu, sluziaceho na vymenu klucov
|
* @parameter int algoritmus : kod algoritmu, sluziaceho na vymenu klucov
|
||||||
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
int generovat_rsa_certifikat(const char* subor_kluc, const char* subor_certifikat, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* generovat_rsa_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti
|
* generovat_rsa_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti
|
||||||
|
* @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM
|
||||||
|
* @parameter const char* subor_ziadost : absolutna cesta ku suboru so ziadostou vo formate PEM
|
||||||
* @parameter int pocet_bitov : velkost kluca
|
* @parameter int pocet_bitov : velkost kluca
|
||||||
* @parameter int exponent : hodnota exponentu
|
* @parameter int exponent : hodnota exponentu
|
||||||
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
|
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
|
||||||
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int generovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
int generovat_rsa_ziadost(const char* subor_kluc, const char* subor_ziadost, int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* generovat_ecc_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti
|
* generovat_ecc_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti
|
||||||
|
* @parameter const char* subor_kluc : absolutna cesta ku suboru so sukromnym klucom vo formate PEM
|
||||||
|
* @parameter const char* subor_ziadost : absolutna cesta ku suboru so ziadostou vo formate PEM
|
||||||
* @parameter int pocet_bitov : velkost kluca
|
* @parameter int pocet_bitov : velkost kluca
|
||||||
* @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca
|
* @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca
|
||||||
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
|
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
|
||||||
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
int generovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
int generovat_ecc_ziadost(const char* subor_kluc, const char* subor_ziadost, int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* nastav_ctx_klient : realizuje vytvorenie a inicializaciu CTX struktury
|
* nastav_ctx_klient : realizuje vytvorenie a inicializaciu CTX struktury
|
||||||
|
@ -103,6 +103,7 @@ int main(int argc, char const *argv[])
|
|||||||
WOLFSSL *ssl;
|
WOLFSSL *ssl;
|
||||||
WOLFSSL_CTX *ctx = NULL;
|
WOLFSSL_CTX *ctx = NULL;
|
||||||
const char* subor = NULL;
|
const char* subor = NULL;
|
||||||
|
int autentizacia = 0;
|
||||||
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;
|
||||||
@ -118,9 +119,10 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
printf("---------------\n| Certifikaty |\n---------------\n");
|
||||||
for(int i = 0; i < argc; i++)
|
for(int i = 0; i < argc; i++)
|
||||||
{
|
{
|
||||||
if( (!strcmp(argv[i], "-s")) )
|
if( (!strcmp(argv[i], "-subor")) )
|
||||||
{
|
{
|
||||||
uvedeny_subor = 1;
|
uvedeny_subor = 1;
|
||||||
if((argv[i+1] == NULL) )
|
if((argv[i+1] == NULL) )
|
||||||
@ -133,7 +135,7 @@ int main(int argc, char const *argv[])
|
|||||||
subor = argv[i+1];
|
subor = argv[i+1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( (!strcmp(argv[i], "-port")) )
|
else if( (!strcmp(argv[i], "-port")) )
|
||||||
{
|
{
|
||||||
zadane_rozhranie = 1;
|
zadane_rozhranie = 1;
|
||||||
if((argv[i+1] == NULL))
|
if((argv[i+1] == NULL))
|
||||||
@ -150,7 +152,32 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-n")) )
|
else if( (!strcmp(argv[i], "-cert-aut")) )
|
||||||
|
{
|
||||||
|
if((argv[i+1] == NULL) || (i == argc-1))
|
||||||
|
{
|
||||||
|
printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Zadali ste nespravny typ certifikatu\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( (!strcmp(argv[i], "-cert")) )
|
||||||
{
|
{
|
||||||
nacitanie_zo_suboru = 1;
|
nacitanie_zo_suboru = 1;
|
||||||
if(generovanie_certifikatu)
|
if(generovanie_certifikatu)
|
||||||
@ -165,17 +192,11 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
|
||||||
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -183,7 +204,7 @@ int main(int argc, char const *argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-g")) )
|
else if( (!strcmp(argv[i], "-cert-gen")) )
|
||||||
{
|
{
|
||||||
generovanie_certifikatu = 1;
|
generovanie_certifikatu = 1;
|
||||||
if(nacitanie_zo_suboru)
|
if(nacitanie_zo_suboru)
|
||||||
@ -198,18 +219,14 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -219,23 +236,29 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//vypis upozornenia o autentizacii
|
||||||
|
if(!autentizacia)
|
||||||
|
{
|
||||||
|
printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n");
|
||||||
|
}
|
||||||
|
|
||||||
if(!zadane_rozhranie)
|
if(!zadane_rozhranie)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nebol urcene seriove rozhranie\n");
|
fprintf(stderr, "Nebol urcene seriove rozhranie\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else if(!generovanie_certifikatu && !nacitanie_zo_suboru)
|
else if(!generovanie_certifikatu && !nacitanie_zo_suboru)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nebola zvolena metoda nacitania certifikatov\n");
|
fprintf(stderr, "Nebola zvolena metoda nacitania certifikatov\n");
|
||||||
printf("Zadajde prepinac -g (generovanie), alebo -n (nacitanie_zo_suboru) s parametrom rsa alebo ecc\n");
|
printf("Zadajde prepinac -gen-cert (generovanie), alebo -cert (nacitanie zo suboru) s parametrom rsa alebo ecc\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
else if(!uvedeny_subor)
|
else if(!uvedeny_subor)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nebola uvedena cesta ku suboru na odoslanie\n");
|
fprintf(stderr, "Nebola uvedena cesta ku suboru na odoslanie\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
||||||
|
|
||||||
@ -256,6 +279,8 @@ int main(int argc, char const *argv[])
|
|||||||
wolfSSL_set_using_nonblock(ssl, k_subor);
|
wolfSSL_set_using_nonblock(ssl, k_subor);
|
||||||
|
|
||||||
//pokus o inizicalizaciu TLS handshaku so serverom
|
//pokus o inizicalizaciu TLS handshaku so serverom
|
||||||
|
printf("-----------------\n| TLS Handshake |\n-----------------\n");
|
||||||
|
printf("Inicializacia TLS spojenia\n");
|
||||||
uspech = wolfSSL_connect(ssl);
|
uspech = wolfSSL_connect(ssl);
|
||||||
if(uspech != SSL_SUCCESS)
|
if(uspech != SSL_SUCCESS)
|
||||||
{
|
{
|
||||||
@ -268,19 +293,20 @@ int main(int argc, char const *argv[])
|
|||||||
free(popis_chyby);
|
free(popis_chyby);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
printf("Podarilo sa vytvorit TLS spojenie\n");
|
||||||
zobraz_sifru(ssl);
|
zobraz_sifru(ssl);
|
||||||
|
printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n");
|
||||||
zobraz_certifikat(ssl);
|
zobraz_certifikat(ssl);
|
||||||
|
|
||||||
//nastavenie funkcie pre vypocet kontrolneho suctu
|
//nastavenie funkcie pre vypocet kontrolneho suctu
|
||||||
//nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL
|
//nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL
|
||||||
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
||||||
|
|
||||||
if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1)
|
printf("-------------------\n| Poslanie suboru |\n-------------------\n");
|
||||||
{
|
|
||||||
fclose(fopen(KOMUNIKACNY_SUBOR, "wb"));
|
if(poslat_subor(ssl, ctx, subor, &nastavenia, 4096) == -1) return -1;
|
||||||
return -1;
|
|
||||||
}
|
printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n");
|
||||||
|
|
||||||
//ukoncenie spojenia, vymazanie komunikacneho suboru
|
//ukoncenie spojenia, vymazanie komunikacneho suboru
|
||||||
//a vycistenie serioveho buffera
|
//a vycistenie serioveho buffera
|
||||||
|
BIN
rs232_kanal/klient/obr.jpg
Normal file
BIN
rs232_kanal/klient/obr.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
@ -13,4 +13,4 @@
|
|||||||
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat
|
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat
|
||||||
|
|
||||||
::Priklady spustenia:
|
::Priklady spustenia:
|
||||||
klient -port 4 -n rsa -s document.pdf
|
klient -port 4 -cert rsa -cert-aut rsa -subor obr.jpg
|
||||||
|
BIN
rs232_kanal/server/obr.jpg
Normal file
BIN
rs232_kanal/server/obr.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
@ -100,6 +100,7 @@ int main(int argc, char const *argv[])
|
|||||||
|
|
||||||
WOLFSSL *ssl;
|
WOLFSSL *ssl;
|
||||||
WOLFSSL_CTX *ctx = NULL;
|
WOLFSSL_CTX *ctx = NULL;
|
||||||
|
int autentizacia = 0;
|
||||||
int zadane_rozhranie = 0;
|
int zadane_rozhranie = 0;
|
||||||
int generovanie_certifikatu = 0;
|
int generovanie_certifikatu = 0;
|
||||||
int nacitanie_zo_suboru = 0;
|
int nacitanie_zo_suboru = 0;
|
||||||
@ -115,9 +116,10 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
|
printf("---------------\n| Certifikaty |\n---------------\n");
|
||||||
for(int i = 0; i < argc; i++)
|
for(int i = 0; i < argc; i++)
|
||||||
{
|
{
|
||||||
if( (!strcmp(argv[i], "-port")) )
|
if( (!strcmp(argv[i], "-port")) )
|
||||||
{
|
{
|
||||||
zadane_rozhranie = 1;
|
zadane_rozhranie = 1;
|
||||||
if((argv[i+1] == NULL))
|
if((argv[i+1] == NULL))
|
||||||
@ -134,7 +136,32 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-n")) )
|
else if( (!strcmp(argv[i], "-cert-aut")) )
|
||||||
|
{
|
||||||
|
if((argv[i+1] == NULL) || (i == argc-1))
|
||||||
|
{
|
||||||
|
printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Zadali ste nespravny typ certifikatu\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( (!strcmp(argv[i], "-cert")) )
|
||||||
{
|
{
|
||||||
nacitanie_zo_suboru = 1;
|
nacitanie_zo_suboru = 1;
|
||||||
if(generovanie_certifikatu)
|
if(generovanie_certifikatu)
|
||||||
@ -149,17 +176,11 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
|
||||||
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -167,7 +188,7 @@ int main(int argc, char const *argv[])
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-g")) )
|
else if( (!strcmp(argv[i], "-cert-gen")) )
|
||||||
{
|
{
|
||||||
generovanie_certifikatu = 1;
|
generovanie_certifikatu = 1;
|
||||||
if(nacitanie_zo_suboru)
|
if(nacitanie_zo_suboru)
|
||||||
@ -182,15 +203,13 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -201,6 +220,12 @@ int main(int argc, char const *argv[])
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//vypis upozornenia o autentizacii
|
||||||
|
if(!autentizacia)
|
||||||
|
{
|
||||||
|
printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n");
|
||||||
|
}
|
||||||
|
|
||||||
if(!zadane_rozhranie)
|
if(!zadane_rozhranie)
|
||||||
{
|
{
|
||||||
@ -233,6 +258,8 @@ int main(int argc, char const *argv[])
|
|||||||
wolfSSL_set_using_nonblock(ssl, k_subor);
|
wolfSSL_set_using_nonblock(ssl, k_subor);
|
||||||
|
|
||||||
//cakanie na inicializaciu TLS handshaku klientom
|
//cakanie na inicializaciu TLS handshaku klientom
|
||||||
|
printf("-----------------\n| TLS Handshake |\n-----------------\n");
|
||||||
|
printf("Inicializacia TLS spojenia\n");
|
||||||
uspech = wolfSSL_accept(ssl);
|
uspech = wolfSSL_accept(ssl);
|
||||||
if(uspech != SSL_SUCCESS)
|
if(uspech != SSL_SUCCESS)
|
||||||
{
|
{
|
||||||
@ -245,24 +272,24 @@ int main(int argc, char const *argv[])
|
|||||||
free(popis_chyby);
|
free(popis_chyby);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
printf("Podarilo sa vytvorit TLS spojenie\n");
|
||||||
zobraz_sifru(ssl);
|
zobraz_sifru(ssl);
|
||||||
|
printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n");
|
||||||
zobraz_certifikat(ssl);
|
zobraz_certifikat(ssl);
|
||||||
|
|
||||||
//nastavenie funkcie pre vypocet kontrolneho suctu
|
//nastavenie funkcie pre vypocet kontrolneho suctu
|
||||||
//nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL
|
//nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL
|
||||||
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
||||||
|
|
||||||
//vypocet casu prenosu suboru
|
//vypocet casu prenosu suboru
|
||||||
|
printf("-------------------\n| Prijatie suboru |\n-------------------\n");
|
||||||
clock_t cas;
|
clock_t cas;
|
||||||
cas = clock();
|
cas = clock();
|
||||||
if(prijat_subor(ssl, ctx, &nastavenia) == -1)
|
if(prijat_subor(ssl, ctx, &nastavenia, 4096) == -1) return -1;
|
||||||
{
|
|
||||||
fclose(fopen(KOMUNIKACNY_SUBOR, "wb"));
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
cas = clock() - cas;
|
cas = clock() - cas;
|
||||||
printf("Cas prenosu suboru: %f sekund\n", (double)cas/CLOCKS_PER_SEC);
|
printf("Cas prenosu suboru: %f sekund\n", (double)cas/CLOCKS_PER_SEC);
|
||||||
|
|
||||||
|
printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n");
|
||||||
|
|
||||||
//ukoncenie spojenia, vymazanie komunikacneho suboru
|
//ukoncenie spojenia, vymazanie komunikacneho suboru
|
||||||
//a vycistenie serioveho buffera
|
//a vycistenie serioveho buffera
|
||||||
|
@ -11,4 +11,4 @@
|
|||||||
:: -g rsa|ecc sluzi na generovanie certifikatu
|
:: -g rsa|ecc sluzi na generovanie certifikatu
|
||||||
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
||||||
|
|
||||||
server -port 5 -n rsa
|
server -port 5 -cert rsa -cert-aut rsa
|
@ -22,9 +22,12 @@
|
|||||||
#define ECC_CERTIFIKAT "../../certifikaty/klient/klient_ecc.pem"
|
#define ECC_CERTIFIKAT "../../certifikaty/klient/klient_ecc.pem"
|
||||||
#define VYGENEROVANY_KLUC "../../certifikaty/klient/vygenerovany_kluc.key"
|
#define VYGENEROVANY_KLUC "../../certifikaty/klient/vygenerovany_kluc.key"
|
||||||
#define VYGENEROVANY_CERTIFIKAT "../../certifikaty/klient/vygenerovany_certifikat.pem"
|
#define VYGENEROVANY_CERTIFIKAT "../../certifikaty/klient/vygenerovany_certifikat.pem"
|
||||||
|
#define VYGENEROVANA_ZIADOST "../../certifikaty/klient/vygenerovana_ziadost.pem"
|
||||||
|
|
||||||
int main(int argc, char** argv)
|
int main(int argc, char** argv)
|
||||||
{
|
{
|
||||||
|
int autentizacia = 0;
|
||||||
|
clock_t cas;
|
||||||
int uspech;
|
int uspech;
|
||||||
int generovanie_certifikatu = 0;
|
int generovanie_certifikatu = 0;
|
||||||
int nacitanie_zo_suboru = 0;
|
int nacitanie_zo_suboru = 0;
|
||||||
@ -56,9 +59,10 @@ int main(int argc, char** argv)
|
|||||||
{
|
{
|
||||||
//skontroluje ci nebol zadany prepinac "-g" pre moznost generovanie certifikatu,
|
//skontroluje ci nebol zadany prepinac "-g" pre moznost generovanie certifikatu,
|
||||||
//ak ano pozrie aky typ certifikatu (v CLI argument hned za nim) bol zvoleny
|
//ak ano pozrie aky typ certifikatu (v CLI argument hned za nim) bol zvoleny
|
||||||
|
printf("---------------\n| Certifikaty |\n---------------\n");
|
||||||
for(int i = 0; i < argc; i++)
|
for(int i = 0; i < argc; i++)
|
||||||
{
|
{
|
||||||
if( (!strcmp(argv[i], "-s")) )
|
if( (!strcmp(argv[i], "-subor")) )
|
||||||
{
|
{
|
||||||
uvedeny_subor = 1;
|
uvedeny_subor = 1;
|
||||||
if((argv[i+1] == NULL) )
|
if((argv[i+1] == NULL) )
|
||||||
@ -71,9 +75,9 @@ int main(int argc, char** argv)
|
|||||||
subor = argv[i+1];
|
subor = argv[i+1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if( (!strcmp(argv[i], "-ip")) )
|
if( (!strcmp(argv[i], "-ip-adr")) )
|
||||||
{
|
{
|
||||||
port = 1;
|
ip = 1;
|
||||||
if((argv[i+1] == NULL) )
|
if((argv[i+1] == NULL) )
|
||||||
{
|
{
|
||||||
printf("Nezadali ste ip adresu\n");
|
printf("Nezadali ste ip adresu\n");
|
||||||
@ -86,7 +90,7 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-port")) )
|
else if( (!strcmp(argv[i], "-port")) )
|
||||||
{
|
{
|
||||||
ip = 1;
|
port = 1;
|
||||||
if((argv[i+1] == NULL) )
|
if((argv[i+1] == NULL) )
|
||||||
{
|
{
|
||||||
printf("Nezadali ste cislo portu\n");
|
printf("Nezadali ste cislo portu\n");
|
||||||
@ -97,7 +101,32 @@ int main(int argc, char** argv)
|
|||||||
cislo_portu = atoi(argv[i+1]);
|
cislo_portu = atoi(argv[i+1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-n")) )
|
else if( (!strcmp(argv[i], "-cert-aut")) )
|
||||||
|
{
|
||||||
|
if((argv[i+1] == NULL) || (i == argc-1))
|
||||||
|
{
|
||||||
|
printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Zadali ste nespravny typ certifikatu\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( (!strcmp(argv[i], "-cert")) )
|
||||||
{
|
{
|
||||||
nacitanie_zo_suboru = 1;
|
nacitanie_zo_suboru = 1;
|
||||||
if(generovanie_certifikatu)
|
if(generovanie_certifikatu)
|
||||||
@ -112,12 +141,10 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
|
||||||
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
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;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -126,9 +153,14 @@ int main(int argc, char** argv)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-g")) )
|
else if( (!strcmp(argv[i], "-cert-gen")) )
|
||||||
{
|
{
|
||||||
generovanie_certifikatu = 1;
|
generovanie_certifikatu = 1;
|
||||||
|
if(nacitanie_zo_suboru)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Nie je mozne zvolit obidve metody nacitania certifikatov naraz\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
if((argv[i+1] == NULL) || (i == argc-1))
|
if((argv[i+1] == NULL) || (i == argc-1))
|
||||||
{
|
{
|
||||||
printf("Nezadali ste typ certifikatu ktory chcete vygenerovat\n");
|
printf("Nezadali ste typ certifikatu ktory chcete vygenerovat\n");
|
||||||
@ -136,17 +168,14 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita_rsa.pem", NULL);
|
if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "klient@klient.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
|
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "klient@klient.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -155,6 +184,12 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//vypis upozornenia o autentizacii
|
||||||
|
if(!autentizacia)
|
||||||
|
{
|
||||||
|
printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n");
|
||||||
|
}
|
||||||
|
|
||||||
if(!ip)
|
if(!ip)
|
||||||
{
|
{
|
||||||
@ -181,18 +216,23 @@ int main(int argc, char** argv)
|
|||||||
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
||||||
|
|
||||||
//pokus o inicializaciu TCP/IP prenosoveho kanala
|
//pokus o inicializaciu TCP/IP prenosoveho kanala
|
||||||
|
printf("----------------\n| TCP/IP kanal |\n----------------\n");
|
||||||
|
printf("Pokus o inicializaciu TCP/IP prenosoveho kanala\n");
|
||||||
cislo_soketu = pripojit_na_server(ip_adresa, cislo_portu, 5);
|
cislo_soketu = pripojit_na_server(ip_adresa, cislo_portu, 5);
|
||||||
|
|
||||||
if(!cislo_soketu) return -1;
|
if(!cislo_soketu) return -1;
|
||||||
|
printf("TCP/IP kanal bol uspesne vytvoreny\n");
|
||||||
|
|
||||||
//pokus o vytvorenie novej wolfSSL relacie
|
//pokus o vytvorenie novej wolfSSL relacie
|
||||||
ssl = wolfSSL_new(ctx);
|
ssl = wolfSSL_new(ctx);
|
||||||
|
|
||||||
//priradenie file descriptora soketu ako I/O pre TLS spojenie
|
//priradenie file descriptora soketu ako I/O pre TLS spojenie
|
||||||
wolfSSL_set_fd(ssl, cislo_soketu);
|
wolfSSL_set_fd(ssl, cislo_soketu);
|
||||||
|
wolfSSL_set_using_nonblock(ssl, 1);
|
||||||
|
|
||||||
//pokus o inizicalizaciu TLS handshaku so serverom
|
//pokus o inizicalizaciu TLS handshaku so serverom
|
||||||
uspech = wolfSSL_connect(ssl);
|
uspech = wolfSSL_connect(ssl);
|
||||||
|
printf("-----------------\n| TLS Handshake |\n-----------------\n");
|
||||||
|
printf("Inicializacia TLS spojenia\n");
|
||||||
if(uspech != SSL_SUCCESS)
|
if(uspech != SSL_SUCCESS)
|
||||||
{
|
{
|
||||||
char* popis_chyby = calloc(100, sizeof(char));
|
char* popis_chyby = calloc(100, sizeof(char));
|
||||||
@ -202,18 +242,21 @@ int main(int argc, char** argv)
|
|||||||
printf("Skontrolujte certifikaty.\n");
|
printf("Skontrolujte certifikaty.\n");
|
||||||
free(popis_chyby);
|
free(popis_chyby);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
printf("Podarilo sa vytvorit TLS spojenie\n");
|
||||||
zobraz_sifru(ssl);
|
zobraz_sifru(ssl);
|
||||||
|
printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n");
|
||||||
zobraz_certifikat(ssl);
|
zobraz_certifikat(ssl);
|
||||||
|
|
||||||
//nastavenie funkcie pre vypocet kontrolneho suctu
|
//nastavenie funkcie pre vypocet kontrolneho suctu
|
||||||
//nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL
|
//nastavime typ "crc" alebo "hash" a nazov funkcie, nazov druhej funkcie nastavime na NULL
|
||||||
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
||||||
|
|
||||||
|
printf("-------------------\n| Poslanie suboru |\n-------------------\n");
|
||||||
|
|
||||||
|
if(poslat_subor(ssl, ctx, subor, &nastavenia, 16384) == -1) return -1;
|
||||||
|
|
||||||
if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1)
|
printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n");
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
ukoncit_spojenie(ssl, ctx);
|
ukoncit_spojenie(ssl, ctx);
|
||||||
}
|
}
|
||||||
ukoncit_soket(cislo_soketu);
|
ukoncit_soket(cislo_soketu);
|
||||||
|
BIN
tcpip_kanal/klient/obr.jpg
Normal file
BIN
tcpip_kanal/klient/obr.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
@ -12,4 +12,4 @@
|
|||||||
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat
|
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat
|
||||||
|
|
||||||
::Priklady spustenia:
|
::Priklady spustenia:
|
||||||
klient -ip 127.0.0.1 -port 8080 -n rsa -s document.pdf
|
klient -ip-adr 127.0.0.1 -port 8080 -cert rsa -cert-aut rsa -subor obr.jpg
|
||||||
|
BIN
tcpip_kanal/server/obr.jpg
Normal file
BIN
tcpip_kanal/server/obr.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 50 KiB |
@ -22,9 +22,12 @@
|
|||||||
#define ECC_CERTIFIKAT "../../certifikaty/server/server_ecc.pem"
|
#define ECC_CERTIFIKAT "../../certifikaty/server/server_ecc.pem"
|
||||||
#define VYGENEROVANY_KLUC "../../certifikaty/server/vygenerovany_kluc.key"
|
#define VYGENEROVANY_KLUC "../../certifikaty/server/vygenerovany_kluc.key"
|
||||||
#define VYGENEROVANY_CERTIFIKAT "../../certifikaty/server/vygenerovany_certifikat.pem"
|
#define VYGENEROVANY_CERTIFIKAT "../../certifikaty/server/vygenerovany_certifikat.pem"
|
||||||
|
#define VYGENEROVANA_ZIADOST "../../certifikaty/server/vygenerovana_ziadost.pem"
|
||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
int autentizacia = 0;
|
||||||
|
int uspech;
|
||||||
int autentizacia_klienta = 0;
|
int autentizacia_klienta = 0;
|
||||||
int generovanie_certifikatu = 0;
|
int generovanie_certifikatu = 0;
|
||||||
int nacitanie_zo_suboru = 0;
|
int nacitanie_zo_suboru = 0;
|
||||||
@ -52,6 +55,7 @@ int main(int argc, char **argv)
|
|||||||
{
|
{
|
||||||
//skontroluje ci nebol zadany prepinac "-g" pre moznost generovanie certifikatu,
|
//skontroluje ci nebol zadany prepinac "-g" pre moznost generovanie certifikatu,
|
||||||
//ak ano pozrie aky typ certifikatu (v CLI argument hned za nim) bol zvoleny
|
//ak ano pozrie aky typ certifikatu (v CLI argument hned za nim) bol zvoleny
|
||||||
|
printf("---------------\n| Certifikaty |\n---------------\n");
|
||||||
for(int i = 0; i < argc; i++)
|
for(int i = 0; i < argc; i++)
|
||||||
{
|
{
|
||||||
if( (!strcmp(argv[i], "-port")) )
|
if( (!strcmp(argv[i], "-port")) )
|
||||||
@ -67,7 +71,32 @@ int main(int argc, char **argv)
|
|||||||
cislo_portu = atoi(argv[i+1]);
|
cislo_portu = atoi(argv[i+1]);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-n")) )
|
else if( (!strcmp(argv[i], "-cert-aut")) )
|
||||||
|
{
|
||||||
|
if((argv[i+1] == NULL) || (i == argc-1))
|
||||||
|
{
|
||||||
|
printf("Nezadali ste typ certifikatu autority ktory chcete nacitat\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
|
{
|
||||||
|
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
||||||
|
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||||
|
autentizacia = 1;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
printf("Zadali ste nespravny typ certifikatu\n");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if( (!strcmp(argv[i], "-cert")) )
|
||||||
{
|
{
|
||||||
nacitanie_zo_suboru = 1;
|
nacitanie_zo_suboru = 1;
|
||||||
if(generovanie_certifikatu)
|
if(generovanie_certifikatu)
|
||||||
@ -82,18 +111,11 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
|
||||||
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
|
||||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
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);
|
|
||||||
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);
|
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -101,7 +123,7 @@ int main(int argc, char **argv)
|
|||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else if( (!strcmp(argv[i], "-g")) )
|
else if( (!strcmp(argv[i], "-cert-gen")) )
|
||||||
{
|
{
|
||||||
generovanie_certifikatu = 1;
|
generovanie_certifikatu = 1;
|
||||||
if(nacitanie_zo_suboru)
|
if(nacitanie_zo_suboru)
|
||||||
@ -116,15 +138,13 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "rsa"))
|
else if(!strcmp(argv[i+1], "rsa"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_rsa.pem", NULL);
|
if(generovat_rsa_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
|
|
||||||
}
|
}
|
||||||
else if(!strcmp(argv[i+1], "ecc"))
|
else if(!strcmp(argv[i+1], "ecc"))
|
||||||
{
|
{
|
||||||
wolfSSL_CTX_load_verify_locations(ctx, "../../certifikaty/autorita/autorita_ecc.pem", NULL);
|
if(generovat_ecc_certifikat(VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC, ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
||||||
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
|
|
||||||
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -135,6 +155,12 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
//vypis upozornenia o autentizacii
|
||||||
|
if(!autentizacia)
|
||||||
|
{
|
||||||
|
printf("Nebol nacitany certifikat autority, takze nebude vykonana autentizacia druhej strany\n");
|
||||||
|
}
|
||||||
|
|
||||||
if(!port)
|
if(!port)
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nebol urceny port\n");
|
fprintf(stderr, "Nebol urceny port\n");
|
||||||
@ -151,6 +177,8 @@ int main(int argc, char **argv)
|
|||||||
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
||||||
|
|
||||||
//pokus vytvorenie TCP/IP prenosoveho kanala
|
//pokus vytvorenie TCP/IP prenosoveho kanala
|
||||||
|
printf("----------------\n| TCP/IP kanal |\n----------------\n");
|
||||||
|
printf("Pokus o inicializaciu TCP/IP prenosoveho kanala\n");
|
||||||
cislo_soketu = cakat_na_komunikaciu(cislo_portu);
|
cislo_soketu = cakat_na_komunikaciu(cislo_portu);
|
||||||
|
|
||||||
struct sockaddr_in adresa;
|
struct sockaddr_in adresa;
|
||||||
@ -158,15 +186,18 @@ int main(int argc, char **argv)
|
|||||||
int velkost = sizeof(adresa);
|
int velkost = sizeof(adresa);
|
||||||
int cislo_soketu_klienta = accept(cislo_soketu, (struct sockaddr*)&adresa, &velkost);
|
int cislo_soketu_klienta = accept(cislo_soketu, (struct sockaddr*)&adresa, &velkost);
|
||||||
printf("Spojenie [%s:%d]\n", inet_ntoa(adresa.sin_addr), ntohs(adresa.sin_port));
|
printf("Spojenie [%s:%d]\n", inet_ntoa(adresa.sin_addr), ntohs(adresa.sin_port));
|
||||||
|
printf("TCP/IP kanal bol uspesne vytvoreny\n");
|
||||||
|
|
||||||
//pokus o vytvorenie novej wolfSSL relacie
|
//pokus o vytvorenie novej wolfSSL relacie
|
||||||
ssl = wolfSSL_new(ctx);
|
ssl = wolfSSL_new(ctx);
|
||||||
|
|
||||||
//priradenie file descriptora soketu ako I/O pre TLS spojenie
|
//priradenie file descriptora soketu ako I/O pre TLS spojenie
|
||||||
wolfSSL_set_fd(ssl, cislo_soketu_klienta);
|
wolfSSL_set_fd(ssl, cislo_soketu_klienta);
|
||||||
|
wolfSSL_set_using_nonblock(ssl, 1);
|
||||||
|
|
||||||
//cakanie na inicializaciu TLS handshaku klientom
|
//cakanie na inicializaciu TLS handshaku klientom
|
||||||
int uspech;
|
printf("-----------------\n| TLS Handshake |\n-----------------\n");
|
||||||
|
printf("Inicializacia TLS spojenia\n");
|
||||||
if(wolfSSL_accept(ssl) != SSL_SUCCESS)
|
if(wolfSSL_accept(ssl) != SSL_SUCCESS)
|
||||||
{
|
{
|
||||||
char* popis_chyby = calloc(100, sizeof(char));
|
char* popis_chyby = calloc(100, sizeof(char));
|
||||||
@ -177,7 +208,9 @@ int main(int argc, char **argv)
|
|||||||
free(popis_chyby);
|
free(popis_chyby);
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
printf("Podarilo sa vytvorit TLS spojenie\n");
|
||||||
zobraz_sifru(ssl);
|
zobraz_sifru(ssl);
|
||||||
|
printf("----------------------------\n| Informacie o certifikate |\n----------------------------\n");
|
||||||
zobraz_certifikat(ssl);
|
zobraz_certifikat(ssl);
|
||||||
|
|
||||||
//nastavenie funkcie pre vypocet kontrolneho suctu
|
//nastavenie funkcie pre vypocet kontrolneho suctu
|
||||||
@ -185,15 +218,14 @@ int main(int argc, char **argv)
|
|||||||
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
nastav_funkciu(&nastavenia, "crc", (hashovacia_funkcia)NULL, funkcia_CRC32);
|
||||||
|
|
||||||
//vypocet casu prenosu suboru
|
//vypocet casu prenosu suboru
|
||||||
|
printf("-------------------\n| Prijatie suboru |\n-------------------\n");
|
||||||
clock_t cas;
|
clock_t cas;
|
||||||
cas = clock();
|
cas = clock();
|
||||||
if(prijat_subor(ssl, ctx, &nastavenia) == -1)
|
if(prijat_subor(ssl, ctx, &nastavenia, 16384) == -1) return -1;
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
cas = clock() - cas;
|
cas = clock() - cas;
|
||||||
printf("Cas prenosu suboru: %f sekund\n", (double)cas/CLOCKS_PER_SEC);
|
printf("Cas prenosu suboru: %f sekund\n", (double)cas/CLOCKS_PER_SEC);
|
||||||
|
|
||||||
|
printf("----------------------\n| Ukoncenie spojenia |\n----------------------\n");
|
||||||
ukoncit_spojenie(ssl, ctx);
|
ukoncit_spojenie(ssl, ctx);
|
||||||
}
|
}
|
||||||
ukoncit_soket(cislo_soketu);
|
ukoncit_soket(cislo_soketu);
|
||||||
|
@ -11,5 +11,5 @@
|
|||||||
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
||||||
|
|
||||||
::Priklady spustenia:
|
::Priklady spustenia:
|
||||||
server -port 8080 -n rsa
|
server -port 8080 -cert rsa -cert-aut rsa
|
||||||
::server -port 8080 -g ecc
|
::server -port 8080 -g ecc
|
Loading…
Reference in New Issue
Block a user