.
This commit is contained in:
parent
e532cee113
commit
dcc301c745
@ -1,18 +0,0 @@
|
||||
-----BEGIN CERTIFICATE-----
|
||||
MIIC9DCCAl2gAwIBAgIPOFnW4ztFVHh112J1efiUMA0GCSqGSIb3DQEBCwUAMHMx
|
||||
CzAJBgNVBAYTAlNLMQowCAYDVQQIDAEtMQ8wDQYDVQQHDAZLb3NpY2UxETAPBgNV
|
||||
BAoMCEF1dG9yaXRhMRIwEAYDVQQDDAlsb2NhbC5kZXYxIDAeBgkqhkiG9w0BCQEW
|
||||
EWF1dG9yaXRhQHR1a2UuY29tMCIYDzIwMjAwMzE4MTIzMDM3WhgPMjAyNTAzMTgx
|
||||
MjMwMzdaMHcxCzAJBgNVBAYTAlNSMQowCAYDVQQIDAEtMQ8wDQYDVQQHDAZLb3Np
|
||||
Y2UxCjAIBgNVBAoMAS0xCjAIBgNVBAsMAS0xEjAQBgNVBAMMCWxvY2FsLmRldjEf
|
||||
MB0GCSqGSIb3DQEJARYQa2xpZW50QGtsaWVudC5zazCCASIwDQYJKoZIhvcNAQEB
|
||||
BQADggEPADCCAQoCggEBANhd9y+QBegPHmVd5/CJmhz4dJjNEqppJkOgxkxK98so
|
||||
aJa/9DJ5vfBuYS4ghovuCB29kvbMcOcnZK+qE50YVzSRQzoeBOo7vOTzukSdm5Uh
|
||||
Ja43FDAkUtEt4Z3cGpCMIjaRz+mFKmAyN7EiGeoAeOre1GNc6oqwYDNKQKfshG9Y
|
||||
HUmO8AenFLTcLCRurwMSsXLTr8OyiLy2ZTuszn7pwisKSEiZFIdGwxSPZdKi5tOF
|
||||
FxryCaKVD/Hn+NMWTaoX2gBED/4JggftY6YplQMvZyNu1Fz/YCFjq+9sEIfV2595
|
||||
E+9MuO/0q9k5/9xDlDt5S+PjSd38N1IaxShdxTBU3AECAwEAATANBgkqhkiG9w0B
|
||||
AQsFAAOBgQB+YyoHZPpNX3Adu4YeKyyoGV7Bjw3vZwZS3qNCioecGOtO1w7KIsQc
|
||||
idDf1mCY2PUVC7mrEENtbENK8TAFNYRkv3NOM0UD/KcmJpyo7UdTNZXNyvwlIXrf
|
||||
2mQz1lE5/jXuDdZdCz5SvslB0vj65NiTOjjWt83KsLkpg9sKudkJrA==
|
||||
-----END CERTIFICATE-----
|
@ -1,27 +0,0 @@
|
||||
-----BEGIN RSA PRIVATE KEY-----
|
||||
MIIEowIBAAKCAQEA2F33L5AF6A8eZV3n8ImaHPh0mM0SqmkmQ6DGTEr3yyholr/0
|
||||
Mnm98G5hLiCGi+4IHb2S9sxw5ydkr6oTnRhXNJFDOh4E6ju85PO6RJ2blSElrjcU
|
||||
MCRS0S3hndwakIwiNpHP6YUqYDI3sSIZ6gB46t7UY1zqirBgM0pAp+yEb1gdSY7w
|
||||
B6cUtNwsJG6vAxKxctOvw7KIvLZlO6zOfunCKwpISJkUh0bDFI9l0qLm04UXGvIJ
|
||||
opUP8ef40xZNqhfaAEQP/gmCB+1jpimVAy9nI27UXP9gIWOr72wQh9Xbn3kT70y4
|
||||
7/Sr2Tn/3EOUO3lL4+NJ3fw3UhrFKF3FMFTcAQIDAQABAoIBABISdy0P2I5zhNRu
|
||||
rYrX03mL/yEsL9zv/3Qyn52LvXrIm0PMMLdul8DXV2Kk8NgLP75MMVRP6zZDghNy
|
||||
H0VF3TLU10qpazutVa/B89L7Xx1rsVwF2bfTsN8r9+ZZlhZwvgLU1wroRovWZfRz
|
||||
prp246Kqjg7mmeiPptlh4FimVsF98U0Iz132z9KTxFufJ5wcTcGvz+Z+p5lVIeBY
|
||||
hCdYWWLXXT3mjXVQjFGF13NuY2+CT2AL2EzrwN0/+tcytJMUh/ThBxU2PwPyMnZz
|
||||
fTVddcJt5Ipg4m3LQfVZZX+XpckpEI8lkbsvOC86Y9Iu5FJmPd43X4qAnXgWLzgp
|
||||
Cm9GVGECgYEA89vpdqNGYbRQR6TrlZ2kYCMyCMj1Op47jtDpW6zE11iDjszE2VWD
|
||||
XwkWE55hj0tp073kCnJzPM1Y8CslVhDGzygx5wiNRupKE9vRSkYxwsXaJpF0SfYc
|
||||
ZiaPvL+6MeRtLMZ0Fkk5HbjpwcTtJP7f2oQH/owxd/sWOGS/kWY5hcUCgYEA4yOo
|
||||
Ewfde3jZY0OUiERq9OadLpaKI2ADJvkyKxZmWzGFUVJ/PVoTYPR1EQurXi1kLXXI
|
||||
rDA5H+Lz27R+9gTT8K6u7Faanlhp3P65xPIuCiJ78Nh6TnG5NRt7A2P5XY6UGahT
|
||||
Zzj5UQc4P796DAgB6CPYCCsn0Gxz+u4R3/gW3Q0CgYBIaNBWDf1kHaqI24uojXq1
|
||||
oT3GJgXLNhjxO09PjWmVmA7YZC0/a4jqu0P251yItBfka8o+3+Uf9Mmn5ufbOngO
|
||||
Ix1OQNfSatc8NlVa/KTh9OXl9eLV42JjYqfjn/qlvfI9DWCDDZMMJFAk3VidV6EY
|
||||
vYOyLeayfbgHXsMTZYtHEQKBgQCw+LkdisVATJpjwuXZfiUvhvb0s4oRod8S4Jn8
|
||||
BEnfx6euAu7saGAs7IrBqyvsBsXEvb6KmlAHzhZeGjXJjV1sa04TCi8SLKTe8QDg
|
||||
uCiy8MdMkf5JXEYHYM/phl1mTY6KpyHEjRmDznI/CPsYoKyLqFHLm4Q72iRLYG5A
|
||||
6NU3iQKBgByzyily3RuiAhC5+fsiZafqpTx7+9Tc6CZnuS0HlGH6WJ9b7fgXWKD9
|
||||
d252qQyaHGzHAtaF2tjzTwEbI3WIJmFU1y+XOXPDdue32saNNhXd6xF7FD1RK4az
|
||||
T3hOyo14S4RPvpJp6KITPBLD6kUUQS8r/gcGXLWBDudsTFH1UgJy
|
||||
-----END RSA PRIVATE KEY-----
|
@ -3,21 +3,14 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include "komunikacia.h"
|
||||
#include "kryptografia.h"
|
||||
#include "rs232.h"
|
||||
|
||||
hashovacia_funkcia h_funkcia;
|
||||
int rs232_rozhranie;
|
||||
|
||||
void nastav_funkciu(hashovacia_funkcia funkcia)
|
||||
{
|
||||
h_funkcia = funkcia;
|
||||
}
|
||||
|
||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
|
||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta, nastavenia_aplikacie *nastavenia)
|
||||
{
|
||||
int uspech;
|
||||
|
||||
@ -73,7 +66,7 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
|
||||
//generovanie a poslanie kontrolneho suctu serveru pre kontrolu
|
||||
byte* kontrolny_sucet;
|
||||
int velkost_kontrolneho_suctu;
|
||||
kontrolny_sucet = generovat_kontrolny_sucet_suboru(h_funkcia, cesta, &velkost_kontrolneho_suctu);
|
||||
kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia->funkcia, cesta, &velkost_kontrolneho_suctu);
|
||||
for(int i = 0; i < velkost_kontrolneho_suctu; i++)
|
||||
{
|
||||
kontrolny_sucet[i] = (char)kontrolny_sucet[i];
|
||||
@ -88,7 +81,7 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
|
||||
}
|
||||
}
|
||||
|
||||
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
|
||||
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia)
|
||||
{
|
||||
int uspech;
|
||||
|
||||
@ -139,7 +132,7 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
|
||||
//vypocet vlastneho kontrolneho suctu
|
||||
byte* kontrolny_sucet;
|
||||
int velkost_kontrolneho_suctu;
|
||||
kontrolny_sucet = generovat_kontrolny_sucet_suboru(h_funkcia, cesta, &velkost_kontrolneho_suctu);
|
||||
kontrolny_sucet = generovat_kontrolny_sucet_suboru(nastavenia->funkcia, cesta, &velkost_kontrolneho_suctu);
|
||||
|
||||
//prijem hashu, ktory vypocital server
|
||||
char* prijaty_kontrolny_sucet = calloc(velkost_kontrolneho_suctu, sizeof(char));
|
||||
@ -202,7 +195,11 @@ int pripojit_na_server(char *ip_adresa, int cislo_portu, int pocet_sekund)
|
||||
uspech = connect(cislo_soketu, (struct sockaddr*)&adresa, sizeof(adresa));
|
||||
if(uspech < 0)
|
||||
{
|
||||
if(errno == EINPROGRESS)
|
||||
#if defined(_WIN32)
|
||||
if(errno == WSAEINPROGRESS )
|
||||
#else
|
||||
if(errno == EINPROGRESS )
|
||||
#endif
|
||||
{
|
||||
fprintf(stderr, "Nebolo mozne okamzite vytvorit spojenie\n");
|
||||
do
|
||||
@ -212,7 +209,11 @@ int pripojit_na_server(char *ip_adresa, int cislo_portu, int pocet_sekund)
|
||||
FD_ZERO(&sada_soketov);
|
||||
FD_SET(cislo_soketu, &sada_soketov);
|
||||
uspech = select(cislo_soketu + 1, NULL, &sada_soketov, NULL, &casovy_interval);
|
||||
#if defined(_WIN32)
|
||||
if (uspech < 0 && errno != WSAEINTR)
|
||||
#else
|
||||
if (uspech < 0 && errno != EINTR)
|
||||
#endif
|
||||
{
|
||||
fprintf(stderr, "Nastala chyba pri pokuse o vytvorenie spojenia\nCislo chyby: %d\nPopis: %s\n", errno, strerror(errno));
|
||||
ukoncit_soket(cislo_soketu);
|
||||
@ -287,15 +288,5 @@ int cakat_na_komunikaciu(int cislo_portu)
|
||||
return cislo_soketu;
|
||||
}
|
||||
|
||||
int rs232_otvorit_rozhranie(int cislo_rozhrania, int rychlost, const char* rezim, int riadenie_toku_dat)
|
||||
{
|
||||
int uspech;
|
||||
rs232_rozhranie = cislo_rozhrania;
|
||||
uspech = RS232_OpenComport(cislo_rozhrania, rychlost, rezim, riadenie_toku_dat);
|
||||
if(uspech == 1)
|
||||
{
|
||||
fprintf(stderr, "Nebolo mozne otvorit seriove rozhranie\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#ifndef __KOMUNIKACIA_H__
|
||||
@ -17,7 +17,6 @@
|
||||
#include "kryptografia.h"
|
||||
#include "rs232.h"
|
||||
|
||||
|
||||
#define VELKOST_CESTY 64 //velkost retazca, kt. uklada lokaciu suboru
|
||||
#define VELKOST_SUBOR 32 //velkost retazca, kt. uklada velkost prenasaneho suboru
|
||||
|
||||
@ -31,8 +30,6 @@
|
||||
#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
|
||||
@ -79,9 +76,7 @@ int cakat_na_komunikaciu(int cislo_portu);
|
||||
// RS232 KOMUNIKACNY KANAL //
|
||||
/////////////////////////////
|
||||
|
||||
int rs232_otvorit_rozhranie(int cislo_rozhrania, int rychlost, const char* rezim, int riadenie_toku_dat);
|
||||
|
||||
|
||||
//..
|
||||
|
||||
//////////////////////
|
||||
// PRACA SO SUBORMI //
|
||||
@ -94,7 +89,7 @@ int rs232_otvorit_rozhranie(int cislo_rozhrania, int rychlost, const char* rezim
|
||||
* @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);
|
||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta, nastavenia_aplikacie* nastavenia);
|
||||
|
||||
/**
|
||||
* prijat_subor: realizuje prijem suboru
|
||||
@ -102,14 +97,6 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta);
|
||||
* @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);
|
||||
|
||||
/**
|
||||
* 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);
|
||||
|
||||
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia);
|
||||
|
||||
#endif
|
@ -3,10 +3,12 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include "kryptografia.h"
|
||||
#include <wolfssl/user_settings.h>
|
||||
|
||||
|
||||
WOLFSSL_CTX* nastavit_ctx_klient()
|
||||
{
|
||||
@ -42,6 +44,11 @@ void nastav_sifry(WOLFSSL_CTX* ctx, const char* sifry)
|
||||
wolfSSL_CTX_set_cipher_list(ctx, sifry);
|
||||
}
|
||||
|
||||
void nastav_funkciu(nastavenia_aplikacie* nastavenia, hashovacia_funkcia funkcia)
|
||||
{
|
||||
nastavenia->funkcia = funkcia;
|
||||
}
|
||||
|
||||
void zobraz_sifru(WOLFSSL* ssl)
|
||||
{
|
||||
printf ("Pouzita sifra: %s\n", wolfSSL_get_cipher(ssl));
|
||||
@ -630,4 +637,4 @@ void ukoncit_spojenie(WOLFSSL *ssl, WOLFSSL_CTX *ctx)
|
||||
wolfSSL_CTX_free(ctx);
|
||||
wolfSSL_Cleanup();
|
||||
printf("Program bol ukonceny.\n");
|
||||
}
|
||||
}
|
@ -3,7 +3,7 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#ifndef __KRYPTOGRAFIA_H__
|
||||
@ -27,7 +27,11 @@
|
||||
typedef enum hashovacia_funkcia {
|
||||
funkcia_SHA, funkcia_SHA224, funkcia_SHA256, funkcia_SHA384, funkcia_SHA512,
|
||||
funkcia_BLAKE2B, funkcia_RIPEMD160
|
||||
}hashovacia_funkcia;
|
||||
} hashovacia_funkcia;
|
||||
|
||||
typedef struct nastavenia_aplikacie {
|
||||
hashovacia_funkcia funkcia;
|
||||
} nastavenia_aplikacie;
|
||||
|
||||
/**
|
||||
* generovat_hash: realizuje vypocet kontrolneho suctu zo suboru, ktoreho lokacia je predana v argumente
|
||||
@ -106,6 +110,15 @@ void zobraz_sifru(WOLFSSL* ssl);
|
||||
*/
|
||||
void nastav_sifry(WOLFSSL_CTX* ctx, const char* sifry);
|
||||
|
||||
|
||||
/**
|
||||
* nastav_funkciu: nastavi hashovaciu funkciu ktora bude pouzita pri vypocte kontrolneho suctu suboru
|
||||
* @parameter nastavenia_aplikacie* nastavenia: reprezentuje nastavenia aplikacie: server alebo klient
|
||||
* @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(nastavenia_aplikacie* nastavenia, hashovacia_funkcia funkcia);
|
||||
|
||||
/**
|
||||
* nacitat_certifikaty: realizuje nacitanie certifikatov zo suborov do struktury WOLFSSL_CTX
|
||||
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
||||
|
90
readme.txt
90
readme.txt
@ -2,49 +2,54 @@ Bakalarska praca
|
||||
Meno studenta: Tomas Lukac
|
||||
Veduci BP: prof. Ing. Milos Drutarovsky CSc.
|
||||
Skola: KEMT FEI TUKE
|
||||
Datum poslednej upravy: 12.3.2020
|
||||
Datum poslednej upravy: 6.4.2020
|
||||
Verzia: 0.1
|
||||
----------------------------
|
||||
Zoznam zdrojovych suborov
|
||||
certifikaty
|
||||
|__autorita_ecc.pem
|
||||
|__autorita_ecc.key
|
||||
|__autorita_rsa.pem
|
||||
|__autorita_rsa.key
|
||||
|__server_ecc.pem
|
||||
|__server_ecc.key
|
||||
|__server_rsa.pem
|
||||
|__server_rsa.key
|
||||
|__klient_ecc.pem
|
||||
|__klient_ecc.key
|
||||
|__klient_rsa.pem
|
||||
|__klient_rsa.key
|
||||
autorita
|
||||
|__autorita_ecc.pem
|
||||
|__autorita_ecc.key
|
||||
|__autorita_rsa.pem
|
||||
|__autorita_rsa.key
|
||||
server
|
||||
|__server_ecc.pem
|
||||
|__server_ecc.key
|
||||
|__server_rsa.pem
|
||||
|__server_rsa.key
|
||||
klient
|
||||
|__klient_ecc.pem
|
||||
|__klient_ecc.key
|
||||
|__klient_rsa.pem
|
||||
|__klient_rsa.key
|
||||
kniznica
|
||||
|__komunikacia.h
|
||||
|__komunikacia.c
|
||||
|__kryptografia.h
|
||||
|__kryptografia.c
|
||||
|__vstup.h
|
||||
|__vstup.c
|
||||
tcpip_kanal
|
||||
|__klient.c
|
||||
|__server.c
|
||||
|__Makefile
|
||||
rs232_kanal
|
||||
|__klient.c
|
||||
|__klient.txt
|
||||
|__server.c
|
||||
|__server.txt
|
||||
|__Makefile
|
||||
|
||||
Opis aplikacie
|
||||
Realizuje zabezpecenu vymenu sprav medzi klientom a serverom a autentizaciu servera klientom vyuzitim kniznice WolfSSL. Ako prvu je
|
||||
potrebne spustit aplikaciu na strane servera s prepinacom port s hodnotou, ktora urcuje ake bude cislo portu, na ktorom bude server
|
||||
cakar na prichadzajucu komunikaciu. Dalsim potrebnym prepinacom je bud -n (nacitanie certifikatov z adresaru /certifikaty) alebo
|
||||
-g (vygenerovanie a podpis certifikatov pomocou certifikatu a kluca autority, ktore sa nachadzaju taktiez v adresari /certifikaty).
|
||||
Sukromne kluce a certifikaty su ulozene vo formate Privacy-Enhanced Mail (PEM). Nasledne je potrebne spustit aplikaciu na strane
|
||||
klienta, ktora okrem predchadzajucich parametrov vyzaduje parameter pre ip adresu: -ip adresa. Po vytvoreni zabezpeceneho prenosoveho
|
||||
kanalu sa klient pokusi odoslat subor, ktoreho lokacia mu bola predana pri spusteni pomocou parametru -s subor. Pred samotnym poslanim
|
||||
klient najprv vyhotovi kontrolny sucet suboru, ktory odosle po zabezpecenom kanali serveru. Ten po prijati suboru overi ci sa zhoduje
|
||||
prijaty kontrolny sucet s jeho, ktory vyhotovil po prijati suboru. Ak pri prijati suboru nenastala chyba a kontrolne sucty sa zhoduju
|
||||
server oznami ze prijem bol uspesny a dalej caka na komunikaciu. Klientsky program po odoslani suboru ukonci svoju cinnost.
|
||||
cakat na prichadzajucu komunikaciu, v pripade rs232 kanala je potrebne uviest cislo serioveho rozhrania (hodnoty: https://www.teuniz.net/RS-232/).
|
||||
Dalsim potrebnym prepinacom je bud -n (nacitanie certifikatov z adresaru /certifikaty) alebo -g (vygenerovanie a podpis certifikatov
|
||||
pomocou certifikatu a kluca autority, ktore sa nachadzaju taktiez v adresari /certifikaty).Sukromne kluce a certifikaty su ulozene vo formate DER.
|
||||
Nasledne je potrebne spustit aplikaciu na strane klienta, ktora pri pouziti kanalu TCP_IP okrem predchadzajucich parametrov vyzaduje parameter
|
||||
pre ip adresu: -ip adresa. Po vytvoreni zabezpeceneho prenosoveho kanalu sa klient pokusi odoslat subor, ktoreho lokacia mu bola predana pri
|
||||
spusteni pomocou parametru -s subor. Pred samotnym poslanim klient najprv vyhotovi kontrolny sucet suboru, ktory odosle po zabezpecenom kanali
|
||||
serveru. Ten po prijati suboru overi ci sa zhoduje prijaty kontrolny sucet s jeho, ktory vyhotovil po prijati suboru. Ak pri prijati suboru
|
||||
nenastala chyba a kontrolne sucty sa zhoduju server oznami ze prijem bol uspesny a dalej caka na komunikaciu.
|
||||
Klientsky program po odoslani suboru ukonci svoju cinnost.
|
||||
|
||||
Generovanie certifikatov RSA (OpenSSL)
|
||||
openssl genrsa -out autorita_rsa.key 2048
|
||||
@ -80,27 +85,34 @@ Navod na prelozenie a spustenie (Linux)
|
||||
sudo make install
|
||||
2. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
||||
make all
|
||||
3. spustenie
|
||||
3. spustenie (prenosovy kanal TCP/IP)
|
||||
./server -port port -n rsa|ecc
|
||||
./server -port port -g rsa|ecc
|
||||
./klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
|
||||
./klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor
|
||||
4. spustenie (prenosovy kanal RS232)
|
||||
./server -port seriove_rozhranie -n rsa|ecc
|
||||
./server -port seriove_rozhranie -g rsa|ecc
|
||||
./klient -port seriove_rozhranie -n rsa|ecc -s subor
|
||||
./klient -port seriove_rozhranie -g rsa|ecc -s subor
|
||||
|
||||
Navod na prelozenie a spustenie (Windows)
|
||||
1. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
||||
mingw32-make all
|
||||
2. spustenie
|
||||
server -port port -n rsa|ecc
|
||||
server -port port -g rsa|ecc
|
||||
klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
|
||||
klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor
|
||||
|
||||
Zoznam DLL suborov potrebnych pre spustenie (Windows)
|
||||
1. vcruntime140.dll
|
||||
2. wolfssl.dll
|
||||
3. ws2_32.dll
|
||||
Poznamka:
|
||||
pre preklad na 64bit architekturach je nutne premennovat subory s koncovkami *_64.dll na nazvy DLLiek uvedenych vyssie
|
||||
a povodne DLLka premenovat na ine nazvy, najlepsie *_32.dll
|
||||
1. skopirovanie potrebnych dll z adresara /wolfssl/64bit_kniznice/ , resp. /wolfssl/32bit_kniznice/
|
||||
do podadresara tcpip_kanal, resp. rs232_kanal
|
||||
a) wolfssl.dll -> kniznica wolfssl
|
||||
b) vcruntime140.dll -> visual c++ runtime
|
||||
c) api-ms-win-crt-runtime-l1-1-0.dll
|
||||
2. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
||||
make all
|
||||
3. spustenie (prenosovy kanal TCP/IP)
|
||||
server -port port -n rsa|ecc
|
||||
server -port port -g rsa|ecc
|
||||
klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
|
||||
klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor
|
||||
4. spustenie (prenosovy kanal RS232)
|
||||
server -port seriove_rozhranie -n rsa|ecc
|
||||
server -port seriove_rozhranie -g rsa|ecc
|
||||
klient -port seriove_rozhranie -n rsa|ecc -s subor
|
||||
klient -port seriove_rozhranie -g rsa|ecc -s subor
|
||||
|
||||
|
@ -2,28 +2,27 @@
|
||||
## Meno studenta: Tomas Lukac ##
|
||||
## Veduci BP: prof. Ing. Milos Drutarovsky CSc. ##
|
||||
## Skola: KEMT FEI TUKE ##
|
||||
## Datum poslednej upravy: 12.3.2020 ##
|
||||
## Datum poslednej upravy: 6.4.2020 ##
|
||||
##################################################
|
||||
|
||||
#prekladac
|
||||
CC = gcc
|
||||
|
||||
#prepinace pre prekladac
|
||||
CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/
|
||||
LIB = -L. -lwolfssl
|
||||
CFLAGS = -Wcpp -Werror -I./../wolfssl/
|
||||
LIB =
|
||||
|
||||
ifeq ($(OS), Windows_NT)
|
||||
LIB += -lws2_32
|
||||
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
|
||||
LIB += -m64
|
||||
LIB += -L./../wolfssl/64bit_kniznice/ -lwolfssl -lws2_32 -m64
|
||||
endif
|
||||
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
|
||||
LIB += -Os
|
||||
LIB += -L./../wolfssl/32bit_kniznice/ -lwolfssl -lws2_32 -Os
|
||||
endif
|
||||
else
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(UNAME_S), Linux)
|
||||
LIB +=
|
||||
LIB += -lwolfssl
|
||||
endif
|
||||
endif
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include <stdio.h>
|
||||
@ -17,7 +17,8 @@
|
||||
#include <Windows.h>
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#define O_NOCTTY 0
|
||||
#define O_NOCTTY 0x8000
|
||||
#define O_NDELAY 0x4000
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
@ -26,55 +27,249 @@
|
||||
#include "../kniznica/komunikacia.h"
|
||||
#include "../kniznica/rs232.h"
|
||||
|
||||
int rs232_poslat;
|
||||
#define RSA_VELKOST 2048
|
||||
#define ECC_VELKOST 32
|
||||
#define RSA_EXPONENT 65537
|
||||
|
||||
//cesty ku suborom
|
||||
#define RSA_KLUC "../certifikaty/klient/klient_rsa.key"
|
||||
#define RSA_CERTIFIKAT "../certifikaty/klient/klient_rsa.pem"
|
||||
#define ECC_KLUC "../certifikaty/klient/klient_ecc.key"
|
||||
#define ECC_CERTIFIKAT "../certifikaty/klient/klient_ecc.pem"
|
||||
#define VYGENEROVANY_KLUC "../certifikaty/klient/vygenerovany_kluc.key"
|
||||
#define VYGENEROVANY_CERTIFIKAT "../certifikaty/klient/vygenerovany_certifikat.pem"
|
||||
#define KOMUNIKACNY_SUBOR "klient.txt"
|
||||
|
||||
int rs232_prijat;
|
||||
int cislo_rozhrania = 4;
|
||||
int aktualne_data = 0;
|
||||
|
||||
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||
{
|
||||
(void)ssl;
|
||||
(void)ctx;
|
||||
int uspech = 0;
|
||||
while(uspech <= 0)
|
||||
|
||||
//ziskanie dat zo serioveho rozhrania
|
||||
if(aktualne_data == 0)
|
||||
{
|
||||
uspech = (int)read(rs232_prijat, buf, (size_t)sz);
|
||||
FILE* f = fopen(KOMUNIKACNY_SUBOR, "ab");
|
||||
int nacitane_data = 0;
|
||||
int prebieha_nacitanie = 0;
|
||||
unsigned char znak;
|
||||
|
||||
//kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy
|
||||
unsigned char zaciatok_spravy[] = {0xAA, 0xAA, 0xAA, 0xAA};
|
||||
int zaciatok_spravy_pozicia = 0; //aktualna pozicia v kontrolnom vzore
|
||||
unsigned char koniec_spravy[] = {0xBB, 0xBB, 0xBB, 0xBB};
|
||||
int koniec_spravy_pozicia = 0; //aktualna pozicia v kontrolnom vzore
|
||||
|
||||
while(1)
|
||||
{
|
||||
uspech = RS232_PollComport(cislo_rozhrania, &znak, 1);
|
||||
if(uspech > 0)
|
||||
{
|
||||
if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia <= 2))
|
||||
{
|
||||
zaciatok_spravy_pozicia++;
|
||||
}
|
||||
else if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia > 2))
|
||||
{
|
||||
//ak bol najdeny koniec kontrolneho vzoru, tak je zapnuta znacka,
|
||||
//ktora urcuje ze prebieha nacitavanie spravy
|
||||
prebieha_nacitanie = 1;
|
||||
zaciatok_spravy_pozicia = 0;
|
||||
}
|
||||
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia <= 2))
|
||||
{
|
||||
koniec_spravy_pozicia++;
|
||||
}
|
||||
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia > 2))
|
||||
{
|
||||
//ak bol najdeny koniec kontrolneho vzoru, tak je vypnuta znacka,
|
||||
//ktora urcuje ze prebieha nacitanie spravy
|
||||
prebieha_nacitanie = 0;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(prebieha_nacitanie)
|
||||
{
|
||||
fwrite((char*)&znak, 1, uspech, f);
|
||||
nacitane_data += uspech;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
printf("Nacital som %d dat\n", nacitane_data);
|
||||
aktualne_data = nacitane_data;
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
//nacitanie dat zo suboru do buffera
|
||||
uspech = 0;
|
||||
while(uspech <= 0)
|
||||
uspech = read(rs232_prijat, buf, sz);
|
||||
aktualne_data -= uspech;
|
||||
return uspech;
|
||||
}
|
||||
|
||||
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||
{
|
||||
(void)ssl;
|
||||
(void)ctx;
|
||||
int uspech = 0;
|
||||
uspech = (int) write(rs232_poslat, buf, (size_t)sz);
|
||||
//kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy
|
||||
unsigned char zaciatok_spravy[] = {0xAA, 0xAA, 0xAA, 0xAA};
|
||||
unsigned char koniec_spravy[] = {0xBB, 0xBB, 0xBB, 0xBB};
|
||||
RS232_SendBuf(cislo_rozhrania, (unsigned char*)zaciatok_spravy, sizeof(zaciatok_spravy));
|
||||
uspech = (int)RS232_SendBuf(cislo_rozhrania, (unsigned char*)buf, (size_t)sz);
|
||||
RS232_SendBuf(cislo_rozhrania, (unsigned char*)koniec_spravy, sizeof(koniec_spravy));
|
||||
printf("Odoslal som %d %d\n", uspech, sz);
|
||||
|
||||
return uspech;
|
||||
}
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
char rezim[]={'8','N','1', 0};
|
||||
int cislo_rozhrania = 4;
|
||||
int rychlost = 9600;
|
||||
WOLFSSL *ssl;
|
||||
WOLFSSL_CTX *ctx = NULL;
|
||||
char* subor = NULL;
|
||||
int zadane_rozhranie = 0;
|
||||
int uvedeny_subor = 0;
|
||||
int nacitanie_zo_suboru = 0;
|
||||
int generovanie_certifikatu = 0;
|
||||
nastavenia_aplikacie nastavenia;
|
||||
|
||||
rs232_poslat = open("server.txt", O_WRONLY | O_NOCTTY);
|
||||
rs232_prijat = open("klient.txt", O_RDONLY | O_NOCTTY);
|
||||
rs232_prijat = open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||
|
||||
int uspech;
|
||||
/* uspech = rs232_otvorit_rozhranie(cislo_rozhrania, rychlost, rezim, 0);
|
||||
if(uspech == -1)
|
||||
{
|
||||
return -1;
|
||||
}*/
|
||||
|
||||
if((ctx = nastavit_ctx_klient()) == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
const char* subor_certifikat = "../certifikaty/klient/klient_rsa.pem";
|
||||
const char* subor_kluc = "../certifikaty/klient/klient_rsa.key";
|
||||
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
|
||||
else
|
||||
{
|
||||
for(int i = 0; i < argc; i++)
|
||||
{
|
||||
if( (!strcmp(argv[i], "-s")) )
|
||||
{
|
||||
uvedeny_subor = 1;
|
||||
if((argv[i+1] == NULL) )
|
||||
{
|
||||
printf("Nezadali ste cestu ku suboru\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
subor = argv[i+1];
|
||||
}
|
||||
}
|
||||
if( (!strcmp(argv[i], "-port")) )
|
||||
{
|
||||
zadane_rozhranie = 1;
|
||||
if((argv[i+1] == NULL))
|
||||
{
|
||||
printf("Nezadali ste cislo serioveho rozhrania\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
cislo_rozhrania = atoi(argv[i+1]);
|
||||
if(RS232_OpenComport(cislo_rozhrania, rychlost, rezim, 1))
|
||||
{
|
||||
fprintf(stderr, "Nebolo mozne otvorit seriove rozhranie\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( (!strcmp(argv[i], "-n")) )
|
||||
{
|
||||
nacitanie_zo_suboru = 1;
|
||||
if(generovanie_certifikatu)
|
||||
{
|
||||
fprintf(stderr, "Nie je mozne zvolit obidve metody nacitania certifikatov naraz\n");
|
||||
return -1;
|
||||
}
|
||||
if((argv[i+1] == NULL) || (i == argc-1))
|
||||
{
|
||||
printf("Nezadali ste typ certifikatu ktory chcete nacitat zo suboru\n");
|
||||
return -1;
|
||||
}
|
||||
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;
|
||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||
|
||||
}
|
||||
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;
|
||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Zadali ste nespravny typ certifikatu\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else if( (!strcmp(argv[i], "-g")) )
|
||||
{
|
||||
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))
|
||||
{
|
||||
printf("Nezadali ste typ certifikatu ktory chcete vygenerovat\n");
|
||||
return -1;
|
||||
}
|
||||
else if(!strcmp(argv[i+1], "rsa"))
|
||||
{
|
||||
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_rsa.pem", NULL);
|
||||
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;
|
||||
|
||||
}
|
||||
else if(!strcmp(argv[i+1], "ecc"))
|
||||
{
|
||||
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_ecc.pem", NULL);
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Zadali ste nespravny typ certifikatu\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!zadane_rozhranie)
|
||||
{
|
||||
fprintf(stderr, "Nebol urcene seriove rozhranie\n");
|
||||
return -1;
|
||||
}
|
||||
else if(!generovanie_certifikatu && !nacitanie_zo_suboru)
|
||||
{
|
||||
fprintf(stderr, "Nebola zvolena metoda nacitania certifikatov\n");
|
||||
printf("Zadajde prepinac -g (generovanie), alebo -n (nacitanie_zo_suboru) s parametrom rsa alebo ecc\n");
|
||||
return -1;
|
||||
}
|
||||
else if(!uvedeny_subor)
|
||||
{
|
||||
fprintf(stderr, "Nebola uvedena cesta ku suboru na odoslanie\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
|
||||
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
||||
//wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
|
||||
|
||||
wolfSSL_SetIOSend(ctx, rs232_zapis);
|
||||
wolfSSL_SetIORecv(ctx, rs232_citanie);
|
||||
@ -89,27 +284,26 @@ int main(int argc, char const *argv[])
|
||||
wolfSSL_set_fd(ssl, rs232_prijat);
|
||||
wolfSSL_set_using_nonblock(ssl, rs232_prijat);
|
||||
|
||||
printf("bol som tu\n");
|
||||
|
||||
while(uspech != SSL_SUCCESS)
|
||||
uspech = wolfSSL_connect(ssl);
|
||||
if(uspech != SSL_SUCCESS)
|
||||
{
|
||||
uspech |= wolfSSL_connect(ssl);
|
||||
printf("bol sss\n");
|
||||
if(uspech != SSL_SUCCESS)
|
||||
{
|
||||
printf("Nepodarilo sa pripojit%d\n", uspech);
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("oukej\n");
|
||||
}
|
||||
char* popis_chyby = calloc(100, sizeof(char));
|
||||
int chyba = wolfSSL_get_error(ssl, 0);
|
||||
wolfSSL_ERR_error_string(chyba, popis_chyby);
|
||||
fprintf(stderr, "Nastala chyba v spojeni.\nCislo chyby: %d\nDovod chyby: %s\n", chyba, popis_chyby);
|
||||
printf("Skontrolujte certifikaty.\n");
|
||||
return -1;
|
||||
}
|
||||
printf("bol som aj tu tu\n");
|
||||
|
||||
|
||||
wolfSSL_write(ssl, "nieco", 10);
|
||||
|
||||
zobraz_sifru(ssl);
|
||||
zobraz_certifikat(ssl);
|
||||
nastav_funkciu(&nastavenia, funkcia_BLAKE2B);
|
||||
if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1) return -1;
|
||||
ukoncit_spojenie(ssl, ctx);
|
||||
|
||||
RS232_CloseComport(cislo_rozhrania);
|
||||
|
||||
close(rs232_prijat);
|
||||
close(open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY));
|
||||
return 0;
|
||||
}
|
Binary file not shown.
1
rs232_kanal/nieco.txt
Normal file
1
rs232_kanal/nieco.txt
Normal file
@ -0,0 +1 @@
|
||||
jano
|
@ -3,7 +3,7 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include <stdio.h>
|
||||
@ -17,7 +17,8 @@
|
||||
#include <Windows.h>
|
||||
#include <io.h>
|
||||
#include <fcntl.h>
|
||||
#define O_NOCTTY 0
|
||||
#define O_NOCTTY 0x8000
|
||||
#define O_NDELAY 0x4000
|
||||
#else
|
||||
#include <unistd.h>
|
||||
#endif
|
||||
@ -26,82 +27,267 @@
|
||||
#include "../kniznica/komunikacia.h"
|
||||
#include "../kniznica/rs232.h"
|
||||
|
||||
int rs232_poslat;
|
||||
#define RSA_VELKOST 2048
|
||||
#define ECC_VELKOST 32
|
||||
#define RSA_EXPONENT 65537
|
||||
|
||||
//cesty ku suborom
|
||||
#define RSA_KLUC "../certifikaty/server/server_rsa.key"
|
||||
#define RSA_CERTIFIKAT "../certifikaty/server/server_rsa.pem"
|
||||
#define ECC_KLUC "../certifikaty/server/server_ecc.key"
|
||||
#define ECC_CERTIFIKAT "../certifikaty/server/server_ecc.pem"
|
||||
#define VYGENEROVANY_KLUC "../certifikaty/server/vygenerovany_kluc.key"
|
||||
#define VYGENEROVANY_CERTIFIKAT "../certifikaty/server/vygenerovany_certifikat.pem"
|
||||
#define KOMUNIKACNY_SUBOR "server.txt"
|
||||
|
||||
int rs232_prijat;
|
||||
int cislo_rozhrania = 0;
|
||||
int aktualne_data = 0;
|
||||
|
||||
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||
{
|
||||
int uspech = 0;
|
||||
while(uspech <= 0)
|
||||
|
||||
//ziskanie dat zo serioveho rozhrania
|
||||
if(aktualne_data == 0)
|
||||
{
|
||||
uspech = read(rs232_prijat, buf, sz);
|
||||
FILE* f = fopen(KOMUNIKACNY_SUBOR, "ab");
|
||||
int nacitane_data = 0;
|
||||
int prebieha_nacitanie = 0;
|
||||
unsigned char znak;
|
||||
|
||||
//kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy
|
||||
unsigned char zaciatok_spravy[] = {0xAA, 0xAA, 0xAA, 0xAA};
|
||||
int zaciatok_spravy_pozicia = 0; //aktualna pozicia v kontrolnom vzore
|
||||
unsigned char koniec_spravy[] = {0xBB, 0xBB, 0xBB, 0xBB};
|
||||
int koniec_spravy_pozicia = 0; //aktualna pozicia v kontrolnom vzore
|
||||
|
||||
while(1)
|
||||
{
|
||||
uspech = RS232_PollComport(cislo_rozhrania, &znak, 1);
|
||||
if(uspech > 0)
|
||||
{
|
||||
//ak bol najdeny koniec kontrolneho vzoru, tak je zapnuta znacka,
|
||||
//ktora urcuje ze prebieha nacitavanie spravy
|
||||
if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia <= 2))
|
||||
{
|
||||
zaciatok_spravy_pozicia++;
|
||||
}
|
||||
else if((znak == zaciatok_spravy[zaciatok_spravy_pozicia]) && (zaciatok_spravy_pozicia > 2))
|
||||
{
|
||||
prebieha_nacitanie = 1;
|
||||
zaciatok_spravy_pozicia = 0;
|
||||
}
|
||||
else if((prebieha_nacitanie) && (znak == koniec_spravy[koniec_spravy_pozicia]) && (koniec_spravy_pozicia <= 2))
|
||||
{
|
||||
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;
|
||||
break;
|
||||
}
|
||||
else
|
||||
{
|
||||
if(prebieha_nacitanie)
|
||||
{
|
||||
fwrite((char*)&znak, 1, uspech, f);
|
||||
nacitane_data += uspech;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
aktualne_data = nacitane_data;
|
||||
printf("Nacital som %d dat\n", nacitane_data);
|
||||
|
||||
fclose(f);
|
||||
}
|
||||
|
||||
//nacitanie dat zo suboru do buffera
|
||||
uspech = 0;
|
||||
while(uspech <= 0)
|
||||
uspech = read(rs232_prijat, buf, sz);
|
||||
aktualne_data -= uspech;
|
||||
return uspech;
|
||||
}
|
||||
|
||||
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||
{
|
||||
int uspech = 0;
|
||||
uspech = write(rs232_poslat, buf, sz);
|
||||
|
||||
//kontrolne vzory, ktore jednoznacne identifikuju zaciatok a koniec spravy
|
||||
unsigned char zaciatok_spravy[] = {0xAA, 0xAA, 0xAA, 0xAA};
|
||||
unsigned char koniec_spravy[] = {0xBB, 0xBB, 0xBB, 0xBB};
|
||||
|
||||
RS232_SendBuf(cislo_rozhrania, (unsigned char*)zaciatok_spravy, 4);
|
||||
uspech = RS232_SendBuf(cislo_rozhrania, (unsigned char*)buf, sz);
|
||||
RS232_SendBuf(cislo_rozhrania, (unsigned char*)koniec_spravy, 4);
|
||||
printf("Odoslal som %d %d\n", uspech, sz);
|
||||
return uspech;
|
||||
}
|
||||
}
|
||||
|
||||
int main(int argc, char const *argv[])
|
||||
{
|
||||
WOLFSSL *ssl;
|
||||
WOLFSSL_CTX *ctx = NULL;
|
||||
int cislo_rozhrania = 5;
|
||||
int rychlost = 9600;
|
||||
char rezim[]={'8','N','1', 0};
|
||||
|
||||
rs232_poslat = open("klient.txt", O_WRONLY | O_NOCTTY);
|
||||
printf("%d\n", rs232_poslat);
|
||||
rs232_prijat = open("server.txt", O_RDONLY | O_NOCTTY);
|
||||
printf("%d\n", rs232_prijat);
|
||||
int zadane_rozhranie = 0;
|
||||
int generovanie_certifikatu = 0;
|
||||
int nacitanie_zo_suboru = 0;
|
||||
nastavenia_aplikacie nastavenia;
|
||||
|
||||
rs232_prijat = open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||
|
||||
int uspech;
|
||||
/* uspech = rs232_otvorit_rozhranie(cislo_rozhrania, rychlost, rezim, 0);
|
||||
if(uspech == -1)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
*/
|
||||
if((ctx = nastavit_ctx_server()) == NULL)
|
||||
{
|
||||
return -1;
|
||||
}
|
||||
const char* subor_certifikat = "../certifikaty/server/server_rsa.pem";
|
||||
const char* subor_kluc = "../certifikaty/server/server_rsa.key";
|
||||
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
|
||||
else
|
||||
{
|
||||
for(int i = 0; i < argc; i++)
|
||||
{
|
||||
if( (!strcmp(argv[i], "-port")) )
|
||||
{
|
||||
zadane_rozhranie = 1;
|
||||
if((argv[i+1] == NULL))
|
||||
{
|
||||
printf("Nezadali ste cislo serioveho rozhrania\n");
|
||||
return -1;
|
||||
}
|
||||
else
|
||||
{
|
||||
cislo_rozhrania = atoi(argv[i+1]);
|
||||
if(RS232_OpenComport(cislo_rozhrania, rychlost, rezim, 1))
|
||||
{
|
||||
fprintf(stderr, "Nebolo mozne otvorit seriove rozhranie\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
else if( (!strcmp(argv[i], "-n")) )
|
||||
{
|
||||
nacitanie_zo_suboru = 1;
|
||||
if(generovanie_certifikatu)
|
||||
{
|
||||
fprintf(stderr, "Nie je mozne zvolit obidve metody nacitania certifikatov naraz\n");
|
||||
return -1;
|
||||
}
|
||||
if((argv[i+1] == NULL) || (i == argc-1))
|
||||
{
|
||||
printf("Nezadali ste typ certifikatu ktory chcete nacitat zo suboru\n");
|
||||
return -1;
|
||||
}
|
||||
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;
|
||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||
|
||||
}
|
||||
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;
|
||||
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
|
||||
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Zadali ste nespravny typ certifikatu\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
else if( (!strcmp(argv[i], "-g")) )
|
||||
{
|
||||
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))
|
||||
{
|
||||
printf("Nezadali ste typ certifikatu ktory chcete vygenerovat\n");
|
||||
return -1;
|
||||
}
|
||||
else if(!strcmp(argv[i+1], "rsa"))
|
||||
{
|
||||
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_rsa.pem", NULL);
|
||||
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;
|
||||
|
||||
}
|
||||
else if(!strcmp(argv[i+1], "ecc"))
|
||||
{
|
||||
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_ecc.pem", NULL);
|
||||
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;
|
||||
}
|
||||
else
|
||||
{
|
||||
printf("Zadali ste nespravny typ certifikatu\n");
|
||||
return -1;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!zadane_rozhranie)
|
||||
{
|
||||
fprintf(stderr, "Nebol urcene seriove rozhranie\n");
|
||||
return -1;
|
||||
}
|
||||
else if(!generovanie_certifikatu && !nacitanie_zo_suboru)
|
||||
{
|
||||
fprintf(stderr, "Nebola zvolena metoda nacitania certifikatov\n");
|
||||
printf("Zadajde prepinac -g (generovanie), alebo -n (nacitanie_zo_suboru) s parametrom rsa alebo ecc\n");
|
||||
return -1;
|
||||
}
|
||||
|
||||
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
|
||||
//wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
|
||||
|
||||
wolfSSL_SetIOSend(ctx, rs232_zapis);
|
||||
wolfSSL_SetIORecv(ctx, rs232_citanie);
|
||||
|
||||
if ((ssl = wolfSSL_new(ctx)) == NULL)
|
||||
while(1)
|
||||
{
|
||||
printf("Nepodarilo sa vytvorit ssl relaciu\n");
|
||||
wolfSSL_CTX_free(ctx);
|
||||
return -1;
|
||||
}
|
||||
printf("------------\n");
|
||||
if ((ssl = wolfSSL_new(ctx)) == NULL)
|
||||
{
|
||||
printf("Nepodarilo sa vytvorit ssl relaciu\n");
|
||||
wolfSSL_CTX_free(ctx);
|
||||
return -1;
|
||||
}
|
||||
|
||||
wolfSSL_set_fd(ssl, rs232_prijat);
|
||||
wolfSSL_set_using_nonblock(ssl, rs232_prijat);
|
||||
|
||||
wolfSSL_set_fd(ssl, rs232_prijat);
|
||||
wolfSSL_set_using_nonblock(ssl, rs232_prijat);
|
||||
|
||||
printf("bol som tu\n");
|
||||
while(uspech != SSL_SUCCESS)
|
||||
{
|
||||
uspech = wolfSSL_accept(ssl);
|
||||
printf("%d\n", uspech);
|
||||
if(uspech != SSL_SUCCESS)
|
||||
{
|
||||
char* popis_chyby = calloc(100, sizeof(char));
|
||||
int chyba = wolfSSL_get_error(ssl, 0);
|
||||
wolfSSL_ERR_error_string(chyba, popis_chyby);
|
||||
fprintf(stderr, "Nastala chyba v spojeni.\nCislo chyby: %d\nDovod chyby: %s\n", chyba, popis_chyby);
|
||||
printf("Skontrolujte certifikaty.\n");
|
||||
return -1;
|
||||
}
|
||||
zobraz_sifru(ssl);
|
||||
zobraz_certifikat(ssl);
|
||||
nastav_funkciu(&nastavenia, funkcia_BLAKE2B);
|
||||
prijat_subor(ssl, ctx, &nastavenia);
|
||||
}
|
||||
printf("bol som aj tu tu\n");
|
||||
|
||||
|
||||
char sprava[100];
|
||||
wolfSSL_read(ssl, sprava, 10);
|
||||
printf("%s\n", sprava);
|
||||
|
||||
|
||||
RS232_CloseComport(cislo_rozhrania);
|
||||
|
||||
close(rs232_prijat);
|
||||
close(open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY));
|
||||
|
||||
return 0;
|
||||
}
|
||||
}
|
||||
|
Binary file not shown.
16
rs232_kanal/spustit_klient.bat
Normal file
16
rs232_kanal/spustit_klient.bat
Normal file
@ -0,0 +1,16 @@
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: Bakalarska praca ::
|
||||
:: Meno studenta: Tomas Lukac ::
|
||||
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
||||
:: Skola: KEMT FEI TUKE ::
|
||||
:: Datum poslednej upravy: 6.4.2020 ::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: Program je mozne spustit s prepinacmi:
|
||||
:: -port seriove_rozhranie
|
||||
:: -g rsa|ecc sluzi na generovanie certifikatu
|
||||
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
||||
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat (este nie je)
|
||||
|
||||
::Priklady spustenia:
|
||||
klient -port 4 -n rsa -s nieco.txt
|
19
rs232_kanal/spustit_server.bat
Normal file
19
rs232_kanal/spustit_server.bat
Normal file
@ -0,0 +1,19 @@
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
:: Bakalarska praca ::
|
||||
:: Meno studenta: Tomas Lukac ::
|
||||
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
||||
:: Skola: KEMT FEI TUKE ::
|
||||
:: Datum poslednej upravy: 6.4.2020 ::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: Program server je mozne spustit s prepinacmi:
|
||||
:: -port seriove_rozhranie
|
||||
:: -g rsa|ecc sluzi na generovanie certifikatu
|
||||
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
||||
|
||||
del klient.txt
|
||||
del server.txt
|
||||
type nul >klient.txt
|
||||
type nul >server.txt
|
||||
|
||||
server -port 5 -n rsa
|
Binary file not shown.
Binary file not shown.
@ -3,38 +3,37 @@
|
||||
## Meno studenta: Tomas Lukac ##
|
||||
## Veduci BP: prof. Ing. Milos Drutarovsky CSc. ##
|
||||
## Skola: KEMT FEI TUKE ##
|
||||
## Datum poslednej upravy: 12.3.2020 ##
|
||||
## Datum poslednej upravy: 6.4.2020 ##
|
||||
##################################################
|
||||
|
||||
#prekladac
|
||||
CC = gcc
|
||||
|
||||
#prepinace pre prekladac
|
||||
CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/
|
||||
LIB = -L. -lwolfssl
|
||||
CFLAGS = -Wcpp -Werror -I./../wolfssl/
|
||||
LIB =
|
||||
|
||||
ifeq ($(OS), Windows_NT)
|
||||
LIB += -lws2_32
|
||||
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
|
||||
LIB += -m64
|
||||
LIB += -L./../wolfssl/64bit_kniznice/ -lwolfssl -lws2_32 -m64
|
||||
endif
|
||||
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
|
||||
LIB += -Os
|
||||
LIB += -L./../wolfssl/32bit_kniznice/ -lwolfssl -lws2_32 -Os
|
||||
endif
|
||||
else
|
||||
UNAME_S := $(shell uname -s)
|
||||
ifeq ($(UNAME_S), Linux)
|
||||
LIB +=
|
||||
LIB += -lwolfssl
|
||||
endif
|
||||
endif
|
||||
|
||||
all: klient server
|
||||
|
||||
klient: klient.o kryptografia.o komunikacia.o
|
||||
$(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o $(LIB)
|
||||
klient: klient.o kryptografia.o komunikacia.o rs232.o
|
||||
$(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o rs232.o $(LIB)
|
||||
|
||||
server: server.o kryptografia.o komunikacia.o
|
||||
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o $(LIB)
|
||||
server: server.o kryptografia.o komunikacia.o rs232.o
|
||||
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o rs232.o $(LIB)
|
||||
|
||||
klient.o: klient.c
|
||||
$(CC) $(CFLAGS) -c klient.c $(LIB)
|
||||
@ -48,6 +47,9 @@ kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h
|
||||
komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h
|
||||
$(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB)
|
||||
|
||||
rs232.o: ../kniznica/rs232.c ../kniznica/rs232.h
|
||||
$(CC) $(CFLAGS) -c ../kniznica/rs232.c $(LIB)
|
||||
|
||||
.PHONY: clean
|
||||
|
||||
clean-linux:
|
||||
|
@ -3,7 +3,7 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include "../kniznica/kryptografia.h"
|
||||
@ -31,6 +31,7 @@ int main(int argc, char** argv)
|
||||
int uvedeny_subor = 0;
|
||||
int ip = 0;
|
||||
int port = 0;
|
||||
nastavenia_aplikacie nastavenia;
|
||||
|
||||
#if defined (_WIN32)
|
||||
WSADATA d;
|
||||
@ -45,8 +46,6 @@ int main(int argc, char** argv)
|
||||
int cislo_portu = 0;
|
||||
char* ip_adresa = NULL;
|
||||
char* subor = NULL;
|
||||
const char *subor_certifikat = NULL;
|
||||
const char *subor_kluc = NULL;
|
||||
WOLFSSL *ssl; WOLFSSL_CTX *ctx;
|
||||
|
||||
if((ctx = nastavit_ctx_klient()) == NULL)
|
||||
@ -200,8 +199,8 @@ int main(int argc, char** argv)
|
||||
}
|
||||
zobraz_sifru(ssl);
|
||||
zobraz_certifikat(ssl);
|
||||
nastav_funkciu(funkcia_BLAKE2B);
|
||||
if(poslat_subor(ssl, ctx, subor) == -1) return -1;
|
||||
nastav_funkciu(&nastavenia, funkcia_BLAKE2B);
|
||||
if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1) return -1;
|
||||
ukoncit_spojenie(ssl, ctx);
|
||||
}
|
||||
|
||||
|
@ -3,7 +3,7 @@
|
||||
// Meno studenta: Tomas Lukac //
|
||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||
// Skola: KEMT FEI TUKE //
|
||||
// Datum poslednej upravy: 12.3.2020 //
|
||||
// Datum poslednej upravy: 6.4.2020 //
|
||||
//////////////////////////////////////////////////
|
||||
|
||||
#include "../kniznica/kryptografia.h"
|
||||
@ -25,11 +25,11 @@
|
||||
|
||||
int main(int argc, char **argv)
|
||||
{
|
||||
|
||||
int autentizacia_klienta = 0;
|
||||
int generovanie_certifikatu = 0;
|
||||
int nacitanie_zo_suboru = 0;
|
||||
int port = 0;
|
||||
nastavenia_aplikacie nastavenia;
|
||||
|
||||
#if defined (_WIN32)
|
||||
WSADATA d;
|
||||
@ -174,8 +174,8 @@ int main(int argc, char **argv)
|
||||
}
|
||||
zobraz_sifru(ssl);
|
||||
zobraz_certifikat(ssl);
|
||||
nastav_funkciu(funkcia_BLAKE2B);
|
||||
prijat_subor(ssl, ctx);
|
||||
nastav_funkciu(&nastavenia, funkcia_BLAKE2B);
|
||||
prijat_subor(ssl, ctx, &nastavenia);
|
||||
}
|
||||
}
|
||||
ukoncit_soket(cislo_soketu);
|
||||
|
@ -3,13 +3,13 @@
|
||||
:: Meno studenta: Tomas Lukac ::
|
||||
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
||||
:: Skola: KEMT FEI TUKE ::
|
||||
:: Datum poslednej upravy: 9.3.2020 ::
|
||||
:: Datum poslednej upravy: 6.4.2020 ::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: Program je mozne spustit s prepinacmi:
|
||||
:: -g rsa|ecc sluzi na generovanie certifikatu
|
||||
:: -n rsa|ecc sluzi na nacitanie uz vygenerovanych certifikatov z adresara /certifikaty
|
||||
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat (este nie je)
|
||||
:: -s cesta-ku-suboru sluzi na nacitanie cesty k suboru, ktory chceme odoslat
|
||||
|
||||
::Priklady spustenia:
|
||||
klient -ip 127.0.0.1 -port 8080 -n rsa
|
||||
|
@ -3,7 +3,7 @@
|
||||
:: Meno studenta: Tomas Lukac ::
|
||||
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
||||
:: Skola: KEMT FEI TUKE ::
|
||||
:: Datum poslednej upravy: 9.3.2020 ::
|
||||
:: Datum poslednej upravy: 6.4.2020 ::
|
||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||
|
||||
:: Program server je mozne spustit s prepinacmi:
|
||||
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -1,19 +0,0 @@
|
||||
seriove rozhranie
|
||||
- prenasa data po jednom bite
|
||||
vyhody: lacnejsie kable a mensie konektory
|
||||
- vacsinou myslime rozhrania vyuzivajuce asynchronne seriove protokoly, napr. rs232 rozhranie , rozhrania na vstavanych
|
||||
zariadeniach, a ine
|
||||
- vacsina seriovych rozhrani su obojsmerne: mozu prijimat aj posielat data
|
||||
- vyhody
|
||||
1. mozu si medzi sebou vymienat rozne typy informacii
|
||||
aplikacie vyuzivajuce seriove rozhrania casto zahrnuju citacie senzory, prepinace alebo ine vstupy
|
||||
riadenie motoru, rele, displeje a ine vystupy
|
||||
2. lacny a dostupny HW
|
||||
ak nie je k dispozicii seriovy port, existuje usb/serial konvertor
|
||||
3. okrem start, stop a paritnych bitov pridanych do kazdeho prenasaneho bajtu, seriove rozhrania
|
||||
nepridavaju ziadne informacie ku prenasanym datam, narozdiel od usb, ethernet, kt. pouzivaju sofistikovane protokoly
|
||||
ktore definuju format prenasanych dat. hardware a firmware musia implementovat tieto protokoly, co pridava komplexnost
|
||||
kt. niektore aplikacie nepotrebuju
|
||||
4. kable mzou byt dlhe
|
||||
5. jednotlive os poskytuju ovladace pre pristup k seriovym rozhraniam
|
||||
program. jazyky poskytuju triedy, kniznice alebo ine nastroje na seriovu komunikaciu
|
BIN
wolfssl/32bit_kniznice/api-ms-win-crt-runtime-l1-1-0.dll
Normal file
BIN
wolfssl/32bit_kniznice/api-ms-win-crt-runtime-l1-1-0.dll
Normal file
Binary file not shown.
BIN
wolfssl/32bit_kniznice/wolfssl.dll
Normal file
BIN
wolfssl/32bit_kniznice/wolfssl.dll
Normal file
Binary file not shown.
BIN
wolfssl/64bit_kniznice/api-ms-win-crt-runtime-l1-1-0.dll
Normal file
BIN
wolfssl/64bit_kniznice/api-ms-win-crt-runtime-l1-1-0.dll
Normal file
Binary file not shown.
BIN
wolfssl/64bit_kniznice/wolfssl.dll
Normal file
BIN
wolfssl/64bit_kniznice/wolfssl.dll
Normal file
Binary file not shown.
@ -25,6 +25,12 @@
|
||||
#ifndef WOLFSSL_OPTIONS_H
|
||||
#define WOLFSSL_OPTIONS_H
|
||||
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
#undef HAVE_FFDHE_2048
|
||||
#define HAVE_FFDHE_2048
|
||||
|
||||
@ -276,10 +282,6 @@
|
||||
#undef HAVE___UINT128_T
|
||||
#define HAVE___UINT128_T
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
40
wolfssl/wolfssl/options.h.in
Normal file
40
wolfssl/wolfssl/options.h.in
Normal file
@ -0,0 +1,40 @@
|
||||
/* options.h.in
|
||||
*
|
||||
* Copyright (C) 2006-2019 wolfSSL Inc.
|
||||
*
|
||||
* This file is part of wolfSSL.
|
||||
*
|
||||
* wolfSSL is free software; you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation; either version 2 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* wolfSSL is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with this program; if not, write to the Free Software
|
||||
* Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1335, USA
|
||||
*/
|
||||
|
||||
|
||||
/* default blank options for autoconf */
|
||||
|
||||
#ifndef WOLFSSL_OPTIONS_H
|
||||
#define WOLFSSL_OPTIONS_H
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
extern "C" {
|
||||
#endif
|
||||
|
||||
|
||||
#ifdef __cplusplus
|
||||
}
|
||||
#endif
|
||||
|
||||
|
||||
#endif /* WOLFSSL_OPTIONS_H */
|
||||
|
25
wolfssl/wolfssl/user_settings.h
Normal file
25
wolfssl/wolfssl/user_settings.h
Normal file
@ -0,0 +1,25 @@
|
||||
#ifndef _WIN_USER_SETTINGS_H_
|
||||
#define _WIN_USER_SETTINGS_H_
|
||||
|
||||
/* Verify this is Windows */
|
||||
#ifndef _WIN32
|
||||
#error This user_settings.h header is only designed for Windows
|
||||
#endif
|
||||
#define OPENSSL_EXTRA
|
||||
#define WOLFSSL_RIPEMD
|
||||
#define HAVE_TLS_EXTENSIONS
|
||||
#define WOLFSSL_CERT_GEN
|
||||
#define WOLFSSL_KEY_GEN
|
||||
#define WOLFSSL_CERT_REQ
|
||||
#define HAVE_AESGCM
|
||||
#define WOLFSSL_SHA384
|
||||
#define WOLFSSL_SHA512
|
||||
#define WOLFSSL_SHA224
|
||||
#define HAVE_BLAKE2
|
||||
#define HAVE_BLAKE2B
|
||||
#define HAVE_SUPPORTED_CURVES
|
||||
#define HAVE_ECC
|
||||
#define ECC_TIMING_RESISTANT
|
||||
#define WC_RSA_BLINDING
|
||||
#endif /* _WIN_USER_SETTINGS_H_ */
|
||||
|
@ -232,6 +232,8 @@ typedef struct WOLFSSL_ASN1_INTEGER {
|
||||
#endif
|
||||
#endif /* WOLFSSL_CERT_GEN || WOLFSSL_CERT_EXT */
|
||||
|
||||
#ifdef WOLFSSL_CERT_GEN
|
||||
|
||||
#ifdef WOLFSSL_MULTI_ATTRIB
|
||||
#ifndef CTC_MAX_ATTRIB
|
||||
#define CTC_MAX_ATTRIB 4
|
||||
@ -344,10 +346,12 @@ WOLFSSL_API int wc_MakeCert_ex(Cert* cert, byte* derBuffer, word32 derSz,
|
||||
int keyType, void* key, WC_RNG* rng);
|
||||
WOLFSSL_API int wc_MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*,
|
||||
ecc_key*, WC_RNG*);
|
||||
#ifdef WOLFSSL_CERT_REQ
|
||||
WOLFSSL_API int wc_MakeCertReq_ex(Cert*, byte* derBuffer, word32 derSz,
|
||||
int, void*);
|
||||
WOLFSSL_API int wc_MakeCertReq(Cert*, byte* derBuffer, word32 derSz,
|
||||
RsaKey*, ecc_key*);
|
||||
#endif
|
||||
WOLFSSL_API int wc_SignCert_ex(int requestSz, int sType, byte* buffer,
|
||||
word32 buffSz, int keyType, void* key,
|
||||
WC_RNG* rng);
|
||||
@ -427,6 +431,8 @@ WOLFSSL_API int wc_SetExtKeyUsageOID(Cert *cert, const char *oid, word32 sz,
|
||||
WC_RNG*);
|
||||
#endif
|
||||
|
||||
#endif /* WOLFSSL_CERT_GEN */
|
||||
|
||||
WOLFSSL_API int wc_GetDateInfo(const byte* certDate, int certDateSz,
|
||||
const byte** date, byte* format, int* length);
|
||||
#ifndef NO_ASN_TIME
|
||||
@ -486,6 +492,7 @@ WOLFSSL_API void wc_FreeDer(DerBuffer** pDer);
|
||||
WOLFSSL_API int wc_RsaPublicKeyDerSize(RsaKey* key, int with_header);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ECC
|
||||
/* private key helpers */
|
||||
WOLFSSL_API int wc_EccPrivateKeyDecode(const byte*, word32*,
|
||||
ecc_key*, word32);
|
||||
@ -501,6 +508,7 @@ WOLFSSL_API void wc_FreeDer(DerBuffer** pDer);
|
||||
WOLFSSL_API int wc_EccPublicKeyToDer(ecc_key*, byte* output,
|
||||
word32 inLen, int with_AlgCurve);
|
||||
WOLFSSL_API int wc_EccPublicKeyDerSize(ecc_key*, int with_AlgCurve);
|
||||
#endif
|
||||
|
||||
#ifdef HAVE_ED25519
|
||||
/* private key helpers */
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user