:: CLIENT CERTIFICATE
:: Vygenerovanie sukromneho kluca a certifikatu pre klienta
:: Overenie podpisu vysledneho certifikatu

:: Nasledujuce prikazy su nazorovnou ukazkou toho ako je mozne vygenerovat
:: sukromny kluc a certifikat urceny koncovemu pouzivatelovi - klientovi

:: Tento prikaz je zlozeny z viacerych vstupov a generuje sukromny kluc a certifikat sucasne
:: @-newkey :	nazov algoritmu pouziteho pre generovanie sukromneho kluca, napr. falcon512 alebo dilithium3
:: @-keyout :	cesta k priecinku do ktoreho bude vygenerovany kluc ulozeny
:: @-out    :	cesta k priecinku do ktoreho bude vygenerovany certifikat pre klienta
:: @-subj   :	doplnujuce informacie, ktore musia byt urcene v zavislosti od poziadavok certifikacnej autority
:: 		priklad: -subj "/C=US/ST=California/L=San Francisco/O=Example Corp/OU=IT Department/CN=Root CA"
::		doplnujuce informacie su: C (country), ST (state), L (location), O (organization), OU (organization unit), CN (common name)

openssl req -new -newkey falcon512 -keyout ./myCA/intermediateCA/private/falcon512_client.key -out ./myCA/intermediateCA/csr/falcon512_client.csr -nodes -subj "/CN=www.master-thesis-client.com" 

:: Tento prikaz sluzi na podpis certifikatu
:: Podpis certifikatu je realizovany sukromnym klucom CA ktory je definovany priamo v konfiguracnom subore
:: @-batch 	: automaticke potvrdenie realizacie podpisu, bez tohto prepinacu musi pouzivatel rucne potvrdit operaciu podpisu
:: @-config	: konfiguracny subor pouzity na podpis, okrem sukromneho kluca CA obsahuje aj podmienky pre realizaciu podpisu, napr. pritomnost doplnujucich informacii v certifikate
:: @-extensions : rozsirenie 'client_cert' je modul, ktory je sucastou konfiguracneho suboru a je rovnaky iba pre certifikaty koncovych pouzivatelov, napr. certifikat bude oznaceny ako client/email certificate
:: @-days 	: oznacuje dlzku platnosti podpisu v dnoch
:: @-md 	: pouzity hash
:: @-in 	: cesta k vstupnemu certifikatu ako .csr alebo .crt
:: @-out	: cesta k priecinku do ktoreho bude zapisany podpisany certifikat

openssl ca -batch -config ./myCA/intermediateCA/intermediate.cnf -extensions client_cert -days 375 -notext -md sha256 -in ./myCA/intermediateCA/csr/falcon512_client.csr -out ./myCA/intermediateCA/csr/falcon512_client.crt

:: Posledny prikaz sluzi na overenie podpisu
:: @-CAfile 	: zretazeny certifikat intCA

openssl verify -CAfile .\myCA\intermediateCA\certs\falcon512_certchain.pem ./myCA/intermediateCA/csr/falcon512_client.crt

