This commit is contained in:
tom_win 2020-03-13 10:25:19 +01:00
parent d668bf59ec
commit 4ff62a305c
15 changed files with 105 additions and 69 deletions

View File

@ -1,3 +0,0 @@
-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----

View File

@ -1,16 +1,18 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
MIICcTCCAdqgAwIBAgIQCOhPCtiT+OzqOZ9/zm15UDANBgkqhkiG9w0BAQsFADBz MIIC9TCCAl6gAwIBAgIQC2pwGj3EsKY5/Wt5EhoJ/DANBgkqhkiG9w0BAQsFADBz
MQswCQYDVQQGEwJTSzEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29zaWNlMREwDwYD MQswCQYDVQQGEwJTSzEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29zaWNlMREwDwYD
VQQKDAhBdXRvcml0YTESMBAGA1UEAwwJbG9jYWwuZGV2MSAwHgYJKoZIhvcNAQkB VQQKDAhBdXRvcml0YTESMBAGA1UEAwwJbG9jYWwuZGV2MSAwHgYJKoZIhvcNAQkB
FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDMxMTE0NTY0MloYDzIwMjUwMzEx FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDMxMjA5MTY1MloYDzIwMjUwMzEy
MTQ1NjQyWjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z MDkxNjUyWjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z
aWNlMQowCAYDVQQKDAEtMQowCAYDVQQLDAEtMRIwEAYDVQQDDAlTZXJ2ZXIuc2sx aWNlMQowCAYDVQQKDAEtMQowCAYDVQQLDAEtMRIwEAYDVQQDDAlsb2NhbC5kZXYx
HzAdBgkqhkiG9w0BCQEWEHNlcnZlckBzZXJ2ZXIuc2swgZ8wDQYJKoZIhvcNAQEB HzAdBgkqhkiG9w0BCQEWEGtsaWVudEBrbGllbnQuc2swggEiMA0GCSqGSIb3DQEB
BQADgY0AMIGJAoGBAN9gCoWWm5DDSo/7cSTbzhfbWsInC1kqj+5JKUy264iFbCnu AQUAA4IBDwAwggEKAoIBAQDwDx1IjmJ7IzU+cgvzaBJJpEygza6drlQXiCr2hHbG
lcmD4w6EfClH5RYnqg+dHxuft2yEo0SvAMRyFpPs+J30m3m6TyLSAtTkoqYARFA3 +PY4Ix+x6BorMrpjjIPxybMG8H1kixRSyiS6URFlJX+HdEgilH6jbqhmdpt8mAz4
UcMm1mGFPHfeJIWnJXSFMVEixrY8xy2PoHjBiB90MqcsEJBNRgeGiLDsJFmVAgMB MgaD6L2+QimiKAQ1l50sqyE9bpEWstXpvjUi7kbh53qMdK1hGrH1fo7KUhsXAYcO
AAEwDQYJKoZIhvcNAQELBQADgYEAYKUghhJs93klzeFlJVArHPpUyuYcIAsre6B9 n00G3DXYOAwuKlHddFk4xpdlorvWinRjJ68Mnn7+nHO8gk5hdfG8QPkVGO+PEsw+
5opSgCyhztxUoRYp/ti+QnnyCPK6EuYzwFRY6KRAsBM2w1bSaK3qmtMQmoANK/n1 vrFzR92V7YQ+cB24MfxK3hZLbs0K0FyRWJBQ282ckM8nkScw6bmnekKhYMVAyU3h
tD6FravK9ufb760hsB659iiKJrKFqZcQD34f0rjhIImBscK4KKMp8wmesBUxVidG WUoe2T1BCDKSiVUaU7m3YEPkpugkTuHPndJBHjxnUZ1lAgMBAAEwDQYJKoZIhvcN
HsHDRKM= AQELBQADgYEAKdlP2IZv7houMO3D66vtxa4bOH+cGOhWmAXXq8RRSEhV6FM6IfeR
rkGcfm8LBXgIM1DQWZcR1BssPNZPm+P4QwVA08NrQDwSP9d3qQw+dFpJpGSoZXCi
NrmYgRCqDQkMWxXQO1rjufAYXlYnH0xH8Ro43t90zc9j8GQhd0jd49o=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

@ -1,15 +1,27 @@
-----BEGIN RSA PRIVATE KEY----- -----BEGIN RSA PRIVATE KEY-----
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
-----END RSA PRIVATE KEY----- -----END RSA PRIVATE KEY-----

View File

@ -52,6 +52,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* hash; byte* hash;
hash = generovat_hash(cesta); hash = generovat_hash(cesta);
for(int i = 0; i < VELKOST_HASHU; i++) hash[i] = (char)hash[i];
wolfSSL_write(ssl, hash, VELKOST_HASHU); wolfSSL_write(ssl, hash, VELKOST_HASHU);
if(uspech <= 0) if(uspech <= 0)
{ {
@ -62,7 +63,7 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
//posielanie jednotlivych bajtov //posielanie jednotlivych bajtov
for(int i = 0; i < velkost + 1; ++i) for(int i = 0; i < velkost + 1; ++i)
{ {
wolfSSL_write(ssl, pole_uk, velkost); uspech = wolfSSL_write(ssl, pole_uk, velkost);
if(uspech <= 0) if(uspech <= 0)
{ {
fprintf(stderr, "Nastala chyba pri posielani suboru.\n"); fprintf(stderr, "Nastala chyba pri posielani suboru.\n");
@ -84,14 +85,19 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
uspech = wolfSSL_read(ssl, cesta, VELKOST_CESTY); uspech = wolfSSL_read(ssl, cesta, VELKOST_CESTY);
if(uspech <= 0) if(uspech <= 0)
{ {
fprintf(stderr, "Nastala chyba pri prijati velkosti suboru\n"); fprintf(stderr, "Nastala chyba pri prijati dat o subore\n");
return -1; return -1;
} }
printf("Prebieha prijimanie suboru %s\n", cesta); printf("Prebieha prijimanie suboru %s\n", cesta);
//ziskanie informacie od klienta o velkosti odoslaneho suboru //ziskanie informacie od klienta o velkosti odoslaneho suboru
char velkost_suboru[32]; char velkost_suboru[32];
wolfSSL_read(ssl, velkost_suboru, VELKOST_SUBOR); uspech = wolfSSL_read(ssl, velkost_suboru, VELKOST_SUBOR);
if(uspech <= 0)
{
fprintf(stderr, "Nastala chyba pri prijati velkosti suboru\n");
return -1;
}
long velkost = atol(velkost_suboru); long velkost = atol(velkost_suboru);
if(velkost < 1) if(velkost < 1)
{ {
@ -120,7 +126,7 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
uspech = wolfSSL_read(ssl, pole_uk, velkost); uspech = wolfSSL_read(ssl, pole_uk, velkost);
if(uspech <= 0) if(uspech <= 0)
{ {
fprintf(stderr, "Nastala chyba pri prijimani suboru\n"); fprintf(stderr, "Nastala chyba pri prijati suboru\n");
return -1; return -1;
} }
pole_uk += 1; pole_uk += 1;
@ -130,7 +136,8 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
//kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju //kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju
byte* vypocitany_hash; byte* vypocitany_hash;
vypocitany_hash = generovat_hash(cesta); vypocitany_hash = generovat_hash(cesta);
if(!strcmp(prijaty_hash, (char*)vypocitany_hash)) for(int i = 0; i < VELKOST_HASHU; i++) vypocitany_hash[i] = (char)vypocitany_hash[i];
if(!strcmp(prijaty_hash, vypocitany_hash))
{ {
printf("Subor prisiel v poriadku.\n"); printf("Subor prisiel v poriadku.\n");
} }

View File

@ -14,7 +14,6 @@ WOLFSSL_CTX* nastavit_ctx_klient()
wolfSSL_Init(); wolfSSL_Init();
method = wolfTLSv1_2_client_method(); method = wolfTLSv1_2_client_method();
WOLFSSL_CTX *ctx = wolfSSL_CTX_new(method); WOLFSSL_CTX *ctx = wolfSSL_CTX_new(method);
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
if (ctx == NULL) if (ctx == NULL)
{ {
printf("Nepodarilo sa inicializovat WOLFSSL_CTX\n"); printf("Nepodarilo sa inicializovat WOLFSSL_CTX\n");
@ -29,7 +28,6 @@ WOLFSSL_CTX* nastavit_ctx_server()
wolfSSL_Init(); wolfSSL_Init();
method = wolfTLSv1_2_server_method(); method = wolfTLSv1_2_server_method();
WOLFSSL_CTX *ctx = wolfSSL_CTX_new(method); WOLFSSL_CTX *ctx = wolfSSL_CTX_new(method);
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
if (ctx == NULL) if (ctx == NULL)
{ {
@ -268,7 +266,6 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
certifikat.isCA = 0; certifikat.isCA = 0;
certifikat.sigType = algoritmus; certifikat.sigType = algoritmus;
certifikat.daysValid = 1825; certifikat.daysValid = 1825;
uspech = wc_SetIssuer(&certifikat, "../certifikaty/autorita_ecc.pem"); uspech = wc_SetIssuer(&certifikat, "../certifikaty/autorita_ecc.pem");
if(uspech != 0) if(uspech != 0)
{ {

View File

@ -10,32 +10,32 @@
CC = gcc CC = gcc
#prepinace pre prekladac #prepinace pre prekladac
CFLAGS = -Wall -Wcpp -fPIC -DREPLICATION_ENABLED -DJOURNALING_ENABLED -I./../wolfssl_hlavickove_subory/ CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/
LIB32 = -L. -lwolfssl -lws2_32 -Os LIB32 = -L. -lwolfssl -lws2_32 -Os
LIB64 = -L. -lwolfssl -lws2_32 -m64 LIB64 = -L. -lwolfssl -lws2_32 -m64
all: klient server all: klient server
klient: klient.o kryptografia.o komunikacia.o rs232.o klient: klient.o kryptografia.o komunikacia.o rs232.o
$(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o rs232.o $(LIB64) $(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o rs232.o $(LIB32)
server: server.o kryptografia.o komunikacia.o rs232.o server: server.o kryptografia.o komunikacia.o rs232.o
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o rs232.o $(LIB64) $(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o rs232.o $(LIB32)
klient.o: klient.c klient.o: klient.c
$(CC) -c klient.c $(LIB64) $(CC) -c klient.c $(LIB32)
server.o: server.c server.o: server.c
$(CC) -c server.c $(LIB64) $(CC) -c server.c $(LIB32)
kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h
$(CC) -c ../kniznica/kryptografia.c $(LIB64) $(CC) -c ../kniznica/kryptografia.c $(LIB32)
komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h
$(CC) -c ../kniznica/komunikacia.c $(LIB64) $(CC) -c ../kniznica/komunikacia.c $(LIB32)
rs232.o: ../kniznica/rs232.c ../kniznica/rs232.h rs232.o: ../kniznica/rs232.c ../kniznica/rs232.h
$(CC) -c ../kniznica/rs232.c $(LIB64) $(CC) -c ../kniznica/rs232.c $(LIB32)
.PHONY: clean .PHONY: clean

View File

@ -9,7 +9,6 @@
#include <stdio.h> #include <stdio.h>
#include <stdlib.h> #include <stdlib.h>
#include <string.h> #include <string.h>
#include <wolfssl/options.h>
#include <wolfssl/wolfcrypt/settings.h> #include <wolfssl/wolfcrypt/settings.h>
#include <wolfssl/ssl.h> #include <wolfssl/ssl.h>
#include <wolfssl/certs_test.h> #include <wolfssl/certs_test.h>
@ -63,7 +62,7 @@ int main(int argc, char const *argv[])
int uspech = 0; int uspech = 0;
if(wolfSSL_connect(ssl) != SSL_SUCCESS) if(wolfSSL_connect(ssl) != SSL_SUCCESS)
{ {
printf("Nepodarilo sa pripojit\n"); printf("Nepodarilo sa pripojit%d\n", uspech);
return -1; return -1;
} }

View File

@ -17,22 +17,22 @@ LIB64 = -L. -lwolfssl -lws2_32 -m64
all: klient server all: klient server
klient: klient.o kryptografia.o komunikacia.o klient: klient.o kryptografia.o komunikacia.o
$(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o $(LIB32) $(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o $(LIB64)
server: server.o kryptografia.o komunikacia.o server: server.o kryptografia.o komunikacia.o
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o $(LIB32) $(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o $(LIB64)
klient.o: klient.c klient.o: klient.c
$(CC) $(CFLAGS) -c klient.c $(LIB32) $(CC) $(CFLAGS) -c klient.c $(LIB64)
server.o: server.c server.o: server.c
$(CC) $(CFLAGS) -c server.c $(LIB32) $(CC) $(CFLAGS) -c server.c $(LIB64)
kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h
$(CC) $(CFLAGS) -c ../kniznica/kryptografia.c $(LIB32) $(CC) $(CFLAGS) -c ../kniznica/kryptografia.c $(LIB64)
komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h
$(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB32) $(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB64)
.PHONY: clean .PHONY: clean

View File

@ -11,7 +11,7 @@
#include <wolfssl/ssl.h> #include <wolfssl/ssl.h>
#define RSA_VELKOST 1024 #define RSA_VELKOST 2048
#define ECC_VELKOST 32 #define ECC_VELKOST 32
#define RSA_EXPONENT 65537 #define RSA_EXPONENT 65537
@ -105,16 +105,18 @@ int main(int argc, char** argv)
else if(!strcmp(argv[i+1], "rsa")) else if(!strcmp(argv[i+1], "rsa"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL);
subor_certifikat = "../certifikaty/server_rsa.pem"; subor_certifikat = "../certifikaty/klient_rsa.pem";
subor_kluc = "../certifikaty/server_rsa.key"; subor_kluc = "../certifikaty/klient_rsa.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
} }
else if(!strcmp(argv[i+1], "ecc")) else if(!strcmp(argv[i+1], "ecc"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL);
subor_certifikat = "../certifikaty/server_ecc.pem"; subor_certifikat = "../certifikaty/klient_ecc.pem";
subor_kluc = "../certifikaty/server_ecc.key"; subor_kluc = "../certifikaty/klient_ecc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
} }
else else
{ {
@ -133,18 +135,21 @@ int main(int argc, char** argv)
else if(!strcmp(argv[i+1], "rsa")) else if(!strcmp(argv[i+1], "rsa"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL);
if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "Klient.sk", "klient@klient.sk") == -1) return -1; if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "klient@klient.sk") == -1) return -1;
subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem"; subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem";
subor_kluc = "../certifikaty/vygenerovany_kluc.key"; subor_kluc = "../certifikaty/vygenerovany_kluc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
} }
else if(!strcmp(argv[i+1], "ecc")) else if(!strcmp(argv[i+1], "ecc"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL);
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "Klient.sk", "klient@klient.sk") == -1) return -1; if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "klient@klient.sk") == -1) return -1;
subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem"; subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem";
subor_kluc = "../certifikaty/vygenerovany_kluc.key"; subor_kluc = "../certifikaty/vygenerovany_kluc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
} }
else else
{ {
@ -181,12 +186,17 @@ int main(int argc, char** argv)
cislo_soketu = pripojit_na_server(ip_adresa, cislo_portu, 10); cislo_soketu = pripojit_na_server(ip_adresa, cislo_portu, 10);
if(!cislo_soketu) return -1; if(!cislo_soketu) return -1;
ssl = wolfSSL_new(ctx); ssl = wolfSSL_new(ctx);
wolfSSL_set_fd(ssl, cislo_soketu); wolfSSL_set_fd(ssl, cislo_soketu);
int uspech = wolfSSL_connect(ssl); int uspech = wolfSSL_connect(ssl);
if(uspech != SSL_SUCCESS) if(uspech != SSL_SUCCESS)
{ {
fprintf(stderr, "Nastala chyba v spojeni.\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"); printf("Skontrolujte certifikaty.\n");
return -1; return -1;
} }

View File

@ -11,7 +11,7 @@
#include <wolfssl/ssl.h> #include <wolfssl/ssl.h>
#define RSA_VELKOST 1024 #define RSA_VELKOST 2048
#define ECC_VELKOST 32 #define ECC_VELKOST 32
#define RSA_EXPONENT 65537 #define RSA_EXPONENT 65537
@ -77,18 +77,21 @@ int main(int argc, char **argv)
else if(!strcmp(argv[i+1], "rsa")) else if(!strcmp(argv[i+1], "rsa"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL);
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
subor_certifikat = "../certifikaty/server_rsa.pem"; subor_certifikat = "../certifikaty/server_rsa.pem";
subor_kluc = "../certifikaty/server_rsa.key"; subor_kluc = "../certifikaty/server_rsa.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
} }
else if(!strcmp(argv[i+1], "ecc")) else if(!strcmp(argv[i+1], "ecc"))
{ {
printf("jo\n");
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL);
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
subor_certifikat = "../certifikaty/server_ecc.pem"; subor_certifikat = "../certifikaty/server_ecc.pem";
subor_kluc = "../certifikaty/server_ecc.key"; subor_kluc = "../certifikaty/server_ecc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
} }
else else
{ {
@ -112,18 +115,23 @@ int main(int argc, char **argv)
else if(!strcmp(argv[i+1], "rsa")) else if(!strcmp(argv[i+1], "rsa"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL);
if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "Server.sk", "server@server.sk") == -1) return -1; if(generovat_rsa_certifikat(RSA_VELKOST, RSA_EXPONENT, CTC_SHA256wRSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem"; subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem";
subor_kluc = "../certifikaty/vygenerovany_kluc.key"; subor_kluc = "../certifikaty/vygenerovany_kluc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
} }
else if(!strcmp(argv[i+1], "ecc")) else if(!strcmp(argv[i+1], "ecc"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL);
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "Server.sk", "server@server.sk") == -1) return -1; if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "server@server.sk") == -1) return -1;
subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem"; subor_certifikat = "../certifikaty/vygenerovany_certifikat.pem";
subor_kluc = "../certifikaty/vygenerovany_kluc.key"; subor_kluc = "../certifikaty/vygenerovany_kluc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1; if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
} }
else else
{ {
@ -149,7 +157,7 @@ int main(int argc, char **argv)
//nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256"); //nastav_sifry(ctx, "TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256");
cislo_soketu = cakat_na_komunikaciu(cislo_portu); cislo_soketu = cakat_na_komunikaciu(cislo_portu);
while(1) while(1)
{ {
printf("------------\n"); printf("------------\n");
@ -161,17 +169,21 @@ int main(int argc, char **argv)
ssl = wolfSSL_new(ctx); ssl = wolfSSL_new(ctx);
wolfSSL_set_fd(ssl, cislo_soketu_klienta); wolfSSL_set_fd(ssl, cislo_soketu_klienta);
int uspech; int uspech;
zobraz_sifru(ssl);
zobraz_certifikat(ssl);
if(wolfSSL_accept(ssl) != SSL_SUCCESS) if(wolfSSL_accept(ssl) != SSL_SUCCESS)
{ {
fprintf(stderr, "Nastala chyba v spojeni.\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"); printf("Skontrolujte certifikaty.\n");
return -1; return -1;
} }
zobraz_sifru(ssl);
zobraz_certifikat(ssl);
prijat_subor(ssl, ctx); prijat_subor(ssl, ctx);
} }
} }
ukoncit_soket(cislo_soketu); ukoncit_soket(cislo_soketu);
return 0; return 0;
} }

Binary file not shown.

BIN
tcpip_kanal/wolfssl_32.dll Normal file

Binary file not shown.

Binary file not shown.