.
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 //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "komunikacia.h"
|
#include "komunikacia.h"
|
||||||
#include "kryptografia.h"
|
#include "kryptografia.h"
|
||||||
|
#include "rs232.h"
|
||||||
|
|
||||||
hashovacia_funkcia h_funkcia;
|
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta, nastavenia_aplikacie *nastavenia)
|
||||||
int rs232_rozhranie;
|
|
||||||
|
|
||||||
void nastav_funkciu(hashovacia_funkcia funkcia)
|
|
||||||
{
|
|
||||||
h_funkcia = funkcia;
|
|
||||||
}
|
|
||||||
|
|
||||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
|
|
||||||
{
|
{
|
||||||
int uspech;
|
int uspech;
|
||||||
|
|
||||||
@ -73,7 +66,7 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
|
|||||||
//generovanie a poslanie kontrolneho suctu serveru pre kontrolu
|
//generovanie a poslanie kontrolneho suctu serveru pre kontrolu
|
||||||
byte* kontrolny_sucet;
|
byte* kontrolny_sucet;
|
||||||
int velkost_kontrolneho_suctu;
|
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++)
|
for(int i = 0; i < velkost_kontrolneho_suctu; i++)
|
||||||
{
|
{
|
||||||
kontrolny_sucet[i] = (char)kontrolny_sucet[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;
|
int uspech;
|
||||||
|
|
||||||
@ -139,7 +132,7 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
|
|||||||
//vypocet vlastneho kontrolneho suctu
|
//vypocet vlastneho kontrolneho suctu
|
||||||
byte* kontrolny_sucet;
|
byte* kontrolny_sucet;
|
||||||
int velkost_kontrolneho_suctu;
|
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
|
//prijem hashu, ktory vypocital server
|
||||||
char* prijaty_kontrolny_sucet = calloc(velkost_kontrolneho_suctu, sizeof(char));
|
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));
|
uspech = connect(cislo_soketu, (struct sockaddr*)&adresa, sizeof(adresa));
|
||||||
if(uspech < 0)
|
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");
|
fprintf(stderr, "Nebolo mozne okamzite vytvorit spojenie\n");
|
||||||
do
|
do
|
||||||
@ -212,7 +209,11 @@ int pripojit_na_server(char *ip_adresa, int cislo_portu, int pocet_sekund)
|
|||||||
FD_ZERO(&sada_soketov);
|
FD_ZERO(&sada_soketov);
|
||||||
FD_SET(cislo_soketu, &sada_soketov);
|
FD_SET(cislo_soketu, &sada_soketov);
|
||||||
uspech = select(cislo_soketu + 1, NULL, &sada_soketov, NULL, &casovy_interval);
|
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)
|
if (uspech < 0 && errno != EINTR)
|
||||||
|
#endif
|
||||||
{
|
{
|
||||||
fprintf(stderr, "Nastala chyba pri pokuse o vytvorenie spojenia\nCislo chyby: %d\nPopis: %s\n", errno, strerror(errno));
|
fprintf(stderr, "Nastala chyba pri pokuse o vytvorenie spojenia\nCislo chyby: %d\nPopis: %s\n", errno, strerror(errno));
|
||||||
ukoncit_soket(cislo_soketu);
|
ukoncit_soket(cislo_soketu);
|
||||||
@ -287,15 +288,5 @@ int cakat_na_komunikaciu(int cislo_portu)
|
|||||||
return cislo_soketu;
|
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 //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef __KOMUNIKACIA_H__
|
#ifndef __KOMUNIKACIA_H__
|
||||||
@ -17,7 +17,6 @@
|
|||||||
#include "kryptografia.h"
|
#include "kryptografia.h"
|
||||||
#include "rs232.h"
|
#include "rs232.h"
|
||||||
|
|
||||||
|
|
||||||
#define VELKOST_CESTY 64 //velkost retazca, kt. uklada lokaciu suboru
|
#define VELKOST_CESTY 64 //velkost retazca, kt. uklada lokaciu suboru
|
||||||
#define VELKOST_SUBOR 32 //velkost retazca, kt. uklada velkost prenasaneho suboru
|
#define VELKOST_SUBOR 32 //velkost retazca, kt. uklada velkost prenasaneho suboru
|
||||||
|
|
||||||
@ -31,8 +30,6 @@
|
|||||||
#include <ws2tcpip.h>
|
#include <ws2tcpip.h>
|
||||||
#define ukoncit_soket closesocket
|
#define ukoncit_soket closesocket
|
||||||
#define socklen_t int
|
#define socklen_t int
|
||||||
#define EINPROGRESS WSAEINPROGRESS
|
|
||||||
#define EINTR WSAEINTR
|
|
||||||
|
|
||||||
//hovori visual c prekladacu aby nalinkoval ws2_32 kniznicu
|
//hovori visual c prekladacu aby nalinkoval ws2_32 kniznicu
|
||||||
//ak pouzivame minqw pragma sa ignoruje a musime ju zadat pri kompilaci manualne : -lws2_32
|
//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 //
|
// RS232 KOMUNIKACNY KANAL //
|
||||||
/////////////////////////////
|
/////////////////////////////
|
||||||
|
|
||||||
int rs232_otvorit_rozhranie(int cislo_rozhrania, int rychlost, const char* rezim, int riadenie_toku_dat);
|
//..
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
//////////////////////
|
//////////////////////
|
||||||
// PRACA SO SUBORMI //
|
// 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
|
* @parameter char* cesta: ukazuje na retazec, ktory reprezentuje cestu k suboru
|
||||||
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta);
|
int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta, nastavenia_aplikacie* nastavenia);
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* prijat_subor: realizuje prijem suboru
|
* 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
|
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
||||||
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
* @vrati int : operacia bola uspesna(0), neuspesna(-1)
|
||||||
*/
|
*/
|
||||||
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx);
|
int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, nastavenia_aplikacie* nastavenia);
|
||||||
|
|
||||||
/**
|
|
||||||
* 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);
|
|
||||||
|
|
||||||
|
|
||||||
#endif
|
#endif
|
@ -3,10 +3,12 @@
|
|||||||
// Meno studenta: Tomas Lukac //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "kryptografia.h"
|
#include "kryptografia.h"
|
||||||
|
#include <wolfssl/user_settings.h>
|
||||||
|
|
||||||
|
|
||||||
WOLFSSL_CTX* nastavit_ctx_klient()
|
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);
|
wolfSSL_CTX_set_cipher_list(ctx, sifry);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void nastav_funkciu(nastavenia_aplikacie* nastavenia, hashovacia_funkcia funkcia)
|
||||||
|
{
|
||||||
|
nastavenia->funkcia = funkcia;
|
||||||
|
}
|
||||||
|
|
||||||
void zobraz_sifru(WOLFSSL* ssl)
|
void zobraz_sifru(WOLFSSL* ssl)
|
||||||
{
|
{
|
||||||
printf ("Pouzita sifra: %s\n", wolfSSL_get_cipher(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_CTX_free(ctx);
|
||||||
wolfSSL_Cleanup();
|
wolfSSL_Cleanup();
|
||||||
printf("Program bol ukonceny.\n");
|
printf("Program bol ukonceny.\n");
|
||||||
}
|
}
|
@ -3,7 +3,7 @@
|
|||||||
// Meno studenta: Tomas Lukac //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#ifndef __KRYPTOGRAFIA_H__
|
#ifndef __KRYPTOGRAFIA_H__
|
||||||
@ -27,7 +27,11 @@
|
|||||||
typedef enum hashovacia_funkcia {
|
typedef enum hashovacia_funkcia {
|
||||||
funkcia_SHA, funkcia_SHA224, funkcia_SHA256, funkcia_SHA384, funkcia_SHA512,
|
funkcia_SHA, funkcia_SHA224, funkcia_SHA256, funkcia_SHA384, funkcia_SHA512,
|
||||||
funkcia_BLAKE2B, funkcia_RIPEMD160
|
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
|
* 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);
|
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
|
* nacitat_certifikaty: realizuje nacitanie certifikatov zo suborov do struktury WOLFSSL_CTX
|
||||||
* @parameter WOLFSSL_CTX* ctx : ukazuje na WOLFSSL_CTX strukturu
|
* @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
|
Meno studenta: Tomas Lukac
|
||||||
Veduci BP: prof. Ing. Milos Drutarovsky CSc.
|
Veduci BP: prof. Ing. Milos Drutarovsky CSc.
|
||||||
Skola: KEMT FEI TUKE
|
Skola: KEMT FEI TUKE
|
||||||
Datum poslednej upravy: 12.3.2020
|
Datum poslednej upravy: 6.4.2020
|
||||||
|
Verzia: 0.1
|
||||||
----------------------------
|
----------------------------
|
||||||
Zoznam zdrojovych suborov
|
Zoznam zdrojovych suborov
|
||||||
certifikaty
|
certifikaty
|
||||||
|__autorita_ecc.pem
|
autorita
|
||||||
|__autorita_ecc.key
|
|__autorita_ecc.pem
|
||||||
|__autorita_rsa.pem
|
|__autorita_ecc.key
|
||||||
|__autorita_rsa.key
|
|__autorita_rsa.pem
|
||||||
|__server_ecc.pem
|
|__autorita_rsa.key
|
||||||
|__server_ecc.key
|
server
|
||||||
|__server_rsa.pem
|
|__server_ecc.pem
|
||||||
|__server_rsa.key
|
|__server_ecc.key
|
||||||
|__klient_ecc.pem
|
|__server_rsa.pem
|
||||||
|__klient_ecc.key
|
|__server_rsa.key
|
||||||
|__klient_rsa.pem
|
klient
|
||||||
|__klient_rsa.key
|
|__klient_ecc.pem
|
||||||
|
|__klient_ecc.key
|
||||||
|
|__klient_rsa.pem
|
||||||
|
|__klient_rsa.key
|
||||||
kniznica
|
kniznica
|
||||||
|__komunikacia.h
|
|__komunikacia.h
|
||||||
|__komunikacia.c
|
|__komunikacia.c
|
||||||
|__kryptografia.h
|
|__kryptografia.h
|
||||||
|__kryptografia.c
|
|__kryptografia.c
|
||||||
|__vstup.h
|
|
||||||
|__vstup.c
|
|
||||||
tcpip_kanal
|
tcpip_kanal
|
||||||
|__klient.c
|
|__klient.c
|
||||||
|__server.c
|
|__server.c
|
||||||
|__Makefile
|
|__Makefile
|
||||||
rs232_kanal
|
rs232_kanal
|
||||||
|__klient.c
|
|__klient.c
|
||||||
|
|__klient.txt
|
||||||
|__server.c
|
|__server.c
|
||||||
|
|__server.txt
|
||||||
|__Makefile
|
|__Makefile
|
||||||
|
|
||||||
Opis aplikacie
|
Opis aplikacie
|
||||||
Realizuje zabezpecenu vymenu sprav medzi klientom a serverom a autentizaciu servera klientom vyuzitim kniznice WolfSSL. Ako prvu je
|
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
|
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
|
cakat na prichadzajucu komunikaciu, v pripade rs232 kanala je potrebne uviest cislo serioveho rozhrania (hodnoty: https://www.teuniz.net/RS-232/).
|
||||||
-g (vygenerovanie a podpis certifikatov pomocou certifikatu a kluca autority, ktore sa nachadzaju taktiez v adresari /certifikaty).
|
Dalsim potrebnym prepinacom je bud -n (nacitanie certifikatov z adresaru /certifikaty) alebo -g (vygenerovanie a podpis certifikatov
|
||||||
Sukromne kluce a certifikaty su ulozene vo formate Privacy-Enhanced Mail (PEM). Nasledne je potrebne spustit aplikaciu na strane
|
pomocou certifikatu a kluca autority, ktore sa nachadzaju taktiez v adresari /certifikaty).Sukromne kluce a certifikaty su ulozene vo formate DER.
|
||||||
klienta, ktora okrem predchadzajucich parametrov vyzaduje parameter pre ip adresu: -ip adresa. Po vytvoreni zabezpeceneho prenosoveho
|
Nasledne je potrebne spustit aplikaciu na strane klienta, ktora pri pouziti kanalu TCP_IP okrem predchadzajucich parametrov vyzaduje parameter
|
||||||
kanalu sa klient pokusi odoslat subor, ktoreho lokacia mu bola predana pri spusteni pomocou parametru -s subor. Pred samotnym poslanim
|
pre ip adresu: -ip adresa. Po vytvoreni zabezpeceneho prenosoveho kanalu sa klient pokusi odoslat subor, ktoreho lokacia mu bola predana pri
|
||||||
klient najprv vyhotovi kontrolny sucet suboru, ktory odosle po zabezpecenom kanali serveru. Ten po prijati suboru overi ci sa zhoduje
|
spusteni pomocou parametru -s subor. Pred samotnym poslanim klient najprv vyhotovi kontrolny sucet suboru, ktory odosle po zabezpecenom kanali
|
||||||
prijaty kontrolny sucet s jeho, ktory vyhotovil po prijati suboru. Ak pri prijati suboru nenastala chyba a kontrolne sucty sa zhoduju
|
serveru. Ten po prijati suboru overi ci sa zhoduje prijaty kontrolny sucet s jeho, ktory vyhotovil po prijati suboru. Ak pri prijati suboru
|
||||||
server oznami ze prijem bol uspesny a dalej caka na komunikaciu. Klientsky program po odoslani suboru ukonci svoju cinnost.
|
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)
|
Generovanie certifikatov RSA (OpenSSL)
|
||||||
openssl genrsa -out autorita_rsa.key 2048
|
openssl genrsa -out autorita_rsa.key 2048
|
||||||
@ -80,27 +85,34 @@ Navod na prelozenie a spustenie (Linux)
|
|||||||
sudo make install
|
sudo make install
|
||||||
2. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
2. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
||||||
make all
|
make all
|
||||||
3. spustenie
|
3. spustenie (prenosovy kanal TCP/IP)
|
||||||
./server -port port -n rsa|ecc
|
./server -port port -n rsa|ecc
|
||||||
./server -port port -g 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 -n rsa|ecc -s subor
|
||||||
./klient -ip 127.0.0.1 -port port -g 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)
|
Navod na prelozenie a spustenie (Windows)
|
||||||
1. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
1. skopirovanie potrebnych dll z adresara /wolfssl/64bit_kniznice/ , resp. /wolfssl/32bit_kniznice/
|
||||||
mingw32-make all
|
do podadresara tcpip_kanal, resp. rs232_kanal
|
||||||
2. spustenie
|
a) wolfssl.dll -> kniznica wolfssl
|
||||||
server -port port -n rsa|ecc
|
b) vcruntime140.dll -> visual c++ runtime
|
||||||
server -port port -g rsa|ecc
|
c) api-ms-win-crt-runtime-l1-1-0.dll
|
||||||
klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
|
2. prelozenie programov (v podadresari tcpip_kanal alebo rs232_kanal)
|
||||||
klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor
|
make all
|
||||||
|
3. spustenie (prenosovy kanal TCP/IP)
|
||||||
Zoznam DLL suborov potrebnych pre spustenie (Windows)
|
server -port port -n rsa|ecc
|
||||||
1. vcruntime140.dll
|
server -port port -g rsa|ecc
|
||||||
2. wolfssl.dll
|
klient -ip 127.0.0.1 -port port -n rsa|ecc -s subor
|
||||||
3. ws2_32.dll
|
klient -ip 127.0.0.1 -port port -g rsa|ecc -s subor
|
||||||
Poznamka:
|
4. spustenie (prenosovy kanal RS232)
|
||||||
pre preklad na 64bit architekturach je nutne premennovat subory s koncovkami *_64.dll na nazvy DLLiek uvedenych vyssie
|
server -port seriove_rozhranie -n rsa|ecc
|
||||||
a povodne DLLka premenovat na ine nazvy, najlepsie *_32.dll
|
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 ##
|
## Meno studenta: Tomas Lukac ##
|
||||||
## Veduci BP: prof. Ing. Milos Drutarovsky CSc. ##
|
## Veduci BP: prof. Ing. Milos Drutarovsky CSc. ##
|
||||||
## Skola: KEMT FEI TUKE ##
|
## Skola: KEMT FEI TUKE ##
|
||||||
## Datum poslednej upravy: 12.3.2020 ##
|
## Datum poslednej upravy: 6.4.2020 ##
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
#prekladac
|
#prekladac
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
#prepinace pre prekladac
|
#prepinace pre prekladac
|
||||||
CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/
|
CFLAGS = -Wcpp -Werror -I./../wolfssl/
|
||||||
LIB = -L. -lwolfssl
|
LIB =
|
||||||
|
|
||||||
ifeq ($(OS), Windows_NT)
|
ifeq ($(OS), Windows_NT)
|
||||||
LIB += -lws2_32
|
|
||||||
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
|
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
|
||||||
LIB += -m64
|
LIB += -L./../wolfssl/64bit_kniznice/ -lwolfssl -lws2_32 -m64
|
||||||
endif
|
endif
|
||||||
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
|
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
|
||||||
LIB += -Os
|
LIB += -L./../wolfssl/32bit_kniznice/ -lwolfssl -lws2_32 -Os
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
UNAME_S := $(shell uname -s)
|
UNAME_S := $(shell uname -s)
|
||||||
ifeq ($(UNAME_S), Linux)
|
ifeq ($(UNAME_S), Linux)
|
||||||
LIB +=
|
LIB += -lwolfssl
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Meno studenta: Tomas Lukac //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -17,7 +17,8 @@
|
|||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#define O_NOCTTY 0
|
#define O_NOCTTY 0x8000
|
||||||
|
#define O_NDELAY 0x4000
|
||||||
#else
|
#else
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
@ -26,55 +27,249 @@
|
|||||||
#include "../kniznica/komunikacia.h"
|
#include "../kniznica/komunikacia.h"
|
||||||
#include "../kniznica/rs232.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 rs232_prijat;
|
||||||
|
int cislo_rozhrania = 4;
|
||||||
|
int aktualne_data = 0;
|
||||||
|
|
||||||
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||||
{
|
{
|
||||||
(void)ssl;
|
|
||||||
(void)ctx;
|
|
||||||
int uspech = 0;
|
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;
|
return uspech;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||||
{
|
{
|
||||||
(void)ssl;
|
|
||||||
(void)ctx;
|
|
||||||
int uspech = 0;
|
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;
|
return uspech;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char const *argv[])
|
int main(int argc, char const *argv[])
|
||||||
{
|
{
|
||||||
char rezim[]={'8','N','1', 0};
|
char rezim[]={'8','N','1', 0};
|
||||||
int cislo_rozhrania = 4;
|
|
||||||
int rychlost = 9600;
|
int rychlost = 9600;
|
||||||
WOLFSSL *ssl;
|
WOLFSSL *ssl;
|
||||||
WOLFSSL_CTX *ctx = NULL;
|
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(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||||
rs232_prijat = open("klient.txt", O_RDONLY | O_NOCTTY);
|
|
||||||
|
|
||||||
int uspech;
|
int uspech;
|
||||||
/* uspech = rs232_otvorit_rozhranie(cislo_rozhrania, rychlost, rezim, 0);
|
|
||||||
if(uspech == -1)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}*/
|
|
||||||
|
|
||||||
if((ctx = nastavit_ctx_klient()) == NULL)
|
if((ctx = nastavit_ctx_klient()) == NULL)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
const char* subor_certifikat = "../certifikaty/klient/klient_rsa.pem";
|
else
|
||||||
const char* subor_kluc = "../certifikaty/klient/klient_rsa.key";
|
{
|
||||||
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
|
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_SetIOSend(ctx, rs232_zapis);
|
||||||
wolfSSL_SetIORecv(ctx, rs232_citanie);
|
wolfSSL_SetIORecv(ctx, rs232_citanie);
|
||||||
@ -89,27 +284,26 @@ int main(int argc, char const *argv[])
|
|||||||
wolfSSL_set_fd(ssl, rs232_prijat);
|
wolfSSL_set_fd(ssl, rs232_prijat);
|
||||||
wolfSSL_set_using_nonblock(ssl, rs232_prijat);
|
wolfSSL_set_using_nonblock(ssl, rs232_prijat);
|
||||||
|
|
||||||
printf("bol som tu\n");
|
uspech = wolfSSL_connect(ssl);
|
||||||
|
if(uspech != SSL_SUCCESS)
|
||||||
while(uspech != SSL_SUCCESS)
|
|
||||||
{
|
{
|
||||||
uspech |= wolfSSL_connect(ssl);
|
char* popis_chyby = calloc(100, sizeof(char));
|
||||||
printf("bol sss\n");
|
int chyba = wolfSSL_get_error(ssl, 0);
|
||||||
if(uspech != SSL_SUCCESS)
|
wolfSSL_ERR_error_string(chyba, popis_chyby);
|
||||||
{
|
fprintf(stderr, "Nastala chyba v spojeni.\nCislo chyby: %d\nDovod chyby: %s\n", chyba, popis_chyby);
|
||||||
printf("Nepodarilo sa pripojit%d\n", uspech);
|
printf("Skontrolujte certifikaty.\n");
|
||||||
return -1;
|
return -1;
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
printf("oukej\n");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
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);
|
RS232_CloseComport(cislo_rozhrania);
|
||||||
|
|
||||||
|
close(rs232_prijat);
|
||||||
|
close(open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY));
|
||||||
return 0;
|
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 //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
@ -17,7 +17,8 @@
|
|||||||
#include <Windows.h>
|
#include <Windows.h>
|
||||||
#include <io.h>
|
#include <io.h>
|
||||||
#include <fcntl.h>
|
#include <fcntl.h>
|
||||||
#define O_NOCTTY 0
|
#define O_NOCTTY 0x8000
|
||||||
|
#define O_NDELAY 0x4000
|
||||||
#else
|
#else
|
||||||
#include <unistd.h>
|
#include <unistd.h>
|
||||||
#endif
|
#endif
|
||||||
@ -26,82 +27,267 @@
|
|||||||
#include "../kniznica/komunikacia.h"
|
#include "../kniznica/komunikacia.h"
|
||||||
#include "../kniznica/rs232.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 rs232_prijat;
|
||||||
|
int cislo_rozhrania = 0;
|
||||||
|
int aktualne_data = 0;
|
||||||
|
|
||||||
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
int rs232_citanie(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||||
{
|
{
|
||||||
int uspech = 0;
|
int uspech = 0;
|
||||||
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;
|
return uspech;
|
||||||
}
|
}
|
||||||
|
|
||||||
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
int rs232_zapis(WOLFSSL *ssl, char *buf, int sz, void *ctx)
|
||||||
{
|
{
|
||||||
int uspech = 0;
|
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;
|
return uspech;
|
||||||
}
|
}
|
||||||
|
|
||||||
int main(int argc, char const *argv[])
|
int main(int argc, char const *argv[])
|
||||||
{
|
{
|
||||||
WOLFSSL *ssl;
|
WOLFSSL *ssl;
|
||||||
WOLFSSL_CTX *ctx = NULL;
|
WOLFSSL_CTX *ctx = NULL;
|
||||||
int cislo_rozhrania = 5;
|
|
||||||
int rychlost = 9600;
|
int rychlost = 9600;
|
||||||
char rezim[]={'8','N','1', 0};
|
char rezim[]={'8','N','1', 0};
|
||||||
|
int zadane_rozhranie = 0;
|
||||||
rs232_poslat = open("klient.txt", O_WRONLY | O_NOCTTY);
|
int generovanie_certifikatu = 0;
|
||||||
printf("%d\n", rs232_poslat);
|
int nacitanie_zo_suboru = 0;
|
||||||
rs232_prijat = open("server.txt", O_RDONLY | O_NOCTTY);
|
nastavenia_aplikacie nastavenia;
|
||||||
printf("%d\n", rs232_prijat);
|
|
||||||
|
|
||||||
|
rs232_prijat = open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY);
|
||||||
|
|
||||||
int uspech;
|
int uspech;
|
||||||
/* uspech = rs232_otvorit_rozhranie(cislo_rozhrania, rychlost, rezim, 0);
|
|
||||||
if(uspech == -1)
|
|
||||||
{
|
|
||||||
return -1;
|
|
||||||
}
|
|
||||||
*/
|
|
||||||
if((ctx = nastavit_ctx_server()) == NULL)
|
if((ctx = nastavit_ctx_server()) == NULL)
|
||||||
{
|
{
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
const char* subor_certifikat = "../certifikaty/server/server_rsa.pem";
|
else
|
||||||
const char* subor_kluc = "../certifikaty/server/server_rsa.key";
|
{
|
||||||
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
|
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_SetIOSend(ctx, rs232_zapis);
|
||||||
wolfSSL_SetIORecv(ctx, rs232_citanie);
|
wolfSSL_SetIORecv(ctx, rs232_citanie);
|
||||||
|
|
||||||
if ((ssl = wolfSSL_new(ctx)) == NULL)
|
while(1)
|
||||||
{
|
{
|
||||||
printf("Nepodarilo sa vytvorit ssl relaciu\n");
|
printf("------------\n");
|
||||||
wolfSSL_CTX_free(ctx);
|
if ((ssl = wolfSSL_new(ctx)) == NULL)
|
||||||
return -1;
|
{
|
||||||
}
|
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);
|
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);
|
RS232_CloseComport(cislo_rozhrania);
|
||||||
|
|
||||||
|
close(rs232_prijat);
|
||||||
|
close(open(KOMUNIKACNY_SUBOR, O_RDWR | O_NOCTTY | O_NDELAY));
|
||||||
|
|
||||||
return 0;
|
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 ##
|
## Meno studenta: Tomas Lukac ##
|
||||||
## Veduci BP: prof. Ing. Milos Drutarovsky CSc. ##
|
## Veduci BP: prof. Ing. Milos Drutarovsky CSc. ##
|
||||||
## Skola: KEMT FEI TUKE ##
|
## Skola: KEMT FEI TUKE ##
|
||||||
## Datum poslednej upravy: 12.3.2020 ##
|
## Datum poslednej upravy: 6.4.2020 ##
|
||||||
##################################################
|
##################################################
|
||||||
|
|
||||||
#prekladac
|
#prekladac
|
||||||
CC = gcc
|
CC = gcc
|
||||||
|
|
||||||
#prepinace pre prekladac
|
#prepinace pre prekladac
|
||||||
CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/
|
CFLAGS = -Wcpp -Werror -I./../wolfssl/
|
||||||
LIB = -L. -lwolfssl
|
LIB =
|
||||||
|
|
||||||
ifeq ($(OS), Windows_NT)
|
ifeq ($(OS), Windows_NT)
|
||||||
LIB += -lws2_32
|
|
||||||
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
|
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
|
||||||
LIB += -m64
|
LIB += -L./../wolfssl/64bit_kniznice/ -lwolfssl -lws2_32 -m64
|
||||||
endif
|
endif
|
||||||
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
|
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
|
||||||
LIB += -Os
|
LIB += -L./../wolfssl/32bit_kniznice/ -lwolfssl -lws2_32 -Os
|
||||||
endif
|
endif
|
||||||
else
|
else
|
||||||
UNAME_S := $(shell uname -s)
|
UNAME_S := $(shell uname -s)
|
||||||
ifeq ($(UNAME_S), Linux)
|
ifeq ($(UNAME_S), Linux)
|
||||||
LIB +=
|
LIB += -lwolfssl
|
||||||
endif
|
endif
|
||||||
endif
|
endif
|
||||||
|
|
||||||
all: klient server
|
all: klient server
|
||||||
|
|
||||||
klient: klient.o kryptografia.o komunikacia.o
|
klient: klient.o kryptografia.o komunikacia.o rs232.o
|
||||||
$(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o $(LIB)
|
$(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o rs232.o $(LIB)
|
||||||
|
|
||||||
server: server.o kryptografia.o komunikacia.o
|
server: server.o kryptografia.o komunikacia.o rs232.o
|
||||||
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o $(LIB)
|
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o rs232.o $(LIB)
|
||||||
|
|
||||||
klient.o: klient.c
|
klient.o: klient.c
|
||||||
$(CC) $(CFLAGS) -c klient.c $(LIB)
|
$(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
|
komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h
|
||||||
$(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB)
|
$(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB)
|
||||||
|
|
||||||
|
rs232.o: ../kniznica/rs232.c ../kniznica/rs232.h
|
||||||
|
$(CC) $(CFLAGS) -c ../kniznica/rs232.c $(LIB)
|
||||||
|
|
||||||
.PHONY: clean
|
.PHONY: clean
|
||||||
|
|
||||||
clean-linux:
|
clean-linux:
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Meno studenta: Tomas Lukac //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "../kniznica/kryptografia.h"
|
#include "../kniznica/kryptografia.h"
|
||||||
@ -31,6 +31,7 @@ int main(int argc, char** argv)
|
|||||||
int uvedeny_subor = 0;
|
int uvedeny_subor = 0;
|
||||||
int ip = 0;
|
int ip = 0;
|
||||||
int port = 0;
|
int port = 0;
|
||||||
|
nastavenia_aplikacie nastavenia;
|
||||||
|
|
||||||
#if defined (_WIN32)
|
#if defined (_WIN32)
|
||||||
WSADATA d;
|
WSADATA d;
|
||||||
@ -45,8 +46,6 @@ int main(int argc, char** argv)
|
|||||||
int cislo_portu = 0;
|
int cislo_portu = 0;
|
||||||
char* ip_adresa = NULL;
|
char* ip_adresa = NULL;
|
||||||
char* subor = NULL;
|
char* subor = NULL;
|
||||||
const char *subor_certifikat = NULL;
|
|
||||||
const char *subor_kluc = NULL;
|
|
||||||
WOLFSSL *ssl; WOLFSSL_CTX *ctx;
|
WOLFSSL *ssl; WOLFSSL_CTX *ctx;
|
||||||
|
|
||||||
if((ctx = nastavit_ctx_klient()) == NULL)
|
if((ctx = nastavit_ctx_klient()) == NULL)
|
||||||
@ -200,8 +199,8 @@ int main(int argc, char** argv)
|
|||||||
}
|
}
|
||||||
zobraz_sifru(ssl);
|
zobraz_sifru(ssl);
|
||||||
zobraz_certifikat(ssl);
|
zobraz_certifikat(ssl);
|
||||||
nastav_funkciu(funkcia_BLAKE2B);
|
nastav_funkciu(&nastavenia, funkcia_BLAKE2B);
|
||||||
if(poslat_subor(ssl, ctx, subor) == -1) return -1;
|
if(poslat_subor(ssl, ctx, subor, &nastavenia) == -1) return -1;
|
||||||
ukoncit_spojenie(ssl, ctx);
|
ukoncit_spojenie(ssl, ctx);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
// Meno studenta: Tomas Lukac //
|
// Meno studenta: Tomas Lukac //
|
||||||
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
// Veduci BP: prof. Ing. Milos Drutarovsky CSc. //
|
||||||
// Skola: KEMT FEI TUKE //
|
// Skola: KEMT FEI TUKE //
|
||||||
// Datum poslednej upravy: 12.3.2020 //
|
// Datum poslednej upravy: 6.4.2020 //
|
||||||
//////////////////////////////////////////////////
|
//////////////////////////////////////////////////
|
||||||
|
|
||||||
#include "../kniznica/kryptografia.h"
|
#include "../kniznica/kryptografia.h"
|
||||||
@ -25,11 +25,11 @@
|
|||||||
|
|
||||||
int main(int argc, char **argv)
|
int main(int argc, char **argv)
|
||||||
{
|
{
|
||||||
|
|
||||||
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;
|
||||||
int port = 0;
|
int port = 0;
|
||||||
|
nastavenia_aplikacie nastavenia;
|
||||||
|
|
||||||
#if defined (_WIN32)
|
#if defined (_WIN32)
|
||||||
WSADATA d;
|
WSADATA d;
|
||||||
@ -174,8 +174,8 @@ int main(int argc, char **argv)
|
|||||||
}
|
}
|
||||||
zobraz_sifru(ssl);
|
zobraz_sifru(ssl);
|
||||||
zobraz_certifikat(ssl);
|
zobraz_certifikat(ssl);
|
||||||
nastav_funkciu(funkcia_BLAKE2B);
|
nastav_funkciu(&nastavenia, funkcia_BLAKE2B);
|
||||||
prijat_subor(ssl, ctx);
|
prijat_subor(ssl, ctx, &nastavenia);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
ukoncit_soket(cislo_soketu);
|
ukoncit_soket(cislo_soketu);
|
||||||
|
@ -3,13 +3,13 @@
|
|||||||
:: Meno studenta: Tomas Lukac ::
|
:: Meno studenta: Tomas Lukac ::
|
||||||
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
||||||
:: Skola: KEMT FEI TUKE ::
|
:: Skola: KEMT FEI TUKE ::
|
||||||
:: Datum poslednej upravy: 9.3.2020 ::
|
:: Datum poslednej upravy: 6.4.2020 ::
|
||||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
:: Program je mozne spustit s prepinacmi:
|
:: Program je mozne spustit s prepinacmi:
|
||||||
:: -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
|
||||||
:: -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:
|
::Priklady spustenia:
|
||||||
klient -ip 127.0.0.1 -port 8080 -n rsa
|
klient -ip 127.0.0.1 -port 8080 -n rsa
|
||||||
|
@ -3,7 +3,7 @@
|
|||||||
:: Meno studenta: Tomas Lukac ::
|
:: Meno studenta: Tomas Lukac ::
|
||||||
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
:: Veduci BP: prof. Ing. Milos Drutarovsky CSc. ::
|
||||||
:: Skola: KEMT FEI TUKE ::
|
:: Skola: KEMT FEI TUKE ::
|
||||||
:: Datum poslednej upravy: 9.3.2020 ::
|
:: Datum poslednej upravy: 6.4.2020 ::
|
||||||
::::::::::::::::::::::::::::::::::::::::::::::::::
|
::::::::::::::::::::::::::::::::::::::::::::::::::
|
||||||
|
|
||||||
:: Program server je mozne spustit s prepinacmi:
|
:: 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
|
#ifndef WOLFSSL_OPTIONS_H
|
||||||
#define WOLFSSL_OPTIONS_H
|
#define WOLFSSL_OPTIONS_H
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
#ifdef __cplusplus
|
||||||
|
extern "C" {
|
||||||
|
#endif
|
||||||
|
|
||||||
#undef HAVE_FFDHE_2048
|
#undef HAVE_FFDHE_2048
|
||||||
#define HAVE_FFDHE_2048
|
#define HAVE_FFDHE_2048
|
||||||
|
|
||||||
@ -276,10 +282,6 @@
|
|||||||
#undef HAVE___UINT128_T
|
#undef HAVE___UINT128_T
|
||||||
#define HAVE___UINT128_T
|
#define HAVE___UINT128_T
|
||||||
|
|
||||||
#ifdef __cplusplus
|
|
||||||
extern "C" {
|
|
||||||
#endif
|
|
||||||
|
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#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
|
||||||
#endif /* WOLFSSL_CERT_GEN || WOLFSSL_CERT_EXT */
|
#endif /* WOLFSSL_CERT_GEN || WOLFSSL_CERT_EXT */
|
||||||
|
|
||||||
|
#ifdef WOLFSSL_CERT_GEN
|
||||||
|
|
||||||
#ifdef WOLFSSL_MULTI_ATTRIB
|
#ifdef WOLFSSL_MULTI_ATTRIB
|
||||||
#ifndef CTC_MAX_ATTRIB
|
#ifndef CTC_MAX_ATTRIB
|
||||||
#define CTC_MAX_ATTRIB 4
|
#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);
|
int keyType, void* key, WC_RNG* rng);
|
||||||
WOLFSSL_API int wc_MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*,
|
WOLFSSL_API int wc_MakeCert(Cert*, byte* derBuffer, word32 derSz, RsaKey*,
|
||||||
ecc_key*, WC_RNG*);
|
ecc_key*, WC_RNG*);
|
||||||
|
#ifdef WOLFSSL_CERT_REQ
|
||||||
WOLFSSL_API int wc_MakeCertReq_ex(Cert*, byte* derBuffer, word32 derSz,
|
WOLFSSL_API int wc_MakeCertReq_ex(Cert*, byte* derBuffer, word32 derSz,
|
||||||
int, void*);
|
int, void*);
|
||||||
WOLFSSL_API int wc_MakeCertReq(Cert*, byte* derBuffer, word32 derSz,
|
WOLFSSL_API int wc_MakeCertReq(Cert*, byte* derBuffer, word32 derSz,
|
||||||
RsaKey*, ecc_key*);
|
RsaKey*, ecc_key*);
|
||||||
|
#endif
|
||||||
WOLFSSL_API int wc_SignCert_ex(int requestSz, int sType, byte* buffer,
|
WOLFSSL_API int wc_SignCert_ex(int requestSz, int sType, byte* buffer,
|
||||||
word32 buffSz, int keyType, void* key,
|
word32 buffSz, int keyType, void* key,
|
||||||
WC_RNG* rng);
|
WC_RNG* rng);
|
||||||
@ -427,6 +431,8 @@ WOLFSSL_API int wc_SetExtKeyUsageOID(Cert *cert, const char *oid, word32 sz,
|
|||||||
WC_RNG*);
|
WC_RNG*);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#endif /* WOLFSSL_CERT_GEN */
|
||||||
|
|
||||||
WOLFSSL_API int wc_GetDateInfo(const byte* certDate, int certDateSz,
|
WOLFSSL_API int wc_GetDateInfo(const byte* certDate, int certDateSz,
|
||||||
const byte** date, byte* format, int* length);
|
const byte** date, byte* format, int* length);
|
||||||
#ifndef NO_ASN_TIME
|
#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);
|
WOLFSSL_API int wc_RsaPublicKeyDerSize(RsaKey* key, int with_header);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef HAVE_ECC
|
||||||
/* private key helpers */
|
/* private key helpers */
|
||||||
WOLFSSL_API int wc_EccPrivateKeyDecode(const byte*, word32*,
|
WOLFSSL_API int wc_EccPrivateKeyDecode(const byte*, word32*,
|
||||||
ecc_key*, word32);
|
ecc_key*, word32);
|
||||||
@ -501,6 +508,7 @@ WOLFSSL_API void wc_FreeDer(DerBuffer** pDer);
|
|||||||
WOLFSSL_API int wc_EccPublicKeyToDer(ecc_key*, byte* output,
|
WOLFSSL_API int wc_EccPublicKeyToDer(ecc_key*, byte* output,
|
||||||
word32 inLen, int with_AlgCurve);
|
word32 inLen, int with_AlgCurve);
|
||||||
WOLFSSL_API int wc_EccPublicKeyDerSize(ecc_key*, int with_AlgCurve);
|
WOLFSSL_API int wc_EccPublicKeyDerSize(ecc_key*, int with_AlgCurve);
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef HAVE_ED25519
|
#ifdef HAVE_ED25519
|
||||||
/* private key helpers */
|
/* 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