Tento priečinok obsahuje detailný postup inštalácie potrebných knižníc na sprístupnenie PQ algoritmov v OpenSSL 3.2 a vzorové aplikácie klienta a serveru, ktoré využívajú PQ algoritmy pri štandardnej TCP/IP komunikácii s využitím protokolu TLS 1.3.
- zo stránky [WinLibs GCC](https://winlibs.com) stiahneme .zip archív, rozbalíme ho a skopírujeme celú zložku na nami určené miesto
- prejdeme do *Settings-System-Advanced system settings-Environment Variables-System variables-Path-Edit* a pridáme cestu k priečinku s prekladačom, napríklad: `D:\mingw64\bin\`
- nastaviť cestu k prekladaču môžeme aj úpravou premennej v príkazovom riadku príkazom `SET PATH=\path\;%PATH%`, napríklad `SET PATH=D:\mingw64\bin\;%PATH%`
- v priečinku /bin/ sa nachádza aplikácia *mingw32-make.exe*, ktorú si pre jednoduchšie používanie premenujeme na *make.exe*
- v našom prípade sme využívali predkompilovanú verziu OpenSSL zo stránky [FireDaemon OpenSSL](https://kb.firedaemon.com/support/solutions/articles/4000121705)
- nastavíme cestu k aplikácii OpenSSL a konfiguračnému súboru prostredníctvom konzolových príkazov:
```
set OPENSSL_HOME=C:\Program Files\Common Files\FireDaemon SSL 3
set OPENSSL_CONF=%OPENSSL_HOME%\ssl\openssl.cnf
set PATH=%OPENSSL_HOME%\bin;%PATH%
```
- z priečinku */bin/* skopírujeme súbory *libssl.lib* a *libcrypto.lib* do */lib/* priečinku nášho prekladača, v našom prípade teda do `D:\mingw64\lib\`
- po dokončení inštalácie prejdeme do žložky, kde sme si knižnicu nainštalovali (bez zmeny parameteru CMAKE_INSTALL_PREFIX) ide o zložku *C:\Program Files (x86)\liboqs\*
- oba priečinky *include* a *lib* skopírujeme do zložky s našim gcc prekladačom, teda do *D:\mingw64\*
Poznámka: ak sme OpenSSL umiestnili na iný disk než na aký inštalujeme liboqs, cmake nás informuje, že je nutné definovať premennú `OPENSSL_ROOT_DIR`
Poznámka2: vo vygenerovanom súbore *cmake_install.cmake* sa nachádza premenná `set(CMAKE_INSTALL_PREFIX)`, ktorá umožňuje zmeniť miesto inštalácie celej knižnice
Poznámka3: podľa nastavení systému môžu byť potrebné na vykonanie príkazu `ninja install` administrátorské práva
#### OQS-PROVIDER
- stiahneme .zip súbor knižnice oqs-provider z oficiálneho GITu - [oqsprovider](https://github.com/open-quantum-safe/oqs-provider)
- stiahnutý súbor rozbalíme na nami vybrané miesto
- v súbore *CMakeLists.txt* pridáme na riadok 90 a 91 pred funkcie *enable_testing()* a *add_subdirectory(test)* symbol `#`, ktorým zakomentujeme a nezrealizujeme kompiláciu testov - pri kompilácii testu *oqs_test_tlssig.c* by nám vyskočila chyba, ktorá by spôsobila, že by celá kompilácia knižnice spadla
Poznámka: premennú *OPENSSL_ROOT_DIR* je potrebné definovať ak sme OpenSSL umiestnili na iný disk než na aký inštalujeme oqsprovider, cmake nás informuje či bola manuálne nastavená premenná ignorovaná
Poznámka2: cmake nás môže upozorniť na to, že nenašiel v našom systéme knižnicu liboqs, čo sa môže stať, ak sme pri inštalácii knižnice liboqs zmenili premennú *CMAKE_INSTALL_PREFIX*. CMake nás upozorní na to, že premenná `liboqs_DIR` musí obsahovať cestu k súboru *liboqsTargets.cmake*
Poznámka3: chybu v teste *oqs_test_tlssig.c* môžeme opraviť aj doplnením podmienenej kompilácie pre MINGW64 kompilátor a úpravou problematickej definície funkcie *mkdir*, z ktorej odstránime druhý argument
- po inštalácii všetkých knižníc pridáme do konfiguračného súboru *openssl.cnf* modul, ktorý permanentne aktivuje OQS provider a jeho funkcie pri používani OpenSSL
-`Note: Be sure to always activate the "default" provider`
- v prípade potreby je možné konfiguračný súbor nahradiť súborom z tohto priečinku
```
[provider_sect]
default = default_sect
oqsprovider = oqsprovider_sect
[oqsprovider_sect]
activate = 1
```
- overiť funkčnosť knižníc môžeme príkazom `openssl list -providers`, ktorý by nám mal vrátiť výsledok: