This commit is contained in:
tom_win 2020-03-19 13:55:34 +01:00
parent 4ff62a305c
commit 676912ea1a
40 changed files with 611 additions and 247 deletions

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -1,8 +0,0 @@
-----BEGIN EC PARAMETERS-----
BggqhkjOPQMBBw==
-----END EC PARAMETERS-----
-----BEGIN EC PRIVATE KEY-----
MHcCAQEEIEuYLm4s3SUBBm7VOdIJq+FlZgRMq+V3o4wQG7VaMgZaoAoGCCqGSM49
AwEHoUQDQgAEVL+Z4OXsPkJkgObU3CfMSZK5BqDaavIA3fsPTzKyxsHbvZZNR111
BiLEX7tlFvSTIvxo64eB352ys4MFnGDiAQ==
-----END EC PRIVATE KEY-----

View File

@ -1,15 +0,0 @@
-----BEGIN RSA PRIVATE KEY-----
MIICWwIBAAKBgQCVKNbLNY4YLbZNe5bpupYKY1ytQiWdU5GPoN1VpBT2BYk36yTd
RKvfLwxQwLgBDiI2sifAxq/MIEFgada93dJvw9GfawnLGEDfsd8lVr6cefLJuAHa
b4rHy5VDFZuzLyEDgxY+1NvK31efyQCu08GdnTpoHdHIuVQS+EAZnJcOPwIDAQAB
AoGAd1OFimnctDEVr6TYlUFEuSjGQoExcEwjneCWUOYEMtE49jgydKV0Tgbodk3G
pml1K4aY0NriVo3TX1sshRZJOxGkfxvBNtE15j8uYtb3Gov1I/jV302CROvvRE4y
fIl2AIvd5TG92ZOPYu7H22ScnasHWpsw706qQ3yjfP5weukCQQDFMA6NAqaT93ku
ClyjSBo/kon39y/XgvyAPg43LIHdkUx4q26PfW9OvwqZ7XHa5eTqBQQF9oUo8gTs
UB+SwLqTAkEAwaWrLLApowA5g8Y+MGi1Gf/r7qdQxKRJGnaEyca5EL6avFvWdZEB
XivtrIeg5Cy7BWaIgGO8TsPnwtjURTbtJQJAVn2vxDYnbrub0ZAF9jDIIp5aGgO4
XmU779xIS/cft1nmGv/G7PVt/zJYqg+2Yvd3oxY0H5Fz8vPFKQoz7yDONQJAFMNh
tjnxTPPyNsnj0yb2/CGvt3gjNeJzoC3DESuInl4Bk165gQOaRPGq20vzmWOebfbP
fgyznTJuQDslj4JTLQJAd2ryTnOjyc6Cr8RMIMmchZCltdqEIi7vK8BglWJOBtPV
8zHyLZeMVlPQhksQW7/+xqhgFWnTMRaG9DW7JN7e7Q==
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC9TCCAl6gAwIBAgIQbFsMsUpL4cQYvdnPsNfEozANBgkqhkiG9w0BAQsFADBz
MQswCQYDVQQGEwJTSzEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29zaWNlMREwDwYD
VQQKDAhBdXRvcml0YTESMBAGA1UEAwwJbG9jYWwuZGV2MSAwHgYJKoZIhvcNAQkB
FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDMxODEwMzUwOFoYDzIwMjUwMzE4
MTAzNTA4WjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z
aWNlMQowCAYDVQQKDAEtMQowCAYDVQQLDAEtMRIwEAYDVQQDDAlsb2NhbC5kZXYx
HzAdBgkqhkiG9w0BCQEWEGtsaWVudEBrbGllbnQuc2swggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQDwvJLGxRiSsplAIeOWOeMa4xeh8mVwTVZgJjuOK2xv
Gze6NZ/or9OGHqBMat3rfW9xZazAg+UoL4TzqokVyjo1KQxGwbHuZQdqQ3/MgWnm
1h2cdLicF8hMQtawYhqp1me9+Xh89y+tiBBAAilzGzPRQayYoMoEd9Ics8XPbSX/
qEzSdVeuqb7AIQIDZ7v4DTnQIarJDFtzE4Rd37Dq+ThMiipe292FKbRqfyhU5974
QtAfTQ6ReYzuRnO5bveAx20iOHXqhM2ckUNzuAKRk8DKEdh/ucPpJTF5rkJYVmU0
6qpVAPdfSrovuNe6r3v9JGBCWOb8XPq9cLE0PwRd2U1nAgMBAAEwDQYJKoZIhvcN
AQELBQADgYEAUFd0OaWxtikqd5MRx8LfOKfIoadPxnm7/os6fR8D1K8HMVuinbc4
6My0jDwVIQQP0ovlGHhntbH+EsXwoB15O2EPtfh5kQjgocKdZitfH3jgaW3ndm1B
RAKOmCfs29IBHN/ZUX8hBaoSfUWJPvwL2DcxzwoeI+h5VRHY68f6cI4=
-----END CERTIFICATE-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEowIBAAKCAQEA8LySxsUYkrKZQCHjljnjGuMXofJlcE1WYCY7jitsbxs3ujWf
6K/Thh6gTGrd631vcWWswIPlKC+E86qJFco6NSkMRsGx7mUHakN/zIFp5tYdnHS4
nBfITELWsGIaqdZnvfl4fPcvrYgQQAIpcxsz0UGsmKDKBHfSHLPFz20l/6hM0nVX
rqm+wCECA2e7+A050CGqyQxbcxOEXd+w6vk4TIoqXtvdhSm0an8oVOfe+ELQH00O
kXmM7kZzuW73gMdtIjh16oTNnJFDc7gCkZPAyhHYf7nD6SUxea5CWFZlNOqqVQD3
X0q6L7jXuq97/SRgQljm/Fz6vXCxND8EXdlNZwIDAQABAoIBAAIcLun+V9xL53aB
eU2IwwGixFnSP9ReuaOI/n2kjfjoom4W2T1a6xDPkDSpYsj+i49CGXMoiYIrsaKM
xvguuCgR5S9jHai0bKRrmRnJ8EBBG44aE7E6zTHa3ph2MVKFIX97DXTP5X+0vkjl
lGzITe8OtRqNu6eTfSxdwuj1zQwkG6hISEjIQuqy01wZLKGxLqp9FXfT1wSmpHCI
BTqSrVAnwrDVQxkDS7+B2bipy48JMRIZ1TOjkC+ELNiMEZgpMOhTM/0WjYUP0elC
SoxdeDN9oo8IWoyL8wEMVl9apMRpoT3e2eI7GFHhvGyJpY/PIBpevbKEmxUeYnKu
2pI1eRUCgYEA+NBPc8WyRDhcDwm+pdcvpozOv9JuEkX6hLqTSAeqYLFSZDoei4bs
6nkFHHE9OCwQ2xtoP4dz/BZRW/sO9nU04FmNLqPS/pfxEUN3BSABhi5lvwh7bgf4
jw1P2IixA4AYkOAaJGl8LGor3GIJ5RnjxNYj7eNDbfVL01jwVMvKvlMCgYEA97CK
zOdtB07oCav4lcMMGqbGsDQFJ9x+lGUHs/OXCTNf7MgaxHErw5hk/GPqM7YrA93V
arpa5PG/y0fy3IswjhMHwVwHKw8yOWN6oV+Ud4yAXUYurNNpkv9BTEKrSpy/vvM6
et5NPXki1UqkkzzCAL6hSdrmvYUTPzAl38pzih0CgYEA5huw/z786P6+lOHMQY/L
b9qVcu3oAlpZn9r1Tw5X0ejsa+kcSqnT/d1CjtVjasnGJP0p4mchKyhwwgJkCibH
ah0n5tR31CEtP2wHbOP2xOOwEYaEsHQKujHzgCyamMQk9Adt5fLwdhsSyVSaFhll
fqsUu3MM72qGX8XHLoTy0iUCgYAx7AI9xFNEStIXyPKEdNiGsqCPORzk6NsWW7qO
uYTylMk7tyU1/L1eYePQvu6gV5IZ6GcwaLkTNep7NVgsvV0e9ZT1ku/a7OgpivRX
fCU3ZzkkE5YqvT2lJA9sKG/PzQIUoX9i7lVRE45CwRWkm3VaoxFtClLBVgYIEVNA
5NQevQKBgCv+Gl7uk1N9VrlD2XwwmHCWooqVr3FPOq6ztX4014DzZmxkyem9GJGZ
uyuzM4bKjb/lmk4RI19VZoExyt+7K3eWUSUQNS6Erhcjx74+vSngKOV2TNiGnByx
oJoUlKquhEijlX/pJtH8812EYGtm5COkRA2QkWfr6hb6KQtz4wq7
-----END RSA PRIVATE KEY-----

View File

@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC9TCCAl6gAwIBAgIQbFmaYwjF3/SehWXgHj8HwjANBgkqhkiG9w0BAQsFADBz
MQswCQYDVQQGEwJTSzEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29zaWNlMREwDwYD
VQQKDAhBdXRvcml0YTESMBAGA1UEAwwJbG9jYWwuZGV2MSAwHgYJKoZIhvcNAQkB
FhFhdXRvcml0YUB0dWtlLmNvbTAiGA8yMDIwMDMxODEyMjkyOVoYDzIwMjUwMzE4
MTIyOTI5WjB3MQswCQYDVQQGEwJTUjEKMAgGA1UECAwBLTEPMA0GA1UEBwwGS29z
aWNlMQowCAYDVQQKDAEtMQowCAYDVQQLDAEtMRIwEAYDVQQDDAlsb2NhbC5kZXYx
HzAdBgkqhkiG9w0BCQEWEHNlcnZlckBzZXJ2ZXIuc2swggEiMA0GCSqGSIb3DQEB
AQUAA4IBDwAwggEKAoIBAQC2anE0gd6zuFQw2T+PLZg9KHlm9+TjrkHXc3zxFw4g
uNgGxwi4TMGoUMVyUsEWtBHYkF/Zx5fWD292RItXd5GsrvyUjOgOF9BMfAh8MkHa
HqQiFOzw7LAwbzCiNU82ZIWAbQvivnLXTmygFPbB+LlDcCLS3U738x46rrQaHuGe
wNj4BBDSMVqAeN3z966Yf1YIXIe4rPQivRTGgtJYUfjL4b9sB6dgNmBUzmI5DRil
olEwkHm9AuZ2mwfHcBUvCc24iN9q8lY6fjAqIQo0+NFYhvi2jibvUTy6dOxEUbKg
R14mye/vF+fNaT2NHMVBHqYxA0dnPw3nQQMOuR3WCt9zAgMBAAEwDQYJKoZIhvcN
AQELBQADgYEAiBxxdJm1VUxUVsY31LMpe3pIbicSVi+91rtsii02tbMEBl8o4UKQ
xfJyZaWQW0gZ3rcgcquYU/SKpsjiYwzPjx10IX8htHibmgSS4EC5L5poKBncjSmC
tWmJEILZl9dXPUrIOuJOa4hBeK54chVFsszm2mhbJsYGvOA8z0gcc94=
-----END CERTIFICATE-----

View File

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpAIBAAKCAQEAtmpxNIHes7hUMNk/jy2YPSh5Zvfk465B13N88RcOILjYBscI
uEzBqFDFclLBFrQR2JBf2ceX1g9vdkSLV3eRrK78lIzoDhfQTHwIfDJB2h6kIhTs
8OywMG8wojVPNmSFgG0L4r5y105soBT2wfi5Q3Ai0t1O9/MeOq60Gh7hnsDY+AQQ
0jFagHjd8/eumH9WCFyHuKz0Ir0UxoLSWFH4y+G/bAenYDZgVM5iOQ0YpaJRMJB5
vQLmdpsHx3AVLwnNuIjfavJWOn4wKiEKNPjRWIb4to4m71E8unTsRFGyoEdeJsnv
7xfnzWk9jRzFQR6mMQNHZz8N50EDDrkd1grfcwIDAQABAoIBAAja3JPymfTvcGbO
pPSLqhA4nsFjgeDrh0FbgdJ85AVX87n11Mky21O9rVgCBw2AaugFr3bK5ualPoE8
jTxkZCtAc1JiugEKduS/lfSGxrDn5op2VD99vdpxYKhUc3vtypfpXeJWjGHslKlQ
sInJ9nRSRTPR5RDJjyDEyklaURQmWLHAs3JcZ6pRkpLvPo8MJP5iVfoXze0QZg+4
Zvs+xAtpoy9I06MSi+J4e6EzLTRFXXkmkVHxMK1wKw9yNl0tl1+eQ3i5lzJmiTev
noRVkmBRhATcdEnlSJVdiUOrZAmGS1As+IQiLrPyO7AKG7Ukr2lJHhLm/C6YblzR
QeHefIECgYEA5hiY4uJZxAidSzBpq/1Osan66uYC3e5FYm9KSvYQbe6GgLTM0e4d
3CRbEYLBTVf4BCtRUFyMRMMvzvme+oFZf38QdFaxdnyYwmzA1+Ls7LsZjPYF2oJE
b+oMi1UEJs8jXJkQ5tuI5SP/kasBxPRi/T1WANpduPzQCzzvjs6xxrkCgYEAyvOx
JRtqM26+2rdkQrClRAf1HFv2ej0vjyOhIuEK4WG6NFdqqm3zQzIHvxaGuAkBfyNk
g+QEQvbx8PLx5bmaDTcV48Hf40h8a4W7HFRK3sa+Zk2w+ih4iW+RC6XBOyqmTJEi
IGCXlIP/6RJZkrT9YrsyzI6edHCdatgKd9EHQYsCgYBDW3X+DQb8JQ1uwlhc2cVc
qwbiFr1GHIdBPpUABrJejBHhwYun9M3W8Omb4awWqSbYiZm/Lah+RKlNLLPGX3FE
qny1od9HcUgCunVlfW+gCVF8e1TRV4sTO++6JgQWHFMcu05AVonnkjcxfF8DOgt0
WK1BiKshCRkaARebtZRDOQKBgQCGWxG42Q9TgUtEDAiJxduC0CnKXm8ruXnUruer
6YOEdWgJ4p0wup1CrMpIDKefCgc9nbabQcY4drbwpkTRqi979C2/m8eV9ZS4sc2P
EZaHKNc/bstssIIrqfpB1be4baGuKp6HBKsUnNY7+/PklYDxbbBRj1EDENKFuwQj
EfRVxQKBgQCIRBRzvyRJXmYMfvFXmDWeTe3koj+hjT3O8jXvojURsiBOL714Avsl
7ENawNWqWUC1ZbfsLmB5G0BrQ7GgXHBXAE1lXEXLBfxt1n43s9sUsuZMKcrw20l7
W+NvLcec5eeXdxetkqOTqi7PG4tHMDeRKlLdgo+MumjI+Muw32iVqw==
-----END RSA PRIVATE KEY-----

View File

@ -1,18 +1,18 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
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
-----END CERTIFICATE----- -----END CERTIFICATE-----

View File

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

View File

@ -9,6 +9,13 @@
#include "komunikacia.h" #include "komunikacia.h"
#include "kryptografia.h" #include "kryptografia.h"
hashovacia_funkcia h_funkcia;
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)
{ {
int uspech; int uspech;
@ -49,17 +56,6 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
fread(pole, 1, velkost, subor); fread(pole, 1, velkost, subor);
fclose(subor); fclose(subor);
//generovanie a poslanie kontrolneho suctu serveru pre kontrolu
byte* hash;
hash = generovat_hash(cesta);
for(int i = 0; i < VELKOST_HASHU; i++) hash[i] = (char)hash[i];
wolfSSL_write(ssl, hash, VELKOST_HASHU);
if(uspech <= 0)
{
fprintf(stderr, "Nastala chyba pri posielani hashu.\n");
return -1;
}
//posielanie jednotlivych bajtov //posielanie jednotlivych bajtov
for(int i = 0; i < velkost + 1; ++i) for(int i = 0; i < velkost + 1; ++i)
{ {
@ -72,6 +68,21 @@ int poslat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx, char* cesta)
pole_uk += 1; pole_uk += 1;
} }
printf("Subor bol uspesne odoslany.\n"); printf("Subor bol uspesne odoslany.\n");
//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);
for(int i = 0; i < velkost_kontrolneho_suctu; i++)
{
kontrolny_sucet[i] = (char)kontrolny_sucet[i];
}
wolfSSL_write(ssl, kontrolny_sucet, velkost_kontrolneho_suctu);
if(uspech <= 0)
{
fprintf(stderr, "Nastala chyba pri posielani kontrolneho suctu.\n");
return -1;
}
return 0; return 0;
} }
} }
@ -109,15 +120,6 @@ int prijat_subor(WOLFSSL* ssl, WOLFSSL_CTX* ctx)
printf("Velkost suboru: %s bajtov\n", velkost_suboru); printf("Velkost suboru: %s bajtov\n", velkost_suboru);
} }
//prijem hashu, ktory vypocital server
char* prijaty_hash = calloc(VELKOST_HASHU, sizeof(char));
uspech = wolfSSL_read(ssl, prijaty_hash, VELKOST_HASHU);
if(uspech <= 0)
{
fprintf(stderr, "Nastala chyba pri prijati hashu\n");
return -1;
}
//prijem jednotlivych bajtov //prijem jednotlivych bajtov
char* pole = malloc(velkost); char* pole = malloc(velkost);
char* pole_uk = pole; char* pole_uk = pole;
@ -126,24 +128,42 @@ 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 prijati suboru\n"); fprintf(stderr, "Nastala chyba pri prijati suboru.\n");
return -1; return -1;
} }
pole_uk += 1; pole_uk += 1;
} }
printf("Subor bol uspesne prijaty.\n"); printf("Subor bol uspesne prijaty.\n");
//vypocet vlastneho kontrolneho suctu
byte* kontrolny_sucet;
int velkost_kontrolneho_suctu;
kontrolny_sucet = generovat_kontrolny_sucet_suboru(h_funkcia, cesta, &velkost_kontrolneho_suctu);
//prijem hashu, ktory vypocital server
char* prijaty_kontrolny_sucet = calloc(velkost_kontrolneho_suctu, sizeof(char));
uspech = wolfSSL_read(ssl, prijaty_kontrolny_sucet, velkost_kontrolneho_suctu);
if(uspech <= 0)
{
fprintf(stderr, "Nastala chyba pri prijati kontrolneho suctu.\n");
return -1;
}
//kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju //kontrola ci sa prijaty a vypocitany kontrolny sucet suboru zhoduju
byte* vypocitany_hash; for(int i = 0; i < velkost_kontrolneho_suctu; i++)
vypocitany_hash = generovat_hash(cesta); {
for(int i = 0; i < VELKOST_HASHU; i++) vypocitany_hash[i] = (char)vypocitany_hash[i]; kontrolny_sucet[i] = (char)kontrolny_sucet[i];
if(!strcmp(prijaty_hash, vypocitany_hash)) }
printf("%s\n", prijaty_kontrolny_sucet);
printf("%s\n", kontrolny_sucet);
if(!strcmp(prijaty_kontrolny_sucet, kontrolny_sucet))
{ {
printf("Subor prisiel v poriadku.\n"); printf("Subor prisiel v poriadku.\n");
} }
else else
{ {
printf("Subor neprisiel v poriadku.\n"); fprintf(stderr, "Kontrolne sucty sa nezhoduju.\n");
printf("Subor neprisiel v poriadku alebo neboli pouzite rovnake funkcie.\n");
return -1; return -1;
} }

View File

@ -14,9 +14,10 @@
#include <string.h> #include <string.h>
#include <wolfssl/ssl.h> #include <wolfssl/ssl.h>
#include "kryptografia.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
#define VELKOST_HASHU 20
#if defined(_WIN32) #if defined(_WIN32)
//makro ktore urcuje win distribuciu ak nieje detekovana //makro ktore urcuje win distribuciu ak nieje detekovana
@ -112,4 +113,12 @@ 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);
/**
* 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

View File

@ -49,35 +49,43 @@ void zobraz_sifru(WOLFSSL* ssl)
int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email) int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
{ {
int uspech; int uspech = 0;
//premenne pre ukladanie dat autority //premenne pre ukladanie dat autority
RsaKey kluc_autorita; RsaKey kluc_autorita;
byte pem_autorita[VELKOST_BUFFERA]; byte der_autorita_certifikat[VELKOST_BUFFERA];
word32 pem_autorita_velkost; int der_autorita_certifikat_velkost;
byte der_autorita[VELKOST_BUFFERA]; byte der_autorita_kluc[VELKOST_BUFFERA];
word32 der_autorita_velkost; int der_autorita_kluc_velkost;
//vytvorenie struktury RsaKey autority zo sukromneho kluca vo formate PEM ulozeneho v subore certifikaty/autorita.key //nacitanie certifikatu autority vo formate DER ulozeneho v subore certifikaty/autorita/autorita_rsa.der
memset(pem_autorita, 0, sizeof(pem_autorita)); printf("Nacitavanie certifikatu autority zo suboru.\n");
FILE* subor = fopen("../certifikaty/autorita_rsa.key", "rb"); FILE* subor = fopen("../certifikaty/autorita/autorita_rsa.der", "rb");
pem_autorita_velkost = fread(pem_autorita, 1, VELKOST_BUFFERA, subor); der_autorita_certifikat_velkost = fread(der_autorita_certifikat, 1, VELKOST_BUFFERA , subor);
if(pem_autorita_velkost < 0) if(der_autorita_certifikat_velkost < 0)
{ {
fprintf(stderr, "Nepodarilo sa nacitat obsah suboru\n"); fprintf(stderr, "Nepodarilo sa nacitat obsah suboru. \n");
}
word32 index = 0; //nastavi odkial zacat citat buffer
memset(der_autorita, 0, sizeof(der_autorita));
der_autorita_velkost = wolfSSL_KeyPemToDer(pem_autorita, sizeof(pem_autorita), der_autorita, sizeof(der_autorita), "");
wc_InitRsaKey(&kluc_autorita, 0);
uspech = wc_RsaPrivateKeyDecode(der_autorita, &index, &kluc_autorita, der_autorita_velkost);
if(uspech != 0)
{
fprintf(stderr, "Nepodarilo sa vytvorit RsaKey strukturu z kluca autority\n");
return -1; return -1;
} }
RsaKey* k = &kluc_autorita; fclose(subor);
if (k == NULL) printf("Nacitanie ukoncene. Bolo nacitanych %d bajtov.\n", der_autorita_certifikat_velkost);
//vytvorenie struktury RsaKey autority zo sukromneho kluca vo formate DER ulozeneho v subore certifikaty/autorita/autorita_kluc_rsa.der
printf("Nacitavanie sukromneho kluca autority zo suboru.\n");
subor = fopen("../certifikaty/autorita/autorita_kluc_rsa.der", "rb");
der_autorita_kluc_velkost = fread(der_autorita_kluc, 1, VELKOST_BUFFERA , subor);
if(der_autorita_kluc_velkost < 0)
{
fprintf(stderr, "Nepodarilo sa nacitat obsah suboru. \n");
return -1;
}
fclose(subor);
printf("Nacitanie ukoncene. Bolo nacitanych %d bajtov.\n", der_autorita_kluc_velkost);
word32 index = 0; //nastavi odkial zacat citat buffer
wc_InitRsaKey(&kluc_autorita, 0);
uspech = wc_RsaPrivateKeyDecode(der_autorita_kluc, &index, &kluc_autorita, der_autorita_kluc_velkost);
if(uspech != 0)
{ {
fprintf(stderr, "Nepodarilo sa vytvorit RsaKey strukturu z kluca autority\n"); fprintf(stderr, "Nepodarilo sa vytvorit RsaKey strukturu z kluca autority\n");
return -1; return -1;
@ -102,19 +110,21 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char
fprintf(stderr, "Chyba pri generovani kluca.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech)); fprintf(stderr, "Chyba pri generovani kluca.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_kluc_velkost = wc_RsaKeyToDer(&kluc, der_kluc, sizeof(der_kluc)); uspech = wc_RsaKeyToDer(&kluc, der_kluc, sizeof(der_kluc));
if(der_kluc_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER so sukromnym klucom.\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER so sukromnym klucom.\n");
return -1; return -1;
} }
der_kluc_velkost = uspech;
memset(pem_kluc, 0, sizeof(pem_kluc)); memset(pem_kluc, 0, sizeof(pem_kluc));
pem_kluc_velkost = wc_DerToPem(der_kluc, der_kluc_velkost, pem_kluc, sizeof(pem_kluc), PRIVATEKEY_TYPE); uspech = wc_DerToPem(der_kluc, der_kluc_velkost, pem_kluc, sizeof(pem_kluc), PRIVATEKEY_TYPE);
if(pem_kluc_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so sukromnym klucom\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so sukromnym klucom\n");
return -1; return -1;
} }
pem_kluc_velkost = uspech;
//zapis vygenerovaneho klucu do suboru //zapis vygenerovaneho klucu do suboru
subor = fopen("../certifikaty/vygenerovany_kluc.key", "wb"); subor = fopen("../certifikaty/vygenerovany_kluc.key", "wb");
@ -142,31 +152,33 @@ int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char
certifikat.isCA = 0; certifikat.isCA = 0;
certifikat.sigType = algoritmus; certifikat.sigType = algoritmus;
certifikat.daysValid = 1825; certifikat.daysValid = 1825;
uspech = wc_SetIssuer(&certifikat, "../certifikaty/autorita_rsa.pem"); uspech = wc_SetIssuerBuffer(&certifikat, der_autorita_certifikat, der_autorita_certifikat_velkost);
if(uspech < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri nastaveni autority.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech)); fprintf(stderr, "Nastala chyba pri nastaveni autority.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_certifikat_velkost = wc_MakeCert(&certifikat, der_certifikat, sizeof(der_certifikat), &kluc, NULL, &generator); uspech = wc_MakeCert(&certifikat, der_certifikat, sizeof(der_certifikat), &kluc, NULL, &generator);
if(der_certifikat_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER s certifikatom.\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER s certifikatom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_certifikat_velkost = wc_SignCert(certifikat.bodySz, certifikat.sigType, der_certifikat, sizeof(der_certifikat), &kluc_autorita, NULL, &generator); uspech = wc_SignCert(certifikat.bodySz, certifikat.sigType, der_certifikat, sizeof(der_certifikat), &kluc_autorita, NULL, &generator);
if(der_certifikat_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri podpisovani certifikatu.\n"); fprintf(stderr, "Nastala chyba pri podpisovani certifikatu.\n");
return -1; return -1;
} }
der_certifikat_velkost = uspech;
memset(pem_certifikat, 0, sizeof(pem_certifikat)); memset(pem_certifikat, 0, sizeof(pem_certifikat));
pem_certifikat_velkost = wc_DerToPem(der_certifikat, der_certifikat_velkost, pem_certifikat, sizeof(pem_certifikat), CERT_TYPE); uspech = wc_DerToPem(der_certifikat, der_certifikat_velkost, pem_certifikat, sizeof(pem_certifikat), CERT_TYPE);
if(pem_certifikat_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM s certifikatom.\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM s certifikatom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
pem_certifikat_velkost = uspech;
//zapis vygenerovaneho klucu do suboru //zapis vygenerovaneho klucu do suboru
subor = fopen("../certifikaty/vygenerovany_certifikat.pem", "wb"); subor = fopen("../certifikaty/vygenerovany_certifikat.pem", "wb");
@ -184,27 +196,41 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
//premenne pre ukladanie dat autority //premenne pre ukladanie dat autority
ecc_key kluc_autorita; ecc_key kluc_autorita;
byte pem_autorita[VELKOST_BUFFERA]; byte der_autorita_certifikat[VELKOST_BUFFERA];
word32 pem_autorita_velkost; int der_autorita_certifikat_velkost;
byte der_autorita[VELKOST_BUFFERA]; byte der_autorita_kluc[VELKOST_BUFFERA];
word32 der_autorita_velkost; int der_autorita_kluc_velkost;
//vytvorenie struktury ecc_key autority zo sukromneho kluca vo formate PEM ulozeneho v subore certifikaty/autorita_ecc.key //nacitanie certifikatu autority vo formate DER ulozeneho v subore certifikaty/autorita/autorita_ecc.der
memset(pem_autorita, 0, sizeof(pem_autorita)); printf("Nacitavanie certifikatu autority zo suboru.\n");
FILE* subor = fopen("../certifikaty/autorita_ecc.key", "rb"); FILE* subor = fopen("../certifikaty/autorita/autorita_ecc.der", "rb");
pem_autorita_velkost = fread(pem_autorita, 1, VELKOST_BUFFERA , subor); der_autorita_certifikat_velkost = fread(der_autorita_certifikat, 1, VELKOST_BUFFERA , subor);
if(pem_autorita_velkost < 0) if(der_autorita_certifikat_velkost < 0)
{ {
fprintf(stderr, "Nepodarilo sa nacitat obsah suboru\n"); fprintf(stderr, "Nepodarilo sa nacitat obsah suboru. \n");
return -1;
} }
fclose(subor); fclose(subor);
word32 index = 0; //nastavi odkial zacat citat buffer printf("Nacitanie ukoncene. Bolo nacitanych %d bajtov.\n", der_autorita_certifikat_velkost);
der_autorita_velkost = wolfSSL_KeyPemToDer(pem_autorita, sizeof(pem_autorita), der_autorita, sizeof(der_autorita), "");
wc_EccPrivateKeyDecode(der_autorita, &index, &kluc_autorita, der_autorita_velkost); //vytvorenie struktury ecc_key autority zo sukromneho kluca vo formate DER ulozeneho v subore certifikaty/autorita/autorita_kluc_ecc.der
ecc_key* k = &kluc_autorita; printf("Nacitavanie sukromneho kluca autority zo suboru.\n");
if (k == NULL) subor = fopen("../certifikaty/autorita/autorita_kluc_ecc.der", "rb");
der_autorita_kluc_velkost = fread(der_autorita_kluc, 1, VELKOST_BUFFERA , subor);
if(der_autorita_kluc_velkost < 0)
{ {
fprintf(stderr, "Nepodarilo sa vytvorit ecc_key strukturu z kluca autority\n"); fprintf(stderr, "Nepodarilo sa nacitat obsah suboru. \n");
return -1;
}
fclose(subor);
printf("Nacitanie ukoncene. Bolo nacitanych %d bajtov.\n", der_autorita_kluc_velkost);
word32 index = 0; //nastavi odkial zacat citat buffer
wc_ecc_init(&kluc_autorita);
uspech = wc_EccPrivateKeyDecode(der_autorita_kluc, &index, &kluc_autorita, (word32)der_autorita_kluc_velkost);
if(uspech != 0)
{
fprintf(stderr, "Chyba pri dekodovani kluca autority.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
@ -227,25 +253,27 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
fprintf(stderr, "Chyba pri generovani kluca.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech)); fprintf(stderr, "Chyba pri generovani kluca.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_kluc_velkost = wc_EccKeyToDer(&kluc, der_kluc, sizeof(der_kluc)); uspech = wc_EccKeyToDer(&kluc, der_kluc, sizeof(der_kluc));
if(der_kluc_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER so sukromnym klucom.\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER so sukromnym klucom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
pem_kluc_velkost = wc_DerToPem(der_kluc, der_kluc_velkost, pem_kluc, sizeof(pem_kluc), ECC_PRIVATEKEY_TYPE); der_kluc_velkost = uspech;
if(pem_kluc_velkost < 0) uspech = wc_DerToPem(der_kluc, der_kluc_velkost, pem_kluc, sizeof(pem_kluc), ECC_PRIVATEKEY_TYPE);
if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so sukromnym klucom\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so sukromnym klucom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
pem_kluc_velkost = uspech;
//zapis vygenerovaneho kluca do suboru //zapis vygenerovaneho kluca do suboru
subor = fopen("../certifikaty/vygenerovany_kluc.key", "wb"); subor = fopen("../certifikaty/vygenerovany_kluc.key", "wb");
fwrite(pem_kluc, 1, pem_kluc_velkost, subor); fwrite(pem_kluc, 1, pem_kluc_velkost, subor);
fclose(subor); fclose(subor);
printf("ECC kluc bol uspesne vygenerovany a nacitany.\n"); printf("ECC kluc bol uspesne vygenerovany.\n");
//premenne pre ukladanie dat certifikatu //premenne pre ukladanie dat certifikatu
Cert certifikat; Cert certifikat;
@ -266,31 +294,33 @@ 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_SetIssuerBuffer(&certifikat, der_autorita_certifikat, der_autorita_certifikat_velkost);
if(uspech != 0) if(uspech != 0)
{ {
fprintf(stderr, "Nastala chyba pri nastaveni autority.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech)); fprintf(stderr, "Nastala chyba pri nastaveni autority.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_certifikat_velkost = wc_MakeCert(&certifikat, der_certifikat, sizeof(der_certifikat), NULL, &kluc, &generator); uspech = wc_MakeCert(&certifikat, der_certifikat, sizeof(der_certifikat), NULL, &kluc, &generator);
if(der_certifikat_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER s certifikatom.\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER s certifikatom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_certifikat_velkost = wc_SignCert(certifikat.bodySz, certifikat.sigType, der_certifikat, sizeof(der_certifikat), NULL, &kluc_autorita, &generator); uspech = wc_SignCert(certifikat.bodySz, certifikat.sigType, der_certifikat, sizeof(der_certifikat), NULL, &kluc_autorita, &generator);
if(der_certifikat_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri podpisovani certifikatu.\n"); fprintf(stderr, "Nastala chyba pri podpisovani certifikatu.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
der_certifikat_velkost = uspech;
memset(pem_certifikat, 0, sizeof(pem_certifikat)); memset(pem_certifikat, 0, sizeof(pem_certifikat));
pem_certifikat_velkost = wc_DerToPem(der_certifikat, der_certifikat_velkost, pem_certifikat, sizeof(pem_certifikat), CERT_TYPE); uspech = wc_DerToPem(der_certifikat, der_certifikat_velkost, pem_certifikat, sizeof(pem_certifikat), CERT_TYPE);
if(pem_certifikat_velkost < 0) if(uspech < 0)
{ {
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM s certifikatom.\n"); fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM s certifikatom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1; return -1;
} }
pem_certifikat_velkost = uspech;
//zapis vygenerovaneho klucu do suboru //zapis vygenerovaneho klucu do suboru
subor = fopen("../certifikaty/vygenerovany_certifikat.pem", "wb"); subor = fopen("../certifikaty/vygenerovany_certifikat.pem", "wb");
@ -300,6 +330,160 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
return 0; return 0;
} }
int vygenerovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
{
int uspech = 0;
//generator nahodnych cisel
WC_RNG generator;
wc_InitRng(&generator);
//premenne pre ukladanie dat vygenerovaneho kluca
RsaKey kluc;
byte der_kluc[VELKOST_BUFFERA];
word32 der_kluc_velkost;
byte pem_kluc[VELKOST_BUFFERA];
word32 pem_kluc_velkost;
//vygenerovanie kluca
wc_InitRsaKey(&kluc, 0);
uspech = wc_MakeRsaKey(&kluc, pocet_bitov, exponent, &generator);
if(uspech != 0)
{
fprintf(stderr, "Chyba pri generovani kluca.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
uspech = wc_RsaKeyToDer(&kluc, der_kluc, sizeof(der_kluc));
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER so sukromnym klucom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
der_kluc_velkost = uspech;
memset(pem_kluc, 0, sizeof(pem_kluc));
pem_kluc_velkost = wc_DerToPem(der_kluc, der_kluc_velkost, pem_kluc, sizeof(pem_kluc), PRIVATEKEY_TYPE);
if(pem_kluc_velkost < 0)
{
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so sukromnym klucom\n");
return -1;
}
//premenne pre ukladanie dat ziadosti
Cert ziadost;
byte der_ziadost[VELKOST_BUFFERA];
word32 der_ziadost_velkost;
byte pem_ziadost[VELKOST_BUFFERA];
word32 pem_ziadost_velkost;
//vygenerovanie a podpis ziadosti
wc_InitCert(&ziadost);
strncpy(ziadost.subject.country, krajina, CTC_NAME_SIZE);
strncpy(ziadost.subject.state, "-", CTC_NAME_SIZE);
strncpy(ziadost.subject.locality, mesto, CTC_NAME_SIZE);
strncpy(ziadost.subject.org, "-", CTC_NAME_SIZE);
strncpy(ziadost.subject.unit, "-", CTC_NAME_SIZE);
strncpy(ziadost.subject.commonName, domena, CTC_NAME_SIZE);
strncpy(ziadost.subject.email, email, CTC_NAME_SIZE);
ziadost.sigType = algoritmus;
uspech = wc_MakeCertReq(&ziadost, der_ziadost, sizeof(der_ziadost), &kluc, NULL);
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri generovani ziadosti.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
uspech = wc_SignCert(ziadost.bodySz, ziadost.sigType, der_ziadost, sizeof(der_ziadost), &kluc, NULL, &generator);
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri podpisovani ziadosti.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
der_ziadost_velkost = uspech;
memset(pem_ziadost, 0, sizeof(pem_ziadost));
uspech = wc_DerToPem(der_ziadost, der_ziadost_velkost, pem_ziadost, sizeof(pem_ziadost), CERTREQ_TYPE);
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
}
int vygenerovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email)
{
int uspech = 0;
//generator nahodnych cisel
WC_RNG generator;
wc_InitRng(&generator);
//premenne pre ukladanie dat vygenerovaneho kluca
ecc_key kluc;
byte der_kluc[VELKOST_BUFFERA];
word32 der_kluc_velkost;
byte pem_kluc[VELKOST_BUFFERA];
word32 pem_kluc_velkost;
//vygenerovanie kluca
wc_ecc_init(&kluc);
uspech = wc_ecc_make_key_ex(&generator, pocet_bitov, &kluc, kluc_krivka);
if(uspech != 0)
{
fprintf(stderr, "Chyba pri generovani kluca.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
uspech = wc_EccKeyToDer(&kluc, der_kluc, sizeof(der_kluc));
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri vytvoreni suboru DER so sukromnym klucom.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
der_kluc_velkost = uspech;
memset(pem_kluc, 0, sizeof(pem_kluc));
pem_kluc_velkost = wc_DerToPem(der_kluc, der_kluc_velkost, pem_kluc, sizeof(pem_kluc), ECC_PRIVATEKEY_TYPE);
if(pem_kluc_velkost < 0)
{
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so sukromnym klucom\n");
return -1;
}
//premenne pre ukladanie dat ziadosti
Cert ziadost;
byte der_ziadost[VELKOST_BUFFERA];
word32 der_ziadost_velkost;
byte pem_ziadost[VELKOST_BUFFERA];
word32 pem_ziadost_velkost;
//vygenerovanie a podpis ziadosti
wc_InitCert(&ziadost);
strncpy(ziadost.subject.country, krajina, CTC_NAME_SIZE);
strncpy(ziadost.subject.state, "-", CTC_NAME_SIZE);
strncpy(ziadost.subject.locality, mesto, CTC_NAME_SIZE);
strncpy(ziadost.subject.org, "-", CTC_NAME_SIZE);
strncpy(ziadost.subject.unit, "-", CTC_NAME_SIZE);
strncpy(ziadost.subject.commonName, domena, CTC_NAME_SIZE);
strncpy(ziadost.subject.email, email, CTC_NAME_SIZE);
ziadost.sigType = algoritmus;
uspech = wc_MakeCertReq(&ziadost, der_ziadost, sizeof(der_ziadost), NULL, &kluc);
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri generovani ziadosti.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
uspech = wc_SignCert(ziadost.bodySz, ziadost.sigType, der_ziadost, sizeof(der_ziadost), NULL, &kluc, &generator);
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri podpisovani ziadosti.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
der_ziadost_velkost = uspech;
memset(pem_ziadost, 0, sizeof(pem_ziadost));
uspech = wc_DerToPem(der_ziadost, der_ziadost_velkost, pem_ziadost, sizeof(pem_ziadost), CERTREQ_TYPE);
if(uspech < 0)
{
fprintf(stderr, "Nastala chyba pri vytvoreni suboru PEM so ziadostou.\nCislo chyby: %d\nDovod chyby: %s\n", uspech, wc_GetErrorString(uspech));
return -1;
}
}
int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const char* subor_kluc) int nacitat_certifikaty(WOLFSSL_CTX* ctx, const char* subor_certifikat, const char* subor_kluc)
{ {
int uspech = 0; int uspech = 0;
@ -342,7 +526,7 @@ void zobraz_certifikat(WOLFSSL* ssl)
} }
if ((pole = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_subject_name(certifikat), 0, 0))) if ((pole = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_subject_name(certifikat), 0, 0)))
{ {
printf("Nazov domeny: %s\n", pole); printf("Subjekt: %s\n", pole);
//wolfSSL_free(line); //wolfSSL_free(line);
} }
if ((pole = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(certifikat), 0, 0))) if ((pole = wolfSSL_X509_NAME_oneline(wolfSSL_X509_get_issuer_name(certifikat), 0, 0)))
@ -353,17 +537,87 @@ void zobraz_certifikat(WOLFSSL* ssl)
X509_free(certifikat); X509_free(certifikat);
} }
byte* generovat_hash(char* cesta) byte* generovat_kontrolny_sucet_suboru(hashovacia_funkcia funkcia, char* cesta, int* velkost)
{ {
int pocet_bajtov; int pocet_bajtov;
FILE* subor = fopen(cesta, "rb"); FILE* subor = fopen(cesta, "rb");
unsigned char data[1024]; unsigned char data[1024];
byte* vysledok = calloc(SHA_DIGEST_SIZE, sizeof(byte)); byte* vysledok;
Sha sha; if(funkcia == funkcia_SHA)
wc_InitSha(&sha); {
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0) *velkost = SHA_DIGEST_SIZE;
wc_ShaUpdate(&sha, data, pocet_bajtov); vysledok = calloc(SHA_DIGEST_SIZE, sizeof(byte));
wc_ShaFinal(&sha, vysledok); Sha sha;
wc_InitSha(&sha);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_ShaUpdate(&sha, data, pocet_bajtov);
wc_ShaFinal(&sha, vysledok);
}
else if(funkcia == funkcia_SHA224)
{
*velkost = SHA224_DIGEST_SIZE;
vysledok = calloc(SHA224_DIGEST_SIZE, sizeof(byte));
Sha224 sha;
wc_InitSha224(&sha);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_Sha224Update(&sha, data, pocet_bajtov);
wc_Sha224Final(&sha, vysledok);
}
else if(funkcia == funkcia_SHA256)
{
*velkost = SHA256_DIGEST_SIZE;
byte* vysledok = calloc(SHA256_DIGEST_SIZE, sizeof(byte));
Sha256 sha;
wc_InitSha256(&sha);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_Sha256Update(&sha, data, pocet_bajtov);
wc_Sha256Final(&sha, vysledok);
}
else if(funkcia == funkcia_SHA384)
{
*velkost = SHA384_DIGEST_SIZE;
vysledok = calloc(SHA384_DIGEST_SIZE, sizeof(byte));
Sha384 sha;
wc_InitSha384(&sha);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_Sha384Update(&sha, data, pocet_bajtov);
wc_Sha384Final(&sha, vysledok);
}
else if(funkcia == funkcia_SHA512)
{
*velkost = WC_SHA512_DIGEST_SIZE;
vysledok = calloc(WC_SHA512_DIGEST_SIZE, sizeof(byte));
wc_Sha512 sha;
wc_InitSha512(&sha);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_Sha512Update(&sha, data, pocet_bajtov);
wc_Sha512Final(&sha, vysledok);
}
else if(funkcia == funkcia_BLAKE2B)
{
*velkost = 64;
vysledok = calloc(64, sizeof(byte));
Blake2b b2b;
wc_InitBlake2b(&b2b, 64);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_Blake2bUpdate(&b2b, data, pocet_bajtov);
wc_Blake2bFinal(&b2b, vysledok, 64);
}
else if(funkcia == funkcia_RIPEMD160)
{
*velkost = RIPEMD_DIGEST_SIZE;
vysledok = calloc(RIPEMD_DIGEST_SIZE, sizeof(byte));
RipeMd ripemd;
wc_InitRipeMd(&ripemd);
while ((pocet_bajtov = fread (data, 1, 1024, subor)) != 0)
wc_RipeMdUpdate(&ripemd, data, pocet_bajtov);
wc_RipeMdFinal(&ripemd, vysledok);
}
else
{
fprintf(stderr, "Nespravny nazov hashovacej funkcie.\n");
exit(0);
}
return vysledok; return vysledok;
} }

View File

@ -17,15 +17,27 @@
#include <wolfssl/wolfcrypt/asn_public.h> #include <wolfssl/wolfcrypt/asn_public.h>
#include <wolfssl/wolfcrypt/error-crypt.h> #include <wolfssl/wolfcrypt/error-crypt.h>
#include <wolfssl/wolfcrypt/sha.h> #include <wolfssl/wolfcrypt/sha.h>
#include <wolfssl/wolfcrypt/sha256.h>
#include <wolfssl/wolfcrypt/sha512.h>
#include <wolfssl/wolfcrypt/ripemd.h>
#include <wolfssl/wolfcrypt/blake2.h>
#define VELKOST_BUFFERA 4096 #define VELKOST_BUFFERA 4096
typedef enum hashovacia_funkcia {
funkcia_SHA, funkcia_SHA224, funkcia_SHA256, funkcia_SHA384, funkcia_SHA512,
funkcia_BLAKE2B, funkcia_RIPEMD160
}hashovacia_funkcia;
/** /**
* 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
* @parameter char* funkcia : nazov funkcie pre vypocet kontrolneho suctu
* @parameter char* cesta : lokacia suboru * @parameter char* cesta : lokacia suboru
* @parameter int* velkost : uklada velkost kontrolneho suctu, ktoreho hodnota sa dynamicky priradi
* na zaklade nazvu funkcie uvedenom v prvom argumente
* @vrati smernik na vygenerovany hash * @vrati smernik na vygenerovany hash
*/ */
byte* generovat_hash(char* cesta); byte* generovat_kontrolny_sucet_suboru(hashovacia_funkcia funkcia, char* cesta, int* velkost);
/** /**
* generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority, * generovat_ecc_certifikat: realizuje vygenerovania sukromneho kluca, nacitanie sukromneho kluca autority,
@ -47,6 +59,25 @@ int generovat_ecc_certifikat(int pocet_bitov, ecc_curve_id kluc_krivka, int algo
*/ */
int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email); int generovat_rsa_certifikat(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
/**
* generovat_rsa_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti
* @parameter int pocet_bitov : velkost kluca
* @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
*/
int generovat_rsa_ziadost(int pocet_bitov, int exponent, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
/**
* generovat_ecc_ziadost: realizuje vygenerovania sukromneho kluca, vygenerovanie a podpis ziadosti
* @parameter int pocet_bitov : velkost kluca
* @parameter ecc-curve_id kluc_krivka: kod krivky pre generovanie sukromneho kluca
* @parameter int algoritmus: kod algoritmu, sluziaceho na vymenu klucov
* @vrati int: operacia bola uspesna(0), neuspesna(-1)
*/
int generovat_ecc_ziadost(int pocet_bitov, ecc_curve_id kluc_krivka, int algoritmus, char* krajina, char* mesto, char* domena, char* email);
/** /**
* nastav_ctx_klient : realizuje vytvorenie a inicializaciu CTX struktury * nastav_ctx_klient : realizuje vytvorenie a inicializaciu CTX struktury
* na zaklade verzie tls (client method) * na zaklade verzie tls (client method)

Binary file not shown.

Binary file not shown.

View File

@ -11,28 +11,42 @@ CC = gcc
#prepinace pre prekladac #prepinace pre prekladac
CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/ CFLAGS = -Wcpp -I./../wolfssl_hlavickove_subory/
LIB32 = -L. -lwolfssl -lws2_32 -Os LIB = -L. -lwolfssl
LIB64 = -L. -lwolfssl -lws2_32 -m64
ifeq ($(OS), Windows_NT)
LIB += -lws2_32
ifeq ($(PROCESSOR_ARCHITECTURE), AMD64)
LIB += -m64
endif
ifeq ($(PROCESSOR_ARCHITECTURE), x86)
LIB += -Os
endif
else
UNAME_S := $(shell uname -s)
ifeq ($(UNAME_S), Linux)
LIB +=
endif
endif
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 $(LIB64) $(CC) $(CFLAGS) -o klient klient.o kryptografia.o komunikacia.o $(LIB)
server: server.o kryptografia.o komunikacia.o server: server.o kryptografia.o komunikacia.o
$(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o $(LIB64) $(CC) $(CFLAGS) -o server server.o kryptografia.o komunikacia.o $(LIB)
klient.o: klient.c klient.o: klient.c
$(CC) $(CFLAGS) -c klient.c $(LIB64) $(CC) $(CFLAGS) -c klient.c $(LIB)
server.o: server.c server.o: server.c
$(CC) $(CFLAGS) -c server.c $(LIB64) $(CC) $(CFLAGS) -c server.c $(LIB)
kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h kryptografia.o: ../kniznica/kryptografia.c ../kniznica/kryptografia.h
$(CC) $(CFLAGS) -c ../kniznica/kryptografia.c $(LIB64) $(CC) $(CFLAGS) -c ../kniznica/kryptografia.c $(LIB)
komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h komunikacia.o: ../kniznica/komunikacia.c ../kniznica/komunikacia.h
$(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB64) $(CC) $(CFLAGS) -c ../kniznica/komunikacia.c $(LIB)
.PHONY: clean .PHONY: clean

View File

@ -15,8 +15,17 @@
#define ECC_VELKOST 32 #define ECC_VELKOST 32
#define RSA_EXPONENT 65537 #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"
int main(int argc, char** argv) int main(int argc, char** argv)
{ {
int uspech;
int generovanie_certifikatu = 0; int generovanie_certifikatu = 0;
int nacitanie_zo_suboru = 0; int nacitanie_zo_suboru = 0;
int uvedeny_subor = 0; int uvedeny_subor = 0;
@ -104,19 +113,13 @@ int main(int argc, char** argv)
} }
else if(!strcmp(argv[i+1], "rsa")) else if(!strcmp(argv[i+1], "rsa"))
{ {
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_rsa.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_rsa.pem", NULL);
subor_certifikat = "../certifikaty/klient_rsa.pem"; if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/klient_rsa.key";
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/autorita_ecc.pem", NULL);
subor_certifikat = "../certifikaty/klient_ecc.pem"; if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/klient_ecc.key";
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
} }
else else
{ {
@ -136,20 +139,15 @@ int main(int argc, char** argv)
{ {
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", "local.dev", "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"; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/vygenerovany_kluc.key"; wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
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/autorita_ecc.pem", NULL);
if(generovat_ecc_certifikat(ECC_VELKOST, ECC_SECP256R1, CTC_SHAwECDSA, "SR", "Kosice", "local.dev", "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"; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/vygenerovany_kluc.key"; wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0);
if(nacitat_certifikaty(ctx, subor_certifikat, subor_kluc) == -1) return -1;
wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, 0);
} }
else else
{ {
@ -202,6 +200,7 @@ int main(int argc, char** argv)
} }
zobraz_sifru(ssl); zobraz_sifru(ssl);
zobraz_certifikat(ssl); zobraz_certifikat(ssl);
nastav_funkciu(funkcia_BLAKE2B);
if(poslat_subor(ssl, ctx, subor) == -1) return -1; if(poslat_subor(ssl, ctx, subor) == -1) return -1;
ukoncit_spojenie(ssl, ctx); ukoncit_spojenie(ssl, ctx);
} }

View File

@ -15,6 +15,14 @@
#define ECC_VELKOST 32 #define ECC_VELKOST 32
#define RSA_EXPONENT 65537 #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"
int main(int argc, char **argv) int main(int argc, char **argv)
{ {
@ -34,8 +42,6 @@ int main(int argc, char **argv)
int cislo_soketu; int cislo_soketu;
int cislo_portu = 0; int cislo_portu = 0;
const char *subor_certifikat = NULL;
const char *subor_kluc = NULL;
WOLFSSL_CTX* ctx; WOLFSSL_CTX* ctx;
if((ctx = nastavit_ctx_server()) == NULL) if((ctx = nastavit_ctx_server()) == NULL)
@ -76,20 +82,16 @@ 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/autorita_rsa.pem", NULL);
subor_certifikat = "../certifikaty/server_rsa.pem"; if(nacitat_certifikaty(ctx, RSA_CERTIFIKAT, RSA_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/server_rsa.key";
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); 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"); printf("jo\n");
wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita_ecc.pem", NULL); wolfSSL_CTX_load_verify_locations(ctx, "../certifikaty/autorita/autorita_ecc.pem", NULL);
subor_certifikat = "../certifikaty/server_ecc.pem"; if(nacitat_certifikaty(ctx, ECC_CERTIFIKAT, ECC_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/server_ecc.key";
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); wolfSSL_CTX_set_verify(ctx, SSL_VERIFY_PEER | SSL_VERIFY_FAIL_IF_NO_PEER_CERT, 0);
} }
@ -114,24 +116,16 @@ 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/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(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"; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/vygenerovany_kluc.key";
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/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(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"; if(nacitat_certifikaty(ctx, VYGENEROVANY_CERTIFIKAT, VYGENEROVANY_KLUC) == -1) return -1;
subor_kluc = "../certifikaty/vygenerovany_kluc.key";
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
{ {
@ -180,6 +174,7 @@ int main(int argc, char **argv)
} }
zobraz_sifru(ssl); zobraz_sifru(ssl);
zobraz_certifikat(ssl); zobraz_certifikat(ssl);
nastav_funkciu(funkcia_BLAKE2B);
prijat_subor(ssl, ctx); prijat_subor(ssl, ctx);
} }
} }

Binary file not shown.

Binary file not shown.

Binary file not shown.

View File

@ -344,12 +344,10 @@ 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);

View File

@ -28,8 +28,6 @@
#include <wolfssl/wolfcrypt/settings.h> #include <wolfssl/wolfcrypt/settings.h>
#if defined(HAVE_BLAKE2) || defined(HAVE_BLAKE2S)
#include <wolfssl/wolfcrypt/blake2-int.h> #include <wolfssl/wolfcrypt/blake2-int.h>
/* call old functions if using fips for the sake of hmac @wc_fips */ /* call old functions if using fips for the sake of hmac @wc_fips */
@ -46,10 +44,8 @@
/* in bytes, variable digest size up to 512 bits (64 bytes) */ /* in bytes, variable digest size up to 512 bits (64 bytes) */
enum { enum {
#ifdef HAVE_BLAKE2B
BLAKE2B_ID = WC_HASH_TYPE_BLAKE2B, BLAKE2B_ID = WC_HASH_TYPE_BLAKE2B,
BLAKE2B_256 = 32, /* 256 bit type, SSL default */ BLAKE2B_256 = 32, /* 256 bit type, SSL default */
#endif
#ifdef HAVE_BLAKE2S #ifdef HAVE_BLAKE2S
BLAKE2S_ID = WC_HASH_TYPE_BLAKE2S, BLAKE2S_ID = WC_HASH_TYPE_BLAKE2S,
BLAKE2S_256 = 32 /* 256 bit type */ BLAKE2S_256 = 32 /* 256 bit type */
@ -57,13 +53,11 @@ enum {
}; };
#ifdef HAVE_BLAKE2B
/* BLAKE2b digest */ /* BLAKE2b digest */
typedef struct Blake2b { typedef struct Blake2b {
blake2b_state S[1]; /* our state */ blake2b_state S[1]; /* our state */
word32 digestSz; /* digest size used on init */ word32 digestSz; /* digest size used on init */
} Blake2b; } Blake2b;
#endif
#ifdef HAVE_BLAKE2S #ifdef HAVE_BLAKE2S
/* BLAKE2s digest */ /* BLAKE2s digest */
@ -74,11 +68,9 @@ typedef struct Blake2s {
#endif #endif
#ifdef HAVE_BLAKE2B
WOLFSSL_API int wc_InitBlake2b(Blake2b*, word32); WOLFSSL_API int wc_InitBlake2b(Blake2b*, word32);
WOLFSSL_API int wc_Blake2bUpdate(Blake2b*, const byte*, word32); WOLFSSL_API int wc_Blake2bUpdate(Blake2b*, const byte*, word32);
WOLFSSL_API int wc_Blake2bFinal(Blake2b*, byte*, word32); WOLFSSL_API int wc_Blake2bFinal(Blake2b*, byte*, word32);
#endif
#ifdef HAVE_BLAKE2S #ifdef HAVE_BLAKE2S
WOLFSSL_API int wc_InitBlake2s(Blake2s*, word32); WOLFSSL_API int wc_InitBlake2s(Blake2s*, word32);
@ -91,6 +83,5 @@ WOLFSSL_API int wc_Blake2sFinal(Blake2s*, byte*, word32);
} }
#endif #endif
#endif /* HAVE_BLAKE2 || HAVE_BLAKE2S */
#endif /* WOLF_CRYPT_BLAKE2_H */ #endif /* WOLF_CRYPT_BLAKE2_H */

View File

@ -68,7 +68,7 @@ enum {
IPAD = 0x36, IPAD = 0x36,
OPAD = 0x5C, OPAD = 0x5C,
/* If any hash is not enabled, add the ID here. */ /* If any hash is not enabled, add the ID here.
#ifdef NO_MD5 #ifdef NO_MD5
WC_MD5 = WC_HASH_TYPE_MD5, WC_MD5 = WC_HASH_TYPE_MD5,
#endif #endif
@ -93,6 +93,7 @@ enum {
WC_SHA3_384 = WC_HASH_TYPE_SHA3_384, WC_SHA3_384 = WC_HASH_TYPE_SHA3_384,
WC_SHA3_512 = WC_HASH_TYPE_SHA3_512, WC_SHA3_512 = WC_HASH_TYPE_SHA3_512,
#endif #endif
*/
#ifdef HAVE_PKCS11 #ifdef HAVE_PKCS11
HMAC_MAX_ID_LEN = 32, HMAC_MAX_ID_LEN = 32,
#endif #endif

View File

@ -28,8 +28,6 @@
#include <wolfssl/wolfcrypt/types.h> #include <wolfssl/wolfcrypt/types.h>
#ifdef WOLFSSL_RIPEMD
#ifdef __cplusplus #ifdef __cplusplus
extern "C" { extern "C" {
#endif #endif
@ -63,5 +61,4 @@ WOLFSSL_API int wc_RipeMdFinal(RipeMd*, byte*);
} /* extern "C" */ } /* extern "C" */
#endif #endif
#endif /* WOLFSSL_RIPEMD */
#endif /* WOLF_CRYPT_RIPEMD_H */ #endif /* WOLF_CRYPT_RIPEMD_H */

View File

@ -202,7 +202,6 @@ WOLFSSL_API void wc_Sha256SizeSet(wc_Sha256*, word32);
WOLFSSL_API int wc_Sha256GetFlags(wc_Sha256* sha256, word32* flags); WOLFSSL_API int wc_Sha256GetFlags(wc_Sha256* sha256, word32* flags);
#endif #endif
#ifdef WOLFSSL_SHA224
/* avoid redefinition of structs */ /* avoid redefinition of structs */
#if !defined(HAVE_FIPS) || \ #if !defined(HAVE_FIPS) || \
(defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)) (defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2))
@ -244,8 +243,6 @@ WOLFSSL_API int wc_Sha224Copy(wc_Sha224* src, wc_Sha224* dst);
WOLFSSL_API int wc_Sha224GetFlags(wc_Sha224* sha224, word32* flags); WOLFSSL_API int wc_Sha224GetFlags(wc_Sha224* sha224, word32* flags);
#endif #endif
#endif /* WOLFSSL_SHA224 */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif

View File

@ -29,8 +29,6 @@
#include <wolfssl/wolfcrypt/types.h> #include <wolfssl/wolfcrypt/types.h>
#if defined(WOLFSSL_SHA512) || defined(WOLFSSL_SHA384)
#if defined(HAVE_FIPS) && \ #if defined(HAVE_FIPS) && \
defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2) defined(HAVE_FIPS_VERSION) && (HAVE_FIPS_VERSION >= 2)
#include <wolfssl/wolfcrypt/fips.h> #include <wolfssl/wolfcrypt/fips.h>
@ -151,7 +149,6 @@ WOLFSSL_LOCAL void Transform_Sha512_Len(wc_Sha512* sha512, const byte* data,
word32 len); word32 len);
#endif #endif
#ifdef WOLFSSL_SHA512
WOLFSSL_API int wc_InitSha512(wc_Sha512*); WOLFSSL_API int wc_InitSha512(wc_Sha512*);
WOLFSSL_API int wc_InitSha512_ex(wc_Sha512*, void*, int); WOLFSSL_API int wc_InitSha512_ex(wc_Sha512*, void*, int);
@ -168,9 +165,6 @@ WOLFSSL_API int wc_Sha512Copy(wc_Sha512* src, wc_Sha512* dst);
WOLFSSL_API int wc_Sha512GetFlags(wc_Sha512* sha512, word32* flags); WOLFSSL_API int wc_Sha512GetFlags(wc_Sha512* sha512, word32* flags);
#endif #endif
#endif /* WOLFSSL_SHA512 */
#if defined(WOLFSSL_SHA384)
/* avoid redefinition of structs */ /* avoid redefinition of structs */
#if !defined(HAVE_FIPS) || \ #if !defined(HAVE_FIPS) || \
@ -217,12 +211,9 @@ WOLFSSL_API int wc_Sha384Copy(wc_Sha384* src, wc_Sha384* dst);
WOLFSSL_API int wc_Sha384GetFlags(wc_Sha384* sha384, word32* flags); WOLFSSL_API int wc_Sha384GetFlags(wc_Sha384* sha384, word32* flags);
#endif #endif
#endif /* WOLFSSL_SHA384 */
#ifdef __cplusplus #ifdef __cplusplus
} /* extern "C" */ } /* extern "C" */
#endif #endif
#endif /* WOLFSSL_SHA512 || WOLFSSL_SHA384 */
#endif /* WOLF_CRYPT_SHA512_H */ #endif /* WOLF_CRYPT_SHA512_H */