add bps project
This commit is contained in:
parent
e05eede82f
commit
41db2659c8
@ -0,0 +1,27 @@
|
|||||||
|
# JS 2024-02-08
|
||||||
|
# - doplnenie rozsirujucich parametrov pre CA certifikaty podla standardu
|
||||||
|
# x509v3, ktory sa v OpenSSL 3.2 vyuzíva by default
|
||||||
|
# - parameter 'basicConstraints = CA:true' musi byt definovany!
|
||||||
|
#
|
||||||
|
# Viac informacii:
|
||||||
|
# https://www.openssl.org/docs/manmaster/man5/x509v3_config.html
|
||||||
|
|
||||||
|
[req]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
x509_extensions = v3_ca
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
C = US
|
||||||
|
ST = Fake State
|
||||||
|
L = Fake Locality
|
||||||
|
O = Fake Company
|
||||||
|
# OU = Org Unit Name
|
||||||
|
# emailAddress = info@example.com
|
||||||
|
CN = local.dev
|
||||||
|
|
||||||
|
[ v3_ca ]
|
||||||
|
basicConstraints = critical, CA:true
|
||||||
|
#subjectKeyIdentifier = hash
|
||||||
|
#authorityKeyIdentifier = keyid:always,issuer
|
||||||
|
#keyUsage = critical, digitalSignature, cRLSign, keyCertSign
|
@ -0,0 +1,8 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = dev.mergebot.com
|
||||||
|
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io
|
@ -0,0 +1,30 @@
|
|||||||
|
:: Meno: Martin Janitor
|
||||||
|
:: Datum: 26.2.2023
|
||||||
|
:: Verzia: 1.0
|
||||||
|
:: Uprava: Modifikacia suboru postup pre uspesne
|
||||||
|
:: generovanie ECC certifikatov s vyuzitim
|
||||||
|
:: predpripravenych konfiguracnych suborov
|
||||||
|
|
||||||
|
|
||||||
|
rem Priklad postupu na vytvorenie ECC certifikatov
|
||||||
|
::----------------------------------------------
|
||||||
|
|
||||||
|
::1. Generovanie certifikatu autority
|
||||||
|
:: 1.1 Vygenerovanie sukromneho kluca autority pomocou krivky prime256v1
|
||||||
|
openssl ecparam -genkey -name prime256v1 -out myCA.key
|
||||||
|
:: 1.2 Vygenerovanie certifikatu autority s dobou platnosti 1 rok
|
||||||
|
openssl req -x509 -config certificate-authority-options.conf -new -nodes -key myCA.key -sha256 -days 365 -out myCA.pem
|
||||||
|
::2. Generovanie certifikatu servera
|
||||||
|
:: 2.1 Vygenerovanie sukromneho kluca servera pomocou krivky prime256v1
|
||||||
|
openssl ecparam -genkey -name prime256v1 -out server.key
|
||||||
|
:: 2.2 Vytvorenie ziadosti servera o podpis certifikatu autoritou
|
||||||
|
openssl req -config options.conf -new -key server.key -out server_ziadost.csr
|
||||||
|
:: 2.3 Vygenerovanie podpisaneho certifikatu autoritou s dobou platnosti 1 rok
|
||||||
|
openssl x509 -req -in server_ziadost.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out server.pem -days 365 -sha256 -extfile server.ext
|
||||||
|
::3. Generovanie certifikatu klienta
|
||||||
|
:: 3.1 Vygenerovanie sukromneho kluca klienta pomocou krivky prime256v1
|
||||||
|
openssl ecparam -genkey -name prime256v1 -out client.key
|
||||||
|
:: 3.2 Vytvorenie ziadosti klienta o podpis certifikatu autoritou
|
||||||
|
openssl req -config options.conf -new -key client.key -out klient_ziadost.csr
|
||||||
|
:: 3.3 Vygenerovanie podpisaneho certifikatu autoritou s dobou platnosti 1 rok
|
||||||
|
openssl x509 -req -in klient_ziadost.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out client.pem -days 365 -sha256 -extfile client.ext
|
@ -0,0 +1,12 @@
|
|||||||
|
[req]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
C = US
|
||||||
|
ST = Fake State
|
||||||
|
L = Fake Locality
|
||||||
|
O = Fake Company
|
||||||
|
# OU = Org Unit Name
|
||||||
|
# emailAddress = info@example.com
|
||||||
|
CN = local.dev
|
@ -0,0 +1,8 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = dev.mergebot.com
|
||||||
|
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io
|
@ -0,0 +1,27 @@
|
|||||||
|
Tento priecinok obsahuje konfiguracne subory spolu so skriptom, ktory umoznuje
|
||||||
|
generovanie PQ algoritmov.
|
||||||
|
|
||||||
|
Na generovanie PQ algoritmov je nutne aktivovat oqsprovidera. Navod na aktivaciu
|
||||||
|
sa nachadza v zlozke /oqsprovider/
|
||||||
|
|
||||||
|
Dostupne PQ algoritmy (20.02.2024)
|
||||||
|
- zalezi tiez na nastaveniach kniznic liboqs a oqs-provider viď https://github.com/open-quantum-safe/oqs-provider/blob/main/ALGORITHMS.md
|
||||||
|
dilithium2
|
||||||
|
dilithium3
|
||||||
|
dilithium5
|
||||||
|
falcon512
|
||||||
|
falcon1024
|
||||||
|
sphincssha2128fsimple
|
||||||
|
sphincssha2128ssimple
|
||||||
|
sphincssha2192fsimple
|
||||||
|
sphincssha2192ssimple
|
||||||
|
sphincssha2256fsimple
|
||||||
|
sphincssha2256ssimple
|
||||||
|
sphincsshake128fsimple
|
||||||
|
|
||||||
|
Nepodporovane algoritmy pri defaultnom nastaveni kniznice
|
||||||
|
sphincsshake128ssimple
|
||||||
|
sphincsshake192fsimple
|
||||||
|
sphincsshake192ssimple
|
||||||
|
sphincsshake256fsimple
|
||||||
|
sphincsshake256ssimple
|
@ -0,0 +1,27 @@
|
|||||||
|
# JS 2024-02-08
|
||||||
|
# - doplnenie rozsirujucich parametrov pre CA certifikaty podla standardu
|
||||||
|
# x509v3, ktory sa v OpenSSL 3.2 vyuzíva by default
|
||||||
|
# - parameter 'basicConstraints = CA:true' musi byt definovany!
|
||||||
|
#
|
||||||
|
# Viac informacii:
|
||||||
|
# https://www.openssl.org/docs/manmaster/man5/x509v3_config.html
|
||||||
|
|
||||||
|
[req]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
x509_extensions = v3_ca
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
C = US
|
||||||
|
ST = Fake State
|
||||||
|
L = Fake Locality
|
||||||
|
O = Fake Company
|
||||||
|
# OU = Org Unit Name
|
||||||
|
# emailAddress = info@example.com
|
||||||
|
CN = local.dev
|
||||||
|
|
||||||
|
[ v3_ca ]
|
||||||
|
basicConstraints = critical, CA:true
|
||||||
|
#subjectKeyIdentifier = hash
|
||||||
|
#authorityKeyIdentifier = keyid:always,issuer
|
||||||
|
#keyUsage = critical, digitalSignature, cRLSign, keyCertSign
|
@ -0,0 +1,8 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = dev.mergebot.com
|
||||||
|
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io
|
@ -0,0 +1,30 @@
|
|||||||
|
:: JS 2024-02-19
|
||||||
|
:: Skript na generovanie PQ certifikatov
|
||||||
|
:: Dostupne PQ algoritmy, ktore je mozne doplnat za prepinac -algorithm, sa nachadzaju v README
|
||||||
|
|
||||||
|
rem myCA
|
||||||
|
rem .....
|
||||||
|
openssl genpkey -algorithm dilithium5 -out myCA.key
|
||||||
|
openssl req -x509 -config certificate-authority-options.conf -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
|
||||||
|
|
||||||
|
rem server
|
||||||
|
rem ......
|
||||||
|
openssl genpkey -algorithm dilithium5 -out client.key
|
||||||
|
openssl req -config options.conf -new -key client.key -out client.csr
|
||||||
|
openssl x509 -req -in client.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out client.pem -days 1825
|
||||||
|
|
||||||
|
rem client
|
||||||
|
rem .......
|
||||||
|
openssl genpkey -algorithm dilithium5 -out server.key
|
||||||
|
openssl req -config options.conf -new -key server.key -out server.csr
|
||||||
|
openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out server.pem -days 1825
|
||||||
|
|
||||||
|
openssl verify -CAfile ./myCA.pem ./client.pem
|
||||||
|
openssl verify -CAfile ./myCA.pem ./server.pem
|
||||||
|
|
||||||
|
del *.csr
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
@ -0,0 +1,12 @@
|
|||||||
|
[req]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
C = US
|
||||||
|
ST = Fake State
|
||||||
|
L = Fake Locality
|
||||||
|
O = Fake Company
|
||||||
|
# OU = Org Unit Name
|
||||||
|
# emailAddress = info@example.com
|
||||||
|
CN = local.dev
|
@ -0,0 +1,8 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = dev.mergebot.com
|
||||||
|
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io
|
@ -0,0 +1,27 @@
|
|||||||
|
# JS 2024-02-08
|
||||||
|
# - doplnenie rozsirujucich parametrov pre CA certifikaty podla standardu
|
||||||
|
# x509v3, ktory sa v OpenSSL 3.2 vyuzíva by default
|
||||||
|
# - parameter 'basicConstraints = CA:true' musi byt definovany!
|
||||||
|
#
|
||||||
|
# Viac informacii:
|
||||||
|
# https://www.openssl.org/docs/manmaster/man5/x509v3_config.html
|
||||||
|
|
||||||
|
[req]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
x509_extensions = v3_ca
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
C = US
|
||||||
|
ST = Fake State
|
||||||
|
L = Fake Locality
|
||||||
|
O = Fake Company
|
||||||
|
# OU = Org Unit Name
|
||||||
|
# emailAddress = info@example.com
|
||||||
|
CN = local.dev
|
||||||
|
|
||||||
|
[ v3_ca ]
|
||||||
|
basicConstraints = critical, CA:true
|
||||||
|
#subjectKeyIdentifier = hash
|
||||||
|
#authorityKeyIdentifier = keyid:always,issuer
|
||||||
|
#keyUsage = critical, digitalSignature, cRLSign, keyCertSign
|
@ -0,0 +1,8 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = dev.mergebot.com
|
||||||
|
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io
|
@ -0,0 +1,24 @@
|
|||||||
|
:: JS 2024-02-08
|
||||||
|
:: Zmena velkosti klucov z 1024 ma 2048 podla novych standardov OpenSSL 3.2
|
||||||
|
:: OpenSSL 3.2: The default SSL/TLS security level has been changed from 1 to 2
|
||||||
|
:: https://www.openssl.org/docs/man3.1/man3/SSL_CTX_set_security_level.html
|
||||||
|
|
||||||
|
|
||||||
|
rem myCA
|
||||||
|
rem .....
|
||||||
|
openssl genrsa -out myCA.key 2048
|
||||||
|
openssl req -x509 -config certificate-authority-options.conf -new -nodes -key myCA.key -sha256 -days 1825 -out myCA.pem
|
||||||
|
|
||||||
|
rem server
|
||||||
|
rem ......
|
||||||
|
openssl genrsa -out server.key 2048
|
||||||
|
openssl req -config options.conf -new -key server.key -out server.csr
|
||||||
|
openssl x509 -req -in server.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out server.pem -days 1825 -sha256 -extfile server.ext
|
||||||
|
|
||||||
|
rem client
|
||||||
|
rem .......
|
||||||
|
openssl genrsa -out client.key 2048
|
||||||
|
openssl req -config options.conf -new -key client.key -out client.csr
|
||||||
|
openssl x509 -req -in client.csr -CA myCA.pem -CAkey myCA.key -CAcreateserial -out client.pem -days 1825 -sha256 -extfile client.ext
|
||||||
|
|
||||||
|
del *.csr
|
@ -0,0 +1,12 @@
|
|||||||
|
[req]
|
||||||
|
prompt = no
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
|
||||||
|
[req_distinguished_name]
|
||||||
|
C = US
|
||||||
|
ST = Fake State
|
||||||
|
L = Fake Locality
|
||||||
|
O = Fake Company
|
||||||
|
# OU = Org Unit Name
|
||||||
|
# emailAddress = info@example.com
|
||||||
|
CN = local.dev
|
@ -0,0 +1,8 @@
|
|||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
|
||||||
|
subjectAltName = @alt_names
|
||||||
|
|
||||||
|
[alt_names]
|
||||||
|
DNS.1 = dev.mergebot.com
|
||||||
|
DNS.2 = dev.mergebot.com.192.168.1.19.xip.io
|
@ -0,0 +1,385 @@
|
|||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.6.0
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-03-04 - doplnenie funkcii pre uvolnenie nacitanych providerov
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
JS 2024-02-24 - funkcia initSSLContext() rozsirena o nacitanie OQS-providera
|
||||||
|
pre plne funkcne PQ algoritmy na kazdej platforme
|
||||||
|
- doplnene priklady nastavenia premennej DEFAULT_GROUPS
|
||||||
|
- testovane s oqsprovider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-02-18 - testovanie PQ algoritmov s pouzitim oqs-providera
|
||||||
|
- uprava vypisu o pripojeni klienta
|
||||||
|
- pridane vypisy s informaciami o pouzivanych algoritmoch
|
||||||
|
pre KEX a certifikaty
|
||||||
|
- oprava kontroly navratovej hodnoty funkcii
|
||||||
|
SSL_CTX_use_certificate_file() a SSL_CTX_use_PrivateKey_file
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
JS 2024-02-08 testovane s aktualnou najnovsou verziou OpenSSL 3.2.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
MJ 2023-05-18 - Uprava funkcie printHeader()
|
||||||
|
-> Zmazanie SSL metody
|
||||||
|
-> Upraveny vypis ako spustit program
|
||||||
|
- Uprava funkcie initSSLContext() aby realizovala fixne iba TLS spojenie
|
||||||
|
-> pridanie argumentov do funkcie na nacitanie client.key, client.pem
|
||||||
|
- Uprava hlavnej funkcie main() na zaklade predoslej upravy (nastavenie fixne TLS)
|
||||||
|
-> Zmazanie premennej ctxMethod
|
||||||
|
-> Uprava argumentov [argv] - zmazanie TLS metody, pridanie suborov s klucmi
|
||||||
|
-> Pridanie premennych na nacitanie klucov: client_key, client_pem
|
||||||
|
(vid. komentare MJ)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
MD 2021-03-29 testovane s aktualne najnovsou verziou OpenSSL v 1.1.1k
|
||||||
|
MD 2018-11-06 upravene pre linkovanie s OpenSSL 1.1.1
|
||||||
|
(pouzita metoda TLS_client_method)
|
||||||
|
MD 2018-11-02 vlozene upravy na odstraneie varovania a autentizaciu servera
|
||||||
|
vlozene upravy na realizaciu autentizacie klienta (nacitanie potrebnych certifikatov
|
||||||
|
a kluca)
|
||||||
|
odstranenie varovania o poradi hlavickovych suborov
|
||||||
|
(vid. komentare // MD)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** SSL/TLS Client
|
||||||
|
* SSL/TLS client demonstration. This source code is cross-plateforme Windows and Linux.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// __unix__ is usually defined by compilers targeting Unix systems
|
||||||
|
#ifdef __unix__
|
||||||
|
# include <unistd.h>
|
||||||
|
# include <sys/socket.h>
|
||||||
|
# include <resolv.h>
|
||||||
|
# include <netdb.h>
|
||||||
|
# define SOCKLEN_T socklen_t
|
||||||
|
# define CLOSESOCKET close
|
||||||
|
// _Win32 is usually defined by compilers targeting 32 or 64 bit Windows systems
|
||||||
|
#elif defined _WIN32
|
||||||
|
// MD odstrani varovanie o potrebe prehodit poradie hlavickovych suborov
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# include <windows.h>
|
||||||
|
# include <winsock2.h>
|
||||||
|
# define SOCKLEN_T int
|
||||||
|
# define CLOSESOCKET closesocket
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <openssl/crypto.h>
|
||||||
|
#include <openssl/x509.h>
|
||||||
|
#include <openssl/pem.h>
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
#include <openssl/provider.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSADATA wsa; // Winsock data
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* JS
|
||||||
|
Premenna na definovanie "exchange groups", algoritmov na vymenu klucov
|
||||||
|
Server moze podporovat viacero KEX/KEM algoritmov, v premennej musi byt kazdy
|
||||||
|
algoritmus oddeleny dvojbodkou, napr. "kyber512:bikel1"
|
||||||
|
Podporovane algoritmy je mozne ziskat prikazom "openssl list -kem-algorithms"
|
||||||
|
Prazdna premenna alebo naplnena neplatnymi protokolmi sposobi prerusenie aplikacie
|
||||||
|
|
||||||
|
Ak server a klient nenajdu spolocny KEX/KEM protokol, tak
|
||||||
|
SSL vyhodi chybu SSL routines:final_key_share:no suitable key share
|
||||||
|
|
||||||
|
Priklad pouzitia:
|
||||||
|
- klasicke algoritmy: "x25519:x448:prime256v1:secp521r1:secp384r1:ffdhe2048:ffdhe3072"
|
||||||
|
- PQ algoritmy: "kyber512:kyber768:kyber1024:bikel1:bikel3:bikel5:hqc128:hqc192:hqc256:frodo640aes:frodo640shake:frodo976aes:frodo976shake:frodo1344aes:frodo1344shake"
|
||||||
|
- hybrid algoritmy: "x25519_kyber768:x25519_frodo640aes:x25519_hqc128:x448_bikel3:x448_kyber768:p256_kyber768"
|
||||||
|
|
||||||
|
Podporovane algoritmy OQS-providerom: https://github.com/open-quantum-safe/oqs-provider/blob/0.6.0/ALGORITHMS.md
|
||||||
|
|
||||||
|
POZOR - BIKE protokol nefunguje na Windows platforme (liboqs 0.10.0, oqs-provider 0.6.0)
|
||||||
|
|
||||||
|
*/
|
||||||
|
#define DEFAULT_GROUPS "kyber512:X25519:kyber768"
|
||||||
|
|
||||||
|
#define DEFAULT_PORT 443
|
||||||
|
|
||||||
|
/**
|
||||||
|
* printUsage function who describe the utilisation of this script.
|
||||||
|
* @param char* bin : the name of the current binary.
|
||||||
|
*/
|
||||||
|
void printHeader(char* bin){
|
||||||
|
// JS update
|
||||||
|
printf("[?] Usage : %s <hostname> <port> <client_private_key> <client_public_key>\n", bin);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** JS update navratove hodnoty pri chybe
|
||||||
|
* makeClientSocket function who create a traditionnal client socket to the hostname throught the port.
|
||||||
|
* @param char* hostname : the target to connect to
|
||||||
|
* @param int port : the port to connect throught
|
||||||
|
* @return int socket ; the socket number created
|
||||||
|
*/
|
||||||
|
int makeClientSocket(const char *hostname, int port){
|
||||||
|
int sock;
|
||||||
|
struct hostent *host;
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSAStartup(MAKEWORD(2,0),&wsa);
|
||||||
|
#endif
|
||||||
|
if((host = gethostbyname(hostname)) == NULL ){
|
||||||
|
perror(hostname);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
sock = socket(PF_INET, SOCK_STREAM, 0);
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sin_family = AF_INET;
|
||||||
|
addr.sin_port = htons(port);
|
||||||
|
addr.sin_addr.s_addr = *(long*)(host->h_addr);
|
||||||
|
if(connect(sock, (struct sockaddr*)&addr, sizeof(addr)) != 0){
|
||||||
|
CLOSESOCKET(sock);
|
||||||
|
perror(hostname);
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
return sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** JS update
|
||||||
|
* initSSLContext function who initialize the SSL/TLS engine with right method/protocol
|
||||||
|
* @param client_key name of file where is stored private key of client
|
||||||
|
* @param client_pem name of file where is stored public key of client
|
||||||
|
* @return SSL_CTX *ctx ; a pointer to the SSL context created
|
||||||
|
*/
|
||||||
|
SSL_CTX* initSSLContext(char* client_key, char* client_pem){
|
||||||
|
const SSL_METHOD *method;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
// initialize the SSL library
|
||||||
|
SSL_library_init();
|
||||||
|
SSL_load_error_strings();
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
|
|
||||||
|
// MJ only TLS connection
|
||||||
|
method = TLS_client_method();
|
||||||
|
|
||||||
|
// create new context from selected method
|
||||||
|
ctx = SSL_CTX_new(method);
|
||||||
|
if(ctx == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// MD zabezpecienie overenia certifikatu servera pomocou CA
|
||||||
|
if (SSL_CTX_load_verify_locations(ctx, "myCA.pem", 0)) {
|
||||||
|
printf("CA certificate loaded\n");
|
||||||
|
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
else {
|
||||||
|
printf("\nCA certificate not loaded! Abort ...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// MD nacitanie dat pre autentizaciu klineta
|
||||||
|
// MJ Update [Define Macro]
|
||||||
|
#ifdef AUTHENTICATION
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
res = SSL_CTX_use_certificate_file(ctx, client_pem, SSL_FILETYPE_PEM);
|
||||||
|
if (res <= 0) {
|
||||||
|
// handle error
|
||||||
|
printf("\nCLIENT certificate not loaded! Abort ...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
res = SSL_CTX_use_PrivateKey_file(ctx, client_key, SSL_FILETYPE_PEM);
|
||||||
|
if (res <= 0) {
|
||||||
|
// handle error
|
||||||
|
|
||||||
|
printf("\nCLIENT key not loaded! Abort ...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* verify private key */
|
||||||
|
if ( !SSL_CTX_check_private_key(ctx) )
|
||||||
|
{
|
||||||
|
fprintf(stderr, "Private key does not match the public certificate\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
printf("Certificate attached\n");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* showCerts function who catch and print out certificat's data from the server
|
||||||
|
* @param SSL* ssl : the SSL/TLS connection
|
||||||
|
*/
|
||||||
|
void showCerts(SSL* ssl){
|
||||||
|
X509 *cert;
|
||||||
|
char *subject, *issuer;
|
||||||
|
|
||||||
|
// get the server's certificate
|
||||||
|
cert = SSL_get_peer_certificate(ssl);
|
||||||
|
if(cert != NULL){
|
||||||
|
|
||||||
|
// JS get server's certificate algorithm name
|
||||||
|
int nid;
|
||||||
|
SSL_get_peer_signature_type_nid(ssl, &nid);
|
||||||
|
printf("Server signature algorithm: %s\n", OBJ_nid2sn(nid));
|
||||||
|
|
||||||
|
// get certificat's subject
|
||||||
|
subject = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0);
|
||||||
|
|
||||||
|
// get certificat's issuer
|
||||||
|
issuer = X509_NAME_oneline(X509_get_issuer_name(cert), 0, 0);
|
||||||
|
|
||||||
|
printf("[+] Server certificates :\n");
|
||||||
|
printf("\tSubject: %s\n", subject);
|
||||||
|
printf("\tIssuer: %s\n", issuer);
|
||||||
|
|
||||||
|
// Free memory
|
||||||
|
free(subject);
|
||||||
|
free(issuer);
|
||||||
|
X509_free(cert);
|
||||||
|
|
||||||
|
// check certificat's trust
|
||||||
|
if(SSL_get_verify_result(ssl) == X509_V_OK)
|
||||||
|
printf("[+] Server certificates X509 is trust!\n");
|
||||||
|
else
|
||||||
|
printf("[-] Server certificates X509 is not trust...\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[-] No server's certificates\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main function who coordinate the socket and SSL connection creation, then receive and emit
|
||||||
|
data to and from the server.
|
||||||
|
*/
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
int sock, bytes, port;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
SSL *ssl;
|
||||||
|
char buf[1024];
|
||||||
|
char *hostname;
|
||||||
|
|
||||||
|
if(argc != 5){
|
||||||
|
printHeader(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// MJ Add keys for communication
|
||||||
|
char *client_key = argv[3];
|
||||||
|
char *client_pem = argv[4];
|
||||||
|
|
||||||
|
hostname = argv[1];
|
||||||
|
|
||||||
|
// Assign correct port number
|
||||||
|
port = (atoi(argv[2]) > 0 && atoi(argv[2]) < 65535) ? atoi(argv[2]) : DEFAULT_PORT;
|
||||||
|
|
||||||
|
// JS update
|
||||||
|
// Load default and OQS providers
|
||||||
|
// Default provider must be loaded before OQS provider
|
||||||
|
// Providers have to loaded before SSL/TLS engine initSSLContext()
|
||||||
|
OSSL_PROVIDER* provider;
|
||||||
|
provider = OSSL_PROVIDER_load(NULL, "default");
|
||||||
|
if (provider == NULL) {
|
||||||
|
printf("Failed to load Default provider\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_PROVIDER* custom_provider = OSSL_PROVIDER_load(NULL, "oqsprovider");
|
||||||
|
if (custom_provider == NULL){
|
||||||
|
printf("Failed to load OQS-provider\n");
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// load SSL library and dependances
|
||||||
|
ctx = initSSLContext(client_key, client_pem);
|
||||||
|
|
||||||
|
// make a classic socket to the hostname throught the port
|
||||||
|
sock = makeClientSocket(hostname, port);
|
||||||
|
|
||||||
|
// create new SSL connection state
|
||||||
|
ssl = SSL_new(ctx);
|
||||||
|
|
||||||
|
// JS set key exchange/encapsulation protocols supported by server
|
||||||
|
// Without this function, client will use default X25519 protocol
|
||||||
|
// First protocol supported by both server and client will be used for KEX/KEM
|
||||||
|
// Empty DEFAULT_GROUPS or list of unsupported protocol by server will fail communication
|
||||||
|
if (SSL_set1_groups_list(ssl, DEFAULT_GROUPS) != 1){
|
||||||
|
printf("KEX/KEM algorithms undefined - check DEFAULT_GROUPS variable\n");
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
SSL_free(ssl);
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
OSSL_PROVIDER_unload(custom_provider);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// attach the socket descriptor
|
||||||
|
SSL_set_fd(ssl, sock);
|
||||||
|
|
||||||
|
// make the SSL connection
|
||||||
|
if(SSL_connect(ssl) == -1)
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
else{
|
||||||
|
|
||||||
|
// JS get chosen (negotiated) key exchange/encapsulation algorithm name
|
||||||
|
printf("Used group (KEM): %s\n", SSL_group_to_name(ssl, SSL_get_negotiated_group(ssl)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
if the server suddenly wants a new handshake,
|
||||||
|
OpenSSL handles it in the background. Without this
|
||||||
|
option, any read or write operation will return an
|
||||||
|
error if the server wants a new handshake.
|
||||||
|
*/
|
||||||
|
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
|
||||||
|
|
||||||
|
char msg[] = "ClientName";
|
||||||
|
printf("[+] Cipher used : %s\n", SSL_get_cipher(ssl));
|
||||||
|
|
||||||
|
// Show certificats data
|
||||||
|
showCerts(ssl);
|
||||||
|
|
||||||
|
// encrypt and send message
|
||||||
|
SSL_write(ssl, msg, strlen(msg));
|
||||||
|
|
||||||
|
// get response and decrypt content
|
||||||
|
bytes = SSL_read(ssl, buf, sizeof(buf));
|
||||||
|
buf[bytes] = 0;
|
||||||
|
printf("[+] Server data received : %s\n", buf);
|
||||||
|
|
||||||
|
// release SSL connection state
|
||||||
|
SSL_shutdown(ssl);
|
||||||
|
SSL_free(ssl);
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// close socket
|
||||||
|
CLOSESOCKET(sock);
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSACleanup();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// release SSL's context
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
// JS Unload both providers
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
OSSL_PROVIDER_unload(custom_provider);
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,158 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END PRIVATE KEY-----
|
@ -0,0 +1,161 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIdnzCCC5SgAwIBAgIUJ85yF8KSw0QrCNIkQdmFpQeyNiUwDQYLKwYBBAECggsH
|
||||||
|
CAcwZTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcM
|
||||||
|
DUZha2UgTG9jYWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJ
|
||||||
|
bG9jYWwuZGV2MB4XDTI0MDIyMzEyMTMxNVoXDTI5MDIyMTEyMTMxNVowZTELMAkG
|
||||||
|
A1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcMDUZha2UgTG9j
|
||||||
|
YWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJbG9jYWwuZGV2
|
||||||
|
MIIKNDANBgsrBgEEAQKCCwcIBwOCCiEAZp18fUGtbxJx3z9zyHS1mAE4HKZ08Z+m
|
||||||
|
FY/KFU+uog61oSWwSvkyu/wIAfN7LWaHKrkowbNBabTmWIgtinXRL2tCl+sDWesZ
|
||||||
|
9ShPO4oaMgr+2XLL0KqY7ytNiUP5we+T8/jRb31DI239nyoFCUbi5N48+QYbiBPU
|
||||||
|
YNk0VkwMN3JUxmJlGt5k2xDN/k3qXd0fgjBkW4W1KTdgUu4qo8Hc4FqovHbxXEzN
|
||||||
|
PSiJeWF1nM/brALa37pHackUzQc0EVUAUQHRaF5pdQky+bkD/riJBhm3n+8ZzjR9
|
||||||
|
5JePobauGMCrtNQ7fiP78idB79/GSz/7UmYmPOgz/GVIWlePLyFou23s24T2khlS
|
||||||
|
3jx9/TrjyBz+NL4lxgKrT2msARLkSqKbKjq4FOcvHw1chfYUlQ8Y4Dfqov/62Rvy
|
||||||
|
4fFJNu+pTcM46IRaE2l2MLzPkBWsDgbzbsaKzx5vD/iHkCGUC0TwEv4p7XHR+3Vs
|
||||||
|
aB27WKcnUizyFlaKXQZI4aD0kp4I34RvhLm0Osqr7NlUiP7+1kMTIeDe664XGpcG
|
||||||
|
IggeJ6InarF8AvRgn/J1PlJpJWNP4czTLt27851WM4C/3x/yI2HIBY302HV+oHbx
|
||||||
|
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
|
||||||
|
Iyo2
|
||||||
|
-----END CERTIFICATE-----
|
@ -0,0 +1,453 @@
|
|||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.6.0
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-03-04 - doplnenie funkcii pre uvolnenie nacitanych providerov
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
JS 2024-02-24 - funkcia initSSLContext() rozsirena o nacitanie OQS-providera
|
||||||
|
pre plne funkcne PQ algoritmy na kazdej platforme
|
||||||
|
- doplnene priklady nastavenia premennej DEFAULT_GROUPS
|
||||||
|
- testovane s oqsprovider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-02-18 - testovanie PQ algoritmov s pouzitim oqs-providera
|
||||||
|
- uprava vypisu o pripojeni klienta
|
||||||
|
- pridane vypisy s informaciami o pouzivanych algoritmoch
|
||||||
|
pre KEX a certifikaty
|
||||||
|
- oprava kontroly navratovej hodnoty funkcii
|
||||||
|
SSL_CTX_use_certificate_file() a SSL_CTX_use_PrivateKey_file
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
JS 2024-02-08 testovane s aktualnou najnovsou verziou OpenSSL 3.2.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
|
/*
|
||||||
|
MJ 2023-18-05 - Uprava funkcie printHeader()
|
||||||
|
-> Zmazanie SSL metody
|
||||||
|
-> Upraveny vypis ako spustit program
|
||||||
|
- Zmazanie funkcii spojene s generovanim certifikatov
|
||||||
|
-> callbackGeneratingKey()
|
||||||
|
-> makekCert()
|
||||||
|
- Uprava funkcie loadCertificates() aby nacitavala kluce klienta a servera zo suboru
|
||||||
|
- Uprava funkcie initSSLContext() aby realizovala fixne iba TLS spojenie
|
||||||
|
- Uprava hlavnej funkcie main() na zaklade predoslej upravy (nastavenie fixne TLS)
|
||||||
|
-> Zmazanie premennej ctxMethod
|
||||||
|
-> Uprava argumentov [argv] - zmazanie TLS metody, pridanie suborov s klucmi
|
||||||
|
-> zmena nazvoslovia premennych na ulozenie klucov
|
||||||
|
|
||||||
|
|
||||||
|
MJ 2022-12-28 - Oprava Warningu vo funckii routine() vid tag MJ (vid. komentare MJ)
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
|
||||||
|
MD 2021-03-29 testovane s aktualne najnovsou verziou OpenSSL v 1.1.1k
|
||||||
|
MD 2018-11-07 Upravene pre linkovanie s OpenSSL v. 1.1.1
|
||||||
|
(pouzitie novej funkcie TLS_server_method)
|
||||||
|
MD 2018-11-02 Odstanene varovanie
|
||||||
|
dodane nacitanie CA certifikatu
|
||||||
|
dodany kod na realizaciu autentizacie klienta
|
||||||
|
(vid //MD)
|
||||||
|
*/
|
||||||
|
|
||||||
|
/** SSL/TLS Server
|
||||||
|
* SSL/TLS server demonstration. This source code is cross-plateforme Windows and Linux.
|
||||||
|
* Compile under Linux with : g++ main.cpp -Wall -lssl -lcrypto -o main
|
||||||
|
* Certificat and private key to protect transaction can be used from :
|
||||||
|
* - External(s) file(s), created with command : openssl req -x509 -nodes -newkey rsa:2048 -keyout server.pem -out server.pem
|
||||||
|
* - Internal uniq hardcoded certificat and private key, equal into each server instance
|
||||||
|
* - Randomly generated certificat and private key, best solution to used dynamic keying material at each server lauching.
|
||||||
|
*/
|
||||||
|
|
||||||
|
// __unix__ is usually defined by compilers targeting Unix systems
|
||||||
|
#ifdef __unix__
|
||||||
|
# include <unistd.h>
|
||||||
|
# include <sys/socket.h>
|
||||||
|
# include <arpa/inet.h>
|
||||||
|
# include <resolv.h>
|
||||||
|
# define SOCKLEN_T socklen_t
|
||||||
|
# define CLOSESOCKET close
|
||||||
|
// _Win32 is usually defined by compilers targeting 32 or 64 bit Windows systems
|
||||||
|
#elif defined _WIN32
|
||||||
|
// MD, odstrani varovanie o potrebe prehodit poradie hlavickovych suborov
|
||||||
|
# define WIN32_LEAN_AND_MEAN
|
||||||
|
# include <windows.h>
|
||||||
|
# include <winsock2.h>
|
||||||
|
# define SOCKLEN_T int
|
||||||
|
# define CLOSESOCKET closesocket
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <openssl/crypto.h>
|
||||||
|
#include <openssl/x509v3.h>
|
||||||
|
#include <openssl/pem.h>
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
#include <openssl/bio.h>
|
||||||
|
#include <openssl/provider.h>
|
||||||
|
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSADATA wsa; // Winsock data
|
||||||
|
#endif
|
||||||
|
|
||||||
|
/* JS
|
||||||
|
Premenna na definovanie "exchange groups", algoritmov na vymenu klucov
|
||||||
|
Server moze podporovat viacero KEX/KEM algoritmov, v premennej musi byt kazdy
|
||||||
|
algoritmus oddeleny dvojbodkou, napr. "kyber512:bikel1"
|
||||||
|
Podporovane algoritmy je mozne ziskat prikazom "openssl list -kem-algorithms"
|
||||||
|
Prazdna premenna alebo naplnena neplatnymi protokolmi sposobi prerusenie aplikacie
|
||||||
|
|
||||||
|
Ak server a klient nenajdu spolocny KEX/KEM protokol, tak
|
||||||
|
SSL vyhodi chybu: "SSL routines:final_key_share:no suitable key share"
|
||||||
|
|
||||||
|
Priklad pouzitia:
|
||||||
|
- klasicke algoritmy: "x25519:x448:prime256v1:secp521r1:secp384r1:ffdhe2048:ffdhe3072"
|
||||||
|
- PQ algoritmy: "kyber512:kyber768:kyber1024:bikel1:bikel3:bikel5:hqc128:hqc192:hqc256:frodo640aes:frodo640shake:frodo976aes:frodo976shake:frodo1344aes:frodo1344shake"
|
||||||
|
- hybrid algoritmy: "x25519_kyber768:x25519_frodo640aes:x25519_hqc128:x448_bikel3:x448_kyber768:p256_kyber768"
|
||||||
|
|
||||||
|
Podporovane algoritmy OQS-providerom: https://github.com/open-quantum-safe/oqs-provider/blob/0.6.0/ALGORITHMS.md
|
||||||
|
|
||||||
|
POZOR - BIKE protokol nefunguje na Windows platforme (liboqs 0.10.0, oqs-provider 0.6.0)
|
||||||
|
|
||||||
|
*/
|
||||||
|
#define DEFAULT_GROUPS "kyber768:frodo976aes:kyber1024"
|
||||||
|
|
||||||
|
#define DEFAULT_PORT 443
|
||||||
|
|
||||||
|
/**
|
||||||
|
* printUsage function who describe the utilisation of this script.
|
||||||
|
* @param char* bin : the name of the current binary.
|
||||||
|
*/
|
||||||
|
void printHeader(char* bin){
|
||||||
|
// JS update
|
||||||
|
printf("[?] Usage : %s <port> <server_public_key> <server_private_key>]\n", bin);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* makeServerSocket function who create a traditionnal server socket, bind it and listen to it.
|
||||||
|
* @param int port : the port to listen
|
||||||
|
* @return int socket : the socket number created
|
||||||
|
*/
|
||||||
|
int makeServerSocket(int port){
|
||||||
|
int sock;
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSAStartup(MAKEWORD(2,0),&wsa);
|
||||||
|
#endif
|
||||||
|
sock = socket(PF_INET, SOCK_STREAM, 0);
|
||||||
|
memset(&addr, 0, sizeof(addr));
|
||||||
|
addr.sin_family = AF_INET;
|
||||||
|
addr.sin_port = htons(port);
|
||||||
|
addr.sin_addr.s_addr = INADDR_ANY;
|
||||||
|
if(bind(sock, (struct sockaddr*)&addr, sizeof(addr)) != 0){
|
||||||
|
perror("[-] Can't bind port on indicated port...");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
if(listen(sock, 10) != 0){
|
||||||
|
perror("[-] Can't listening on indicated port...");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
printf("\n");
|
||||||
|
printf("[+] Server listening on the %d port...\n", port);
|
||||||
|
printf("[+] Waiting for connection\n");
|
||||||
|
printf("\n");
|
||||||
|
return sock;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** JS update
|
||||||
|
* initSSLContext function who initialize the SSL/TLS engine with right method/protocol
|
||||||
|
* SSL/TLS engine provided by PQ algorithms functions of OQS provider
|
||||||
|
* @return SSL_CTX *ctx : a pointer to the SSL context created
|
||||||
|
*/
|
||||||
|
SSL_CTX* initSSLContext(){
|
||||||
|
const SSL_METHOD *method;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
// initialize the SSL library
|
||||||
|
SSL_library_init();
|
||||||
|
SSL_load_error_strings();
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
|
|
||||||
|
// MJ only TLS connection
|
||||||
|
method = TLS_server_method();
|
||||||
|
//printf("[+] Use TLS server method.\n");
|
||||||
|
|
||||||
|
// create new context from selected method
|
||||||
|
ctx = SSL_CTX_new(method);
|
||||||
|
if(ctx == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* loadCertificates function who load private key and certificat from files.
|
||||||
|
* 3 mecanisms available :
|
||||||
|
* - loading certificate and private key from file(s)
|
||||||
|
* - use embed hardcoded certificate and private key in the PEM format
|
||||||
|
* - generate random and dynamic certificate and private key at each server's launch instance.
|
||||||
|
* @param SSL_CTX* ctx : the SSL/TLS context
|
||||||
|
* @param char *server_pem : filename of the PEM certificat
|
||||||
|
* @param char *server_key : filename of the PEM private key
|
||||||
|
*/
|
||||||
|
void loadCertificates(SSL_CTX* ctx, const char* server_pem, const char* server_key){
|
||||||
|
|
||||||
|
if (SSL_CTX_use_certificate_file(ctx, server_pem, SSL_FILETYPE_PEM) != 1 ||
|
||||||
|
// namiesto MD SSL_CTX_use_RSAprivateKey_file
|
||||||
|
SSL_CTX_use_PrivateKey_file(ctx, server_key, SSL_FILETYPE_PEM) != 1)
|
||||||
|
{
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[*] Server's certificat and private key loaded from file.\n");
|
||||||
|
|
||||||
|
// verify private key match the public key into the certificate
|
||||||
|
if(!SSL_CTX_check_private_key(ctx)){
|
||||||
|
fprintf(stderr, "[-] Private key does not match the public certificate...\n");
|
||||||
|
abort();
|
||||||
|
} else
|
||||||
|
printf("[+] Server's private key match public certificate\n");
|
||||||
|
|
||||||
|
// JS get server's signature algorithm name
|
||||||
|
X509 *cert = SSL_CTX_get0_certificate(ctx);
|
||||||
|
int pknid;
|
||||||
|
if (X509_get_signature_info(cert, NULL, &pknid, NULL, NULL) != 1){
|
||||||
|
printf("Certificate signature algorithm: Unknown algorithm");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
printf("Certificate signature algorithm: %s\n", OBJ_nid2sn(pknid));
|
||||||
|
}
|
||||||
|
|
||||||
|
// MD kod na autentizaciu klienta
|
||||||
|
// MJ Update [Define Macro]
|
||||||
|
#ifdef AUTHENTICATION
|
||||||
|
|
||||||
|
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL);
|
||||||
|
|
||||||
|
// load the trusted client CA certificate into context
|
||||||
|
if (SSL_CTX_load_verify_locations(ctx, "myCA.pem", NULL) != 1)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "[-] CA certificate not loaded...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* showCerts function who catch and print out certificate's data from the client.
|
||||||
|
* @param SSL* ssl : the SSL/TLS connection
|
||||||
|
*/
|
||||||
|
void showCerts(SSL* ssl){
|
||||||
|
X509 *cert;
|
||||||
|
char *subject, *issuer;
|
||||||
|
|
||||||
|
// get the client's certificate
|
||||||
|
cert = SSL_get_peer_certificate(ssl);
|
||||||
|
if(cert != NULL){
|
||||||
|
// get certificate's subject
|
||||||
|
subject = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0);
|
||||||
|
// get certificate's issuer
|
||||||
|
issuer = X509_NAME_oneline(X509_get_issuer_name(cert), 0, 0);
|
||||||
|
|
||||||
|
printf("[+] Client certificates :\n");
|
||||||
|
printf("\tSubject: %s\n", subject);
|
||||||
|
printf("\tIssuer: %s\n", issuer);
|
||||||
|
|
||||||
|
// Free memory
|
||||||
|
free(subject);
|
||||||
|
free(issuer);
|
||||||
|
X509_free(cert);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[-] No client's certificates\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* routine function who treat the content of data received and reply to the client.
|
||||||
|
* this function is threadable and his context sharedable.
|
||||||
|
* @param SSL* ssl : the SSL/TLS connection
|
||||||
|
*/
|
||||||
|
void routine(SSL* ssl){
|
||||||
|
/* MJ char buf[1024], reply[1024];
|
||||||
|
-> buf must be smaller than reply array because arrays are copied in sprintf function,
|
||||||
|
which have some additional string
|
||||||
|
-> buf_size + (string in sprintf)_size > reply_size = Can do overflow
|
||||||
|
-> 1024 bytes (buf) + "Enchante %s, je suis ServerName.\n" + some string(s) > 1024 bytes
|
||||||
|
(reply)
|
||||||
|
-> solution is change size of buf array
|
||||||
|
*/
|
||||||
|
char buf[1024/2], reply[1024];
|
||||||
|
|
||||||
|
int sock, bytes;
|
||||||
|
const char* echo = "Enchante %s, je suis ServerName.\n";
|
||||||
|
|
||||||
|
// accept SSL/TLS connection
|
||||||
|
if(SSL_accept(ssl) == -1)
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
else{
|
||||||
|
printf("[+] Cipher used : %s\n", SSL_get_cipher(ssl));
|
||||||
|
|
||||||
|
// JS get chosen (negotiated) key exchange/encapsulation algorithm name
|
||||||
|
printf("Used group (KEM): %s\n", SSL_group_to_name(ssl, SSL_get_negotiated_group(ssl)));
|
||||||
|
|
||||||
|
// JS get client's certificate algorithm name
|
||||||
|
int nid;
|
||||||
|
SSL_get_peer_signature_type_nid(ssl, &nid);
|
||||||
|
printf("Peer signature name: %s\n", OBJ_nid2sn(nid));
|
||||||
|
|
||||||
|
|
||||||
|
// Show certificats data
|
||||||
|
showCerts(ssl);
|
||||||
|
|
||||||
|
// read data from client request
|
||||||
|
bytes = SSL_read(ssl, buf, sizeof(buf));
|
||||||
|
if(bytes > 0){
|
||||||
|
buf[bytes] = 0;
|
||||||
|
printf("[+] Client data received : %s\n", buf);
|
||||||
|
|
||||||
|
// construct response
|
||||||
|
sprintf(reply, echo, buf);
|
||||||
|
// send response
|
||||||
|
SSL_write(ssl, reply, strlen(reply));
|
||||||
|
} else {
|
||||||
|
switch(SSL_get_error(ssl, bytes)){
|
||||||
|
case SSL_ERROR_ZERO_RETURN :
|
||||||
|
printf("SSL_ERROR_ZERO_RETURN : ");
|
||||||
|
break;
|
||||||
|
case SSL_ERROR_NONE :
|
||||||
|
printf("SSL_ERROR_NONE : ");
|
||||||
|
break;
|
||||||
|
case SSL_ERROR_SSL:
|
||||||
|
printf("SSL_ERROR_SSL : ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
|
// get traditionnal socket connection from SSL connection
|
||||||
|
sock = SSL_get_fd(ssl);
|
||||||
|
// release SSL connection state
|
||||||
|
SSL_shutdown(ssl);
|
||||||
|
SSL_free(ssl);
|
||||||
|
// close socket
|
||||||
|
CLOSESOCKET(sock);
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main function who coordinate the socket and SSL connection creation, then receive and emit
|
||||||
|
data to and from the client.
|
||||||
|
*/
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
int sock, port;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
const char *server_pem, *server_key;
|
||||||
|
|
||||||
|
if(argc != 4){
|
||||||
|
printHeader(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
port = (atoi(argv[1]) > 0 && atoi(argv[1]) < 65535) ? atoi(argv[1]) : DEFAULT_PORT;
|
||||||
|
|
||||||
|
// JS
|
||||||
|
// Load default and OQS providers
|
||||||
|
// Default provider must be loaded before OQS provider
|
||||||
|
OSSL_PROVIDER* provider;
|
||||||
|
provider = OSSL_PROVIDER_load(NULL, "default");
|
||||||
|
if (provider == NULL) {
|
||||||
|
printf("Failed to load Default provider\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_PROVIDER* custom_provider = OSSL_PROVIDER_load(NULL, "oqsprovider");
|
||||||
|
if (custom_provider == NULL){
|
||||||
|
printf("Failed to load OQS-provider\n");
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// load SSL library and dependances
|
||||||
|
ctx = initSSLContext();
|
||||||
|
|
||||||
|
// MJ Update argv parameters
|
||||||
|
server_pem = argv[2];
|
||||||
|
server_key = argv[3];
|
||||||
|
|
||||||
|
// load certificats and keys
|
||||||
|
loadCertificates(ctx, server_pem, server_key);
|
||||||
|
|
||||||
|
// make a classic server socket
|
||||||
|
sock = makeServerSocket(port);
|
||||||
|
|
||||||
|
while(1){
|
||||||
|
struct sockaddr_in addr;
|
||||||
|
SSL *ssl;
|
||||||
|
SOCKLEN_T len = sizeof(addr);
|
||||||
|
|
||||||
|
// accept connection of client
|
||||||
|
int client = accept(sock, (struct sockaddr*)&addr, &len);
|
||||||
|
printf("[+] Connection [%s:%d]\n", inet_ntoa(addr.sin_addr), ntohs(addr.sin_port));
|
||||||
|
|
||||||
|
// get new SSL state with context
|
||||||
|
ssl = SSL_new(ctx);
|
||||||
|
if (ssl == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JS set key exchange/encapsulation protocols supported by server
|
||||||
|
// Without this function, client will use default X25519 protocol
|
||||||
|
// First protocol supported by both server and client will be used for KEX/KEM
|
||||||
|
// Empty DEFAULT_GROUPS or list of unsupported protocol by server will fail communication
|
||||||
|
if (SSL_set1_groups_list(ssl, DEFAULT_GROUPS) != 1){
|
||||||
|
printf("KEX/KEM algorithms undefined - check DEFAULT_GROUPS variable\n");
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// set traditionnal socket to SSL
|
||||||
|
SSL_set_fd(ssl, client);
|
||||||
|
|
||||||
|
// apply routine to the socket's content
|
||||||
|
routine(ssl);
|
||||||
|
// JS remove break if you want server running in loop
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// close socket
|
||||||
|
CLOSESOCKET(sock);
|
||||||
|
#ifdef _WIN32
|
||||||
|
WSACleanup();
|
||||||
|
#endif
|
||||||
|
|
||||||
|
// release SSL's context
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
// JS Unload both providers
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
OSSL_PROVIDER_unload(custom_provider);
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,158 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
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
|
||||||
|
-----END PRIVATE KEY-----
|
@ -0,0 +1,161 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIdnzCCC5SgAwIBAgIUJ85yF8KSw0QrCNIkQdmFpQeyNiYwDQYLKwYBBAECggsH
|
||||||
|
CAcwZTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcM
|
||||||
|
DUZha2UgTG9jYWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJ
|
||||||
|
bG9jYWwuZGV2MB4XDTI0MDIyMzEyMTMxNVoXDTI5MDIyMTEyMTMxNVowZTELMAkG
|
||||||
|
A1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcMDUZha2UgTG9j
|
||||||
|
YWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJbG9jYWwuZGV2
|
||||||
|
MIIKNDANBgsrBgEEAQKCCwcIBwOCCiEAvTK6AtK0Q9jgF8fkD3bhK+mqcrSGaTsr
|
||||||
|
+M3dEpgFL3ZGUb9GmXLRplZkK2JjeYVHv7ZPjtxGYt0NMCbyiotWYDkv2mxfDvoO
|
||||||
|
Owbh9Zb/qxWI3wowernPE1S8TLyd2I2SiKldLQD5IS8qrWePNUEakrcNDHU050vw
|
||||||
|
JE5ec9xQ1wOWl/2HnlXOIQi5gu/KMvVQrTc0afI2+NZJpPAphsYxOTRPzWgpddl/
|
||||||
|
tg0pHm1Sl2KME9GNxesTpGi76o0Uw3sZx+/MmiZ+hpLuHhpp3crkOW3NpBqRGbtH
|
||||||
|
3avxh5T0ZA4rHWg9TTvTw8nfQoGWZ5RvzGc6BjOxeSVYhFGZ1dIFRP2VaC8gB/al
|
||||||
|
oXw+sXeWXICOjxcg6gJDICXQrMNHxcFRWkIiaOQE6Q4MUpBzhcbXhufAyYVJsNG0
|
||||||
|
E5aa5yvov+VhyaupVcflOZs8BjgV0VhfEKBhFDwrBlm2hUcpghvL4n6JebyuPOmq
|
||||||
|
bvfiKp19hsNlIBQ6HLuiRYC8Gz7tdF70YmWmUyByxl5GA8oXsnfJ95XYk+Jv+XuM
|
||||||
|
N76VtOFElXPEftaOH/SEuvHm+NGkZgdSSy9vjsuoUFEK0H/WQlF+lNS91+5k8gS/
|
||||||
|
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
|
||||||
|
Nz9L
|
||||||
|
-----END CERTIFICATE-----
|
@ -0,0 +1,9 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: compilation for client.c file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem prikazy na prelozenie a linkovanie EXE programov s vyuzitim OpenSSL kniznice nainstalovanej v obraze BPS_PS
|
||||||
|
:: MJ Pridanie makra AUTHENTICATION pre autentizaciu klienta, ak nie je nutne autentizovat klienta staci zmazat -DAUTHENTICATION z procesu kompilacie
|
||||||
|
|
||||||
|
gcc -Wall -Wextra -o client_run ./CLIENT/client.c -lcrypto -lssl -I C:\OPENSSL\include -L C:\OPENSSL\lib -lws2_32 -DAUTHENTICATION
|
@ -0,0 +1,9 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: compilation for server.c file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem prikazy na prelozenie a linkovanie EXE programov s vyuzitim OpenSSL kniznice nainstalovanej v obraze BPS_PS
|
||||||
|
:: MJ Pridanie makra AUTHENTICATION pre autentizaciu klienta, ak nie je nutne autentizovat klienta staci zmazat -DAUTHENTICATION z procesu kompilacie
|
||||||
|
|
||||||
|
gcc -Wall -Wextra -o server_run ./SERVER/server.c -lcrypto -lssl -I C:\OPENSSL\include -L C:\OPENSSL\lib -lws2_32 -DAUTHENTICATION
|
@ -0,0 +1,30 @@
|
|||||||
|
# Makefile created by Martin Janitor
|
||||||
|
# DP1
|
||||||
|
# 9.5.2023
|
||||||
|
|
||||||
|
CC=gcc
|
||||||
|
CFLAGS=-Wall -Wextra
|
||||||
|
LIBS= -lcrypto -lssl
|
||||||
|
SRC_CLIENT= ./CLIENT/
|
||||||
|
SRC_SERVER= ./SERVER/
|
||||||
|
OPTIONAL= -DAUTHENTICATION
|
||||||
|
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
# Windows-specific options
|
||||||
|
LIBS += -I C:\OPENSSL\include -L C:\OPENSSL\lib -lws2_32
|
||||||
|
endif
|
||||||
|
|
||||||
|
#I C:\BATCHES\include
|
||||||
|
#L C:\BATCHES\lib
|
||||||
|
|
||||||
|
all: server_run client_run
|
||||||
|
|
||||||
|
server_run: $(SRC_SERVER)server.c
|
||||||
|
$(CC) $(CFLAGS) -o server_run $(SRC_SERVER)server.c $(LIBS) $(OPTIONAL)
|
||||||
|
|
||||||
|
client_run: $(SRC_CLIENT)client.c
|
||||||
|
$(CC) $(CFLAGS) -o client_run $(SRC_CLIENT)client.c $(LIBS) $(OPTIONAL)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f server client
|
||||||
|
del server.exe client.exe
|
@ -0,0 +1,160 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIdjzCCC4SgAwIBAgIUN0p76iVLFlnmnk5I2lxh/FY89lUwDQYLKwYBBAECggsH
|
||||||
|
CAcwZTELMAkGA1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcM
|
||||||
|
DUZha2UgTG9jYWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJ
|
||||||
|
bG9jYWwuZGV2MB4XDTI0MDIyMzEyMTMxNVoXDTI5MDIyMTEyMTMxNVowZTELMAkG
|
||||||
|
A1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcMDUZha2UgTG9j
|
||||||
|
YWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJbG9jYWwuZGV2
|
||||||
|
MIIKNDANBgsrBgEEAQKCCwcIBwOCCiEA4mTQbxXW7KvE84Go8ktmQrst7JxioPjI
|
||||||
|
M+h6sZqAgLbMuZuG2znL7I/Ubku7jDDeSbtizuuKg096ZPcZyShabn8tD6FktVNj
|
||||||
|
cwjl4g8OuK8IrpsZPZ7b1f5VpXmQleGdWjqJAmtuOzkXtkYyVsI5p9vOCuOlnFFC
|
||||||
|
GFnwRI1r9JaAh//rNSaHrEVg2pXuY0pwsvantf+Mua1pBMZ8hBNKoxEkfzSUiAyg
|
||||||
|
xG5fCCkRlviY4WZAJiQ+3ci8EMO71zlI5E6ZdTo3O+0GZIv9/GKQB2PFv0E0WdSe
|
||||||
|
UcKHO4KyELrQtOF57G4Y/ypN6/Ixe8Ej33KtBOjlBs3ri6bZxrCjy2uLNSUYt8aC
|
||||||
|
aMBhdOXg1esJAZhaefUUdJd+5cpxmwx8G6emmyHDueEUoH0ntj7FBSG1YAGAsgvp
|
||||||
|
rlUzNmtc04747L2tkkJG/3z/vnpWOnuq46A643/X7tpT1o2rCzBPnuouxMW6TvbA
|
||||||
|
UmqGZ/dxyJ9fT1hq+19Exm1/02wP4zDQ2Im+aaOHie+OFZx0hIJucRb8T20NnQAo
|
||||||
|
4vQJiIwcxKFqpkOzWh5wrkP59AeymPMnuvctEMbaeC4fv09XBkM4xWo710o7HPjm
|
||||||
|
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
|
||||||
|
-----END CERTIFICATE-----
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 104 KiB |
@ -0,0 +1,7 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: run client .bat file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem testovanie spojenia klient server na lokalhost adrese s vyuzitim portu 5000
|
||||||
|
client_run 127.0.0.1 5000 ./CLIENT/client.key ./CLIENT/client.pem
|
@ -0,0 +1,7 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: run server .bat file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem Spustenie servra, ktory "pocuva" na porte 5000
|
||||||
|
server_run 5000 ./SERVER/server.pem ./SERVER/server.key
|
@ -0,0 +1,324 @@
|
|||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.6.0
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-03-04 - doplnenie funkcii pre uvolnenie nacitanych providerov
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-02-24 - funkcia initSSLContext() rozsirena o nacitanie OQS-providera
|
||||||
|
pre plne funkcne PQ algoritmy na kazdej platforme
|
||||||
|
- doplnene priklady nastavenia premennej DEFAULT_GROUPS
|
||||||
|
- testovane s oqsprovider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-02-17 - testovanie PQ algoritmov s pouzitim oqs-providera
|
||||||
|
- pridane vypisy s informaciami o pouzivanych algoritmoch
|
||||||
|
pre KEX a certifikaty
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
JS 2024-02-08 testovane s aktualnou najnovsou verziou OpenSSL 3.2.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Name: Martin Janitor
|
||||||
|
Subject: DP1
|
||||||
|
Description: Implemenation SSL/TLS [CLIENT] connection with usage of BIO structure
|
||||||
|
Date: 2023-07-12
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <openssl/crypto.h>
|
||||||
|
#include <openssl/x509.h>
|
||||||
|
#include <openssl/pem.h>
|
||||||
|
|
||||||
|
#include <openssl/bio.h>
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
#include <openssl/provider.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
Premenna na definovanie "exchange groups", algoritmov na vymenu klucov
|
||||||
|
Server moze podporovat viacero KEX/KEM algoritmov, v premennej musi byt kazdy
|
||||||
|
algoritmus oddeleny dvojbodkou, napr. "kyber512:bikel1"
|
||||||
|
Podporovane algoritmy je mozne ziskat prikazom "openssl list -kem-algorithms"
|
||||||
|
Prazdna premenna alebo naplnena neplatnymi protokolmi sposobi prerusenie aplikacie
|
||||||
|
|
||||||
|
Ak server a klient nenajdu spolocny KEX/KEM protokol, tak
|
||||||
|
SSL vyhodi chybu SSL routines:final_key_share:no suitable key share
|
||||||
|
|
||||||
|
Priklad pouzitia:
|
||||||
|
- klasicke algoritmy: "x25519:x448:prime256v1:secp521r1:secp384r1:ffdhe2048:ffdhe3072"
|
||||||
|
- PQ algoritmy: "kyber512:kyber768:kyber1024:bikel1:bikel3:bikel5:hqc128:hqc192:hqc256:frodo640aes:frodo640shake:frodo976aes:frodo976shake:frodo1344aes:frodo1344shake"
|
||||||
|
- hybrid algoritmy: "x25519_kyber768:x25519_frodo640aes:x25519_hqc128:x448_bikel3:x448_kyber768:p256_kyber768"
|
||||||
|
|
||||||
|
Podporovane algoritmy OQS-providerom: https://github.com/open-quantum-safe/oqs-provider/blob/0.6.0/ALGORITHMS.md
|
||||||
|
|
||||||
|
POZOR - BIKE protokol nefunguje na Windows platforme (liboqs 0.10.0, oqs-provider 0.6.0)
|
||||||
|
|
||||||
|
*/
|
||||||
|
#define DEFAULT_GROUPS "X25519:kyber512:kyber768"
|
||||||
|
|
||||||
|
/**
|
||||||
|
* printUsage function who describe the utilisation of this script.
|
||||||
|
* @param char* bin : the name of the current binary.
|
||||||
|
*/
|
||||||
|
void printHeader(char *bin)
|
||||||
|
{
|
||||||
|
/* JS update */
|
||||||
|
printf("[?] Usage : %s <hostname> <port> <client_private_key> <client_public_key>\n", bin);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* makeClientSocket function who create a traditionnal client socket to the hostname throught the port.
|
||||||
|
* @param char* hostname : the target to connect to
|
||||||
|
* @param int port : the port to connect throught
|
||||||
|
* @return BIO context structure
|
||||||
|
*/
|
||||||
|
BIO* makeClientSocket(const char *hostname, int port)
|
||||||
|
{
|
||||||
|
char buffer[25];
|
||||||
|
memset(buffer,'\0',25);
|
||||||
|
sprintf(buffer, "%s:%d",hostname,port);
|
||||||
|
|
||||||
|
BIO *bio = BIO_new_connect(buffer);
|
||||||
|
|
||||||
|
if (bio == NULL){
|
||||||
|
fprintf(stderr, "Error creating connection BIO\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
return bio;
|
||||||
|
}
|
||||||
|
|
||||||
|
/** JS update
|
||||||
|
* initSSLContext function who initialize the SSL/TLS engine with right method/protocol
|
||||||
|
* SSL/TLS engine provided by PQ algorithms functions of OQS provider
|
||||||
|
* @param client_key name of file where is stored private key of client
|
||||||
|
* @param client_pem name of file where is stored public key of client
|
||||||
|
* @return SSL_CTX *ctx ; a pointer to the SSL context created
|
||||||
|
*/
|
||||||
|
SSL_CTX *initSSLContext(char *client_key, char *client_pem)
|
||||||
|
{
|
||||||
|
const SSL_METHOD *method;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
// initialize the SSL library
|
||||||
|
SSL_library_init();
|
||||||
|
SSL_load_error_strings();
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
|
|
||||||
|
// MJ only TLS connection
|
||||||
|
method = TLS_client_method();
|
||||||
|
|
||||||
|
// create new context from selected method
|
||||||
|
ctx = SSL_CTX_new(method);
|
||||||
|
if (ctx == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// MD zabezpecenie overenia certifikatu servera pomocou CA
|
||||||
|
if (SSL_CTX_load_verify_locations(ctx, "myCA.pem", 0)){
|
||||||
|
printf("CA certificate loaded\n");
|
||||||
|
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER, NULL);
|
||||||
|
}
|
||||||
|
|
||||||
|
else{
|
||||||
|
printf("\nCA certificate not loaded! Abort ...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
// MD nacitanie dat pre autentizaciu klineta
|
||||||
|
// MJ Update [Define Macro]
|
||||||
|
#ifdef AUTHENTICATION
|
||||||
|
int res = 0;
|
||||||
|
|
||||||
|
res = SSL_CTX_use_certificate_file(ctx, client_pem, SSL_FILETYPE_PEM);
|
||||||
|
if (res <= 0){
|
||||||
|
// handle error
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
printf("\nCLIENT certificate not loaded! Abort ...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
res = SSL_CTX_use_PrivateKey_file(ctx, client_key, SSL_FILETYPE_PEM);
|
||||||
|
if (res <= 0){
|
||||||
|
// handle error
|
||||||
|
printf("\nCLIENT key not loaded! Abort ...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
/* verify private key */
|
||||||
|
if (!SSL_CTX_check_private_key(ctx)){
|
||||||
|
fprintf(stderr, "Private key does not match the public certificate\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("Certificate attached\n");
|
||||||
|
printf("\n");
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* showCerts function who catch and print out certificat's data from the server
|
||||||
|
* @param SSL* ssl : the SSL/TLS connection
|
||||||
|
*/
|
||||||
|
void showCerts(SSL *ssl)
|
||||||
|
{
|
||||||
|
X509 *cert;
|
||||||
|
char *subject, *issuer;
|
||||||
|
|
||||||
|
// get the server's certificate
|
||||||
|
cert = SSL_get_peer_certificate(ssl);
|
||||||
|
if (cert != NULL){
|
||||||
|
|
||||||
|
// JS get server's certificate algorithm name
|
||||||
|
int nid;
|
||||||
|
SSL_get_peer_signature_type_nid(ssl, &nid);
|
||||||
|
printf("Server signature algorithm: %s\n", OBJ_nid2sn(nid));
|
||||||
|
|
||||||
|
// get certificat's subject
|
||||||
|
subject = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0);
|
||||||
|
// get certificat's issuer
|
||||||
|
issuer = X509_NAME_oneline(X509_get_issuer_name(cert), 0, 0);
|
||||||
|
|
||||||
|
printf("[+] Server certificates :\n");
|
||||||
|
printf("\tSubject: %s\n", subject);
|
||||||
|
printf("\tIssuer: %s\n", issuer);
|
||||||
|
|
||||||
|
// Free memory
|
||||||
|
free(subject);
|
||||||
|
free(issuer);
|
||||||
|
X509_free(cert);
|
||||||
|
|
||||||
|
// check certificat's trust
|
||||||
|
if (SSL_get_verify_result(ssl) == X509_V_OK)
|
||||||
|
printf("[+] Server certificates X509 is trust!\n");
|
||||||
|
else
|
||||||
|
printf("[-] Server certificates X509 is not trust...\n");
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[-] No server's certificates\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main function who coordinate the socket and SSL connection creation, then receive and
|
||||||
|
emit data to and from the server.
|
||||||
|
*/
|
||||||
|
int main(int argc, char **argv)
|
||||||
|
{
|
||||||
|
BIO* sock = NULL;
|
||||||
|
int bytes, port;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
SSL *ssl;
|
||||||
|
char buf[1024];
|
||||||
|
char *hostname;
|
||||||
|
|
||||||
|
if (argc != 5){
|
||||||
|
printHeader(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// MJ Add keys for communication
|
||||||
|
char *client_key = argv[3];
|
||||||
|
char *client_pem = argv[4];
|
||||||
|
|
||||||
|
hostname = argv[1];
|
||||||
|
|
||||||
|
// Assign correct port number
|
||||||
|
port = (atoi(argv[2]) > 0 && atoi(argv[2]) < 65535) ? atoi(argv[2]) : 433;
|
||||||
|
|
||||||
|
// Load default and OQS providers
|
||||||
|
// Default provider must be loaded before OQS provider
|
||||||
|
OSSL_PROVIDER* provider;
|
||||||
|
provider = OSSL_PROVIDER_load(NULL, "default");
|
||||||
|
if (provider == NULL) {
|
||||||
|
printf("Failed to load Default provider\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_PROVIDER* custom_provider = OSSL_PROVIDER_load(NULL, "oqsprovider");
|
||||||
|
if (custom_provider == NULL){
|
||||||
|
printf("Failed to load OQS-provider\n");
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// load SSL library and dependances
|
||||||
|
ctx = initSSLContext(client_key, client_pem);
|
||||||
|
|
||||||
|
// make a classic socket to the hostname throught the port
|
||||||
|
sock = makeClientSocket(hostname, port);
|
||||||
|
|
||||||
|
// create new SSL connection state
|
||||||
|
ssl = SSL_new(ctx);
|
||||||
|
|
||||||
|
// JS set default groups for key exchange/encapsulation
|
||||||
|
// Without this function, server will use default X25519 protocol
|
||||||
|
// First protocol supported by both server and client will be used for KEX/KEM
|
||||||
|
// Empty DEFAULT_GROUPS or list of unsupported protocol by client will fail communication
|
||||||
|
if (SSL_set1_groups_list(ssl, DEFAULT_GROUPS) != 1){
|
||||||
|
printf("KEX/KEM algorithms undefined unknown - check DEFAULT_GROUPS variable\n");
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
SSL_free(ssl);
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
OSSL_PROVIDER_unload(custom_provider);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// attach the socket descriptor
|
||||||
|
SSL_set_bio(ssl, sock, sock);
|
||||||
|
|
||||||
|
if (SSL_connect(ssl) == -1) // make the SSL connection
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// JS get chosen (negotiated) key exchange/encapsulation algorithm name
|
||||||
|
printf("Used group (KEM): %s\n", SSL_group_to_name(ssl, SSL_get_negotiated_group(ssl)));
|
||||||
|
|
||||||
|
/*
|
||||||
|
if the server suddenly wants a new handshake,
|
||||||
|
OpenSSL handles it in the background. Without this
|
||||||
|
option, any read or write operation will return an
|
||||||
|
error if the server wants a new handshake.
|
||||||
|
*/
|
||||||
|
SSL_set_mode(ssl, SSL_MODE_AUTO_RETRY);
|
||||||
|
|
||||||
|
char msg[] = "ClientName";
|
||||||
|
printf("[+] Cipher used : %s\n", SSL_get_cipher(ssl));
|
||||||
|
|
||||||
|
// show certificats data
|
||||||
|
showCerts(ssl);
|
||||||
|
|
||||||
|
// encrypt and send message
|
||||||
|
SSL_write(ssl, msg, strlen(msg));
|
||||||
|
|
||||||
|
// get response and decrypt content
|
||||||
|
bytes = SSL_read(ssl, buf, sizeof(buf));
|
||||||
|
buf[bytes] = 0;
|
||||||
|
printf("[+] Server data received : %s\n", buf);
|
||||||
|
SSL_shutdown(ssl);
|
||||||
|
}
|
||||||
|
|
||||||
|
// release SSL connection state
|
||||||
|
SSL_free(ssl);
|
||||||
|
|
||||||
|
// release SSL's context
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
// JS Unload both providers
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
OSSL_PROVIDER_unload(custom_provider);
|
||||||
|
return 0;
|
||||||
|
}
|
@ -0,0 +1,48 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIIlgIBADAHBgUrzg8DBgSCCIYEggiCWQAuggQPvwR+gw/ROxCfAA+QvPgBxPvh
|
||||||
|
hPvhfhe/vRexAvwPvPifCvfAgQPAuBgAgwPOwggwBP++O/g+/hQfv+//O/vP/xBh
|
||||||
|
vwBhigv/P/efAwQeQRQgBPxAQQP/wRfAgQPQuxAvSBQvxuwfPfuAAAwvgfhPRAvf
|
||||||
|
AeggAev/AAfAvhfRvxg+wgAvxvuegf/fvgBPgQwg/fQQwAOQPPgvvQvhQhQfgARO
|
||||||
|
PPhPP/hus+yAewRRvwvgAfh+gdgfeQfQQwPgewAfPfhPAwfewRgAvwwgAQuuPwvw
|
||||||
|
ROwwAPyAAPPAugAgAQC/AQewwAAxOvuvuwBxBPwP+g9uwPStgfwPuQQBPPuwAvBy
|
||||||
|
BQf9fhdPAfwPAv/wgwvPxf+vNt/BOARO/AAwvvvvff/QwghO/AgPAQvww/wfAQvu
|
||||||
|
wxSgP/QvgBP/wgQgDQvPQ/Afffv/fxgBvxOuvwevfwf/wwQ/gPQRPfPBhfgfAeww
|
||||||
|
AB/Px/+vRP/APu+wguQgBRQgRwft/uw/gBfxP+fhuQOwPfvQQAe+uAhgQgwAQPfg
|
||||||
|
BvQAeiPCA/PvAPyAxRCOvPAfQgfwPtuh+wQABeQufgwgwQxAAgQQRuQhOBAAwAQ/
|
||||||
|
PhPQvwfPv/vfvuxAxQBvwhBAAAPxPQPQgQAvhPwOQgQPvQfQgtwASQ/gOhgNQfgu
|
||||||
|
wBwgPwwxPgQggvQ+OQQv/P+uvviPxPQBviBxwO/wfhQgxvBAAxhBf/PhA/wfgPA+
|
||||||
|
/gfgNvufQePQhOAOwQwPxPvhPROegvwfAdweAAQOxABP/B/PgPP/vwwQ/BvQAfA/
|
||||||
|
gwxfgwwfAwQQBfRPgh+wRAf/u//gvdwhvvPfwAggvRfigf/wQPwOgARAASO/xAgg
|
||||||
|
fvd/wxffvQORPO/gQtNgRgvPOQfPfSwwfhRNvQOhNAefQPvPvRxyxxf/PeAOggSf
|
||||||
|
fP+PBROQgwwPQhPwQv/PwfhQARDPv/fgPQQQQQAwftiQ/R+BfQPgvhvwRABhAxv/
|
||||||
|
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
|
||||||
|
-----END PRIVATE KEY-----
|
@ -0,0 +1,43 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
hJ9sj/bdLB+bhZ+thhmznQ==
|
||||||
|
-----END CERTIFICATE-----
|
@ -0,0 +1,394 @@
|
|||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.6.0
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-04-11 testovane s OpenSSL 3.3.0, liboqs 0.10.0 a oqs-provider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-03-04 - doplnenie funkcii pre uvolnenie nacitanych providerov
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-02-24 - funkcia initSSLContext() rozsirena o nacitanie OQS-providera
|
||||||
|
pre plne funkcne PQ algoritmy na kazdej platforme
|
||||||
|
- doplnene priklady nastavenia premennej DEFAULT_GROUPS
|
||||||
|
- testovane s oqsprovider 0.5.3
|
||||||
|
*/
|
||||||
|
/*
|
||||||
|
JS 2024-02-17 - testovanie PQ algoritmov s pouzitim oqs-providera
|
||||||
|
- uprava vypisu o pripojeni klienta
|
||||||
|
- pridane vypisy s informaciami o pouzivanych algoritmoch
|
||||||
|
pre KEX a certifikaty
|
||||||
|
- oprava kontroly navratovej hodnoty funkcii
|
||||||
|
SSL_CTX_use_certificate_file() a SSL_CTX_use_PrivateKey_file
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
JS 2024-02-08 testovane s aktualnou najnovsou verziou OpenSSL 3.2.1
|
||||||
|
*/
|
||||||
|
|
||||||
|
/*
|
||||||
|
Name: Martin Janitor
|
||||||
|
Subject: DP1
|
||||||
|
Description: Implemenation SSL/TLS [SERVER] connection with usage of BIO structure
|
||||||
|
Date: 2023-06-28
|
||||||
|
*/
|
||||||
|
|
||||||
|
#include <stdio.h>
|
||||||
|
#include <errno.h>
|
||||||
|
#include <unistd.h>
|
||||||
|
#include <malloc.h>
|
||||||
|
#include <string.h>
|
||||||
|
|
||||||
|
#include <openssl/crypto.h>
|
||||||
|
#include <openssl/x509v3.h>
|
||||||
|
#include <openssl/pem.h>
|
||||||
|
#include <openssl/ssl.h>
|
||||||
|
#include <openssl/err.h>
|
||||||
|
#include <openssl/bio.h>
|
||||||
|
#include <openssl/provider.h>
|
||||||
|
|
||||||
|
/*
|
||||||
|
Premenna na definovanie "exchange groups", algoritmov na vymenu klucov
|
||||||
|
Server moze podporovat viacero KEX/KEM algoritmov, v premennej musi byt kazdy
|
||||||
|
algoritmus oddeleny dvojbodkou, napr. "kyber512:bikel1"
|
||||||
|
Podporovane algoritmy je mozne ziskat prikazom "openssl list -kem-algorithms"
|
||||||
|
Prazdna premenna alebo naplnena neplatnymi protokolmi sposobi prerusenie aplikacie
|
||||||
|
|
||||||
|
Ak server a klient nenajdu spolocny KEX/KEM protokol, tak
|
||||||
|
SSL vyhodi chybu SSL routines:final_key_share:no suitable key share
|
||||||
|
|
||||||
|
Priklad pouzitia:
|
||||||
|
- klasicke algoritmy: "x25519:x448:prime256v1:secp521r1:secp384r1:ffdhe2048:ffdhe3072"
|
||||||
|
- PQ algoritmy: "kyber512:kyber768:kyber1024:bikel1:bikel3:bikel5:hqc128:hqc192:hqc256:frodo640aes:frodo640shake:frodo976aes:frodo976shake:frodo1344aes:frodo1344shake"
|
||||||
|
- hybrid algoritmy: "x25519_kyber768:x25519_frodo640aes:x25519_hqc128:x448_bikel3:x448_kyber768:p256_kyber768"
|
||||||
|
|
||||||
|
Podporovane algoritmy OQS-providerom: https://github.com/open-quantum-safe/oqs-provider/blob/0.6.0/ALGORITHMS.md
|
||||||
|
|
||||||
|
POZOR - BIKE protokol nefunguje na Windows platforme (liboqs 0.10.0, oqs-provider 0.6.0)
|
||||||
|
|
||||||
|
*/
|
||||||
|
#define DEFAULT_GROUPS "kyber768:frodo976aes:kyber1024"
|
||||||
|
|
||||||
|
#define DEFAULT_PORT 443
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* printUsage function who describe the utilisation of this script.
|
||||||
|
* @param char* bin: the name of the current binary.
|
||||||
|
*/
|
||||||
|
void printHeader(char* bin){
|
||||||
|
// JS update
|
||||||
|
printf("[?] Usage: %s <port> <server_public_key> <server_private_key>]\n", bin);
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* makeServerSocket function who create a BIO structure for socket
|
||||||
|
* @param int port : the port to listen
|
||||||
|
* @return int socket : the socket number created
|
||||||
|
*/
|
||||||
|
BIO* makeServerSocket(int port){
|
||||||
|
|
||||||
|
char buffer[5];
|
||||||
|
memset(buffer,'\0',5);
|
||||||
|
sprintf(buffer,"%d",port);
|
||||||
|
|
||||||
|
BIO* accept_bio = BIO_new_accept(buffer);
|
||||||
|
if (accept_bio == NULL){
|
||||||
|
fprintf(stderr, "Error creating accept BIO\n");
|
||||||
|
return NULL;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
printf("[+] Server listening on the %d port...\n", port);
|
||||||
|
printf("[+] Waiting for connection\n");
|
||||||
|
return accept_bio;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/** JS update
|
||||||
|
* initSSLContext function who initialize the SSL/TLS engine with right method/protocol
|
||||||
|
* SSL/TLS engine provided by PQ algorithms functions of OQS provider
|
||||||
|
* @return SSL_CTX *ctx : a pointer to the SSL context created
|
||||||
|
*/
|
||||||
|
SSL_CTX* initSSLContext(){
|
||||||
|
const SSL_METHOD *method;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
|
||||||
|
// initialize the SSL library
|
||||||
|
SSL_library_init();
|
||||||
|
SSL_load_error_strings();
|
||||||
|
OpenSSL_add_all_algorithms();
|
||||||
|
|
||||||
|
// MJ only TLS connection
|
||||||
|
method = TLS_server_method();
|
||||||
|
|
||||||
|
// create new context from selected method
|
||||||
|
ctx = SSL_CTX_new(method);
|
||||||
|
if(ctx == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
|
||||||
|
return ctx;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* loadCertificates function who load private key and certificat from files.
|
||||||
|
* 3 mecanisms available :
|
||||||
|
* - loading certificate and private key from file(s)
|
||||||
|
* - use embed hardcoded certificate and private key in the PEM format
|
||||||
|
* @param SSL_CTX* ctx : the SSL/TLS context
|
||||||
|
* @param char *server_pem : filename of the PEM certificat
|
||||||
|
* @param char *server_key : filename of the PEM private key
|
||||||
|
*/
|
||||||
|
void loadCertificates(SSL_CTX* ctx, const char* server_pem, const char* server_key){
|
||||||
|
|
||||||
|
|
||||||
|
if (SSL_CTX_use_certificate_file(ctx, server_pem, SSL_FILETYPE_PEM) != 1 ||
|
||||||
|
// namiesto MD SSL_CTX_use_RSAprivateKey_file
|
||||||
|
SSL_CTX_use_PrivateKey_file(ctx, server_key, SSL_FILETYPE_PEM) != 1)
|
||||||
|
{
|
||||||
|
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[*] Server's certificat and private key loaded from file.\n");
|
||||||
|
|
||||||
|
// verify private key match the public key into the certificate
|
||||||
|
if(!SSL_CTX_check_private_key(ctx)){
|
||||||
|
fprintf(stderr, "[-] Private key does not match the public certificate...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
printf("[+] Server's private key match public certificate\n");
|
||||||
|
}
|
||||||
|
|
||||||
|
// JS get server's signature algorithm name
|
||||||
|
X509 *cert = SSL_CTX_get0_certificate(ctx);
|
||||||
|
int pknid;
|
||||||
|
if (X509_get_signature_info(cert, NULL, &pknid, NULL, NULL) != 1){
|
||||||
|
printf("Certificate signature algorithm: Unknown algorithm");
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
printf("Certificate signature algorithm: %s\n", OBJ_nid2sn(pknid));
|
||||||
|
}
|
||||||
|
|
||||||
|
// MD kod na autentizaciu klienta
|
||||||
|
#ifdef AUTHENTICATION
|
||||||
|
|
||||||
|
SSL_CTX_set_verify(ctx, SSL_VERIFY_PEER|SSL_VERIFY_FAIL_IF_NO_PEER_CERT, NULL);
|
||||||
|
|
||||||
|
// load the trusted client CA certificate into context
|
||||||
|
if (SSL_CTX_load_verify_locations(ctx, "myCA.pem", NULL) != 1)
|
||||||
|
{
|
||||||
|
fprintf(stderr, "[-] CA certificate not loaded...\n");
|
||||||
|
abort();
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* showCerts function who catch and print out certificate's data from the client.
|
||||||
|
* @param SSL* ssl : the SSL/TLS connection
|
||||||
|
*/
|
||||||
|
void showCerts(SSL *ssl)
|
||||||
|
{
|
||||||
|
X509 *cert;
|
||||||
|
char *subject, *issuer;
|
||||||
|
|
||||||
|
// get the client's certificate
|
||||||
|
cert = SSL_get_peer_certificate(ssl);
|
||||||
|
|
||||||
|
// get certificate info
|
||||||
|
if (cert != NULL){
|
||||||
|
// get certificate's subject
|
||||||
|
subject = X509_NAME_oneline(X509_get_subject_name(cert), 0, 0);
|
||||||
|
// get certificate's issuer
|
||||||
|
issuer = X509_NAME_oneline(X509_get_issuer_name(cert), 0, 0);
|
||||||
|
|
||||||
|
printf("[+] Client certificates :\n");
|
||||||
|
printf("\tSubject: %s\n", subject);
|
||||||
|
printf("\tIssuer: %s\n", issuer);
|
||||||
|
printf("[+] Cipher used : %s\n", SSL_get_cipher(ssl));
|
||||||
|
|
||||||
|
// Free memory
|
||||||
|
free(subject);
|
||||||
|
free(issuer);
|
||||||
|
X509_free(cert);
|
||||||
|
}
|
||||||
|
else
|
||||||
|
printf("[-] No client's certificates\n");
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* routine function who treat the content of data received and reply to the client.
|
||||||
|
* this function is threadable and his context sharedable.
|
||||||
|
* @param SSL* ssl : the SSL/TLS connection
|
||||||
|
*/
|
||||||
|
void routine(SSL* ssl)
|
||||||
|
{
|
||||||
|
char buf[1024 / 2], reply[1024];
|
||||||
|
|
||||||
|
int bytes;
|
||||||
|
const char *echo = "Enchante %s, je suis ServerName.\n";
|
||||||
|
|
||||||
|
// accept SSL/TLS connection
|
||||||
|
if (SSL_accept(ssl) == -1)
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
else{
|
||||||
|
|
||||||
|
// JS get chosen (negotiated) key exchange/encapsulation algorithm name
|
||||||
|
printf("Used group (KEM): %s\n", SSL_group_to_name(ssl, SSL_get_negotiated_group(ssl)));
|
||||||
|
|
||||||
|
// JS get client's certificate algorithm name
|
||||||
|
int nid;
|
||||||
|
SSL_get_peer_signature_type_nid(ssl, &nid);
|
||||||
|
printf("Peer signature name: %s\n", OBJ_nid2sn(nid));
|
||||||
|
|
||||||
|
// show certificates data
|
||||||
|
showCerts(ssl);
|
||||||
|
|
||||||
|
// read data from client request
|
||||||
|
bytes = SSL_read(ssl, buf, sizeof(buf));
|
||||||
|
if (bytes > 0){
|
||||||
|
buf[bytes] = 0;
|
||||||
|
printf("[+] Client data received: %s\n", buf);
|
||||||
|
|
||||||
|
// construct response
|
||||||
|
sprintf(reply, echo, buf);
|
||||||
|
// send response
|
||||||
|
SSL_write(ssl, reply, strlen(reply));
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
switch (SSL_get_error(ssl, bytes)){
|
||||||
|
case SSL_ERROR_ZERO_RETURN:
|
||||||
|
printf("SSL_ERROR_ZERO_RETURN : ");
|
||||||
|
break;
|
||||||
|
case SSL_ERROR_NONE:
|
||||||
|
printf("SSL_ERROR_NONE : ");
|
||||||
|
break;
|
||||||
|
case SSL_ERROR_SSL:
|
||||||
|
printf("SSL_ERROR_SSL : ");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
SSL_shutdown(ssl);
|
||||||
|
SSL_free(ssl);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* main function who coordinate the socket and SSL connection creation, then receive and
|
||||||
|
emit data to and from the client.
|
||||||
|
*/
|
||||||
|
int main(int argc, char **argv){
|
||||||
|
BIO* sock;
|
||||||
|
int port;
|
||||||
|
SSL_CTX *ctx;
|
||||||
|
const char *server_pem, *server_key;
|
||||||
|
|
||||||
|
if(argc != 4){
|
||||||
|
printHeader(argv[0]);
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// Select PORT number
|
||||||
|
port = (atoi(argv[1]) > 0 && atoi(argv[1]) < 65535) ? atoi(argv[1]) : DEFAULT_PORT;
|
||||||
|
|
||||||
|
// Load default and OQS providers
|
||||||
|
// Default provider must be loaded before OQS provider
|
||||||
|
OSSL_PROVIDER* provider;
|
||||||
|
provider = OSSL_PROVIDER_load(NULL, "default");
|
||||||
|
if (provider == NULL) {
|
||||||
|
printf("Failed to load Default provider\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
OSSL_PROVIDER* custom_provider = OSSL_PROVIDER_load(NULL, "oqsprovider");
|
||||||
|
if (custom_provider == NULL){
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
printf("Failed to load OQS-provider\n");
|
||||||
|
exit(0);
|
||||||
|
}
|
||||||
|
|
||||||
|
// load SSL library and dependances
|
||||||
|
ctx = initSSLContext();
|
||||||
|
server_pem = argv[2];
|
||||||
|
server_key = argv[3];
|
||||||
|
|
||||||
|
// load certificats and keys
|
||||||
|
loadCertificates(ctx, server_pem, server_key);
|
||||||
|
|
||||||
|
// make a classic server socket
|
||||||
|
sock = makeServerSocket(port);
|
||||||
|
|
||||||
|
// Pridane na skusku od predosleho
|
||||||
|
BIO_set_bind_mode(sock, BIO_BIND_REUSEADDR);
|
||||||
|
|
||||||
|
if (BIO_do_accept(sock) <= 0)
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
|
||||||
|
while (1)
|
||||||
|
{
|
||||||
|
// Accept incoming connection
|
||||||
|
if (BIO_do_accept(sock) <= 0)
|
||||||
|
{
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
printf("\n");
|
||||||
|
|
||||||
|
// Create a new BIO object
|
||||||
|
BIO *conn = BIO_pop(sock);
|
||||||
|
if (conn == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JS added info about connected client (IP)
|
||||||
|
printf("Connection of client %s accepted\n", BIO_get_peer_name(sock));
|
||||||
|
|
||||||
|
// Create a new SSL object
|
||||||
|
SSL *ssl = SSL_new(ctx);
|
||||||
|
if (ssl == NULL){
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
BIO_free(conn);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// JS set key exchange/encapsulation protocols supported by server
|
||||||
|
// Without this function, client will use default X25519 protocol
|
||||||
|
// First protocol supported by both server and client will be used for KEX/KEM
|
||||||
|
// Empty DEFAULT_GROUPS or list of unsupported protocol by server will fail communication
|
||||||
|
if (SSL_set1_groups_list(ssl, DEFAULT_GROUPS) != 1){
|
||||||
|
printf("KEX/KEM algorithms undefined unknown - check DEFAULT_GROUPS variable\n");
|
||||||
|
ERR_print_errors_fp(stderr);
|
||||||
|
BIO_free(conn);
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Assign the SSL object to the connection BIO
|
||||||
|
SSL_set_bio(ssl, conn, conn);
|
||||||
|
|
||||||
|
routine(ssl);
|
||||||
|
// JS remove break if you want server running in loop
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
|
SSL_CTX_free(ctx);
|
||||||
|
// JS Unload both providers
|
||||||
|
OSSL_PROVIDER_unload(provider);
|
||||||
|
OSSL_PROVIDER_unload(custom_provider);
|
||||||
|
BIO_free_all(sock);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
@ -0,0 +1,48 @@
|
|||||||
|
-----BEGIN PRIVATE KEY-----
|
||||||
|
MIIIlgIBADAHBgUrzg8DBgSCCIYEggiCWQAOQ+/BACAfAAfAwgvfgQQRivydw+wR
|
||||||
|
fAQgwgRwAvQi+ggA/vwAgvhfQiAxev/egfvBBeSgBugPfQefxvfufwfAAQAAhQeA
|
||||||
|
u//wQhCBOwfPfQAQhQAhBPf/vRBePhxPgxefN/AgQSSvfBfe/P+ufQheQwu/vgQ/
|
||||||
|
wvf/AQ/vfvQRifBPvfAAw/hBAwwwAxgfRfAv+uAgf/QfgAuRAOOPPQB/fR/whNwx
|
||||||
|
//APPSQw/vwAAff+uRBfuwgv/xAuAABOwwf//e/xCBfgPw///ftwRRAffQQQgPgv
|
||||||
|
PfQ/wfffwgPAfCRgQwPw/vgCQhgPPuyxAeAQf/PRQvwxtgAexBO/whAwQBABgQgR
|
||||||
|
QAs/9evAvfNACfwOgxBRACvRuRPNgOwPwgeduyAvAPAAQ/vguhxB//wORxQfPPv+
|
||||||
|
vgQRABxBPxwRxfvQBP/QwQ/+/PQRAQPvfSQfAge/QBA/OxOvgvgdQAhfAhg+wf+Q
|
||||||
|
BCvwP/wQggAQhfRRBBBwRQfegg/h/fvxQhBvuwewfQPv+uQBAggQQf+Agu/B8+gN
|
||||||
|
hPxPgBPBPugPPAwgP/uuQQgABghRwAxPwwiOAuvQOSAghBPgQPwNfwwg+gfv//vf
|
||||||
|
fgA+/f/uxOwQAP/BAhQvjPxf/uBQPgevdAgPgfBRgBAfQQQvvggBPwgudvxvhv/x
|
||||||
|
A/MgwQhgePgwQxfQA/gBPCe/wQvOQfAQhPAfdwRPvwQQf//vevwOAtwQg/PxCQAC
|
||||||
|
AwPv/PgvthQQwQgN+ehQAxgRePwQAe/ggABfRAfO/BOQwAe+vhfRPAxP/g/PQQwu
|
||||||
|
xRAfg/Qfw/xxgQ/QwPhggv/xvSfQQARQwhgf/xPvPghO+xf/RPQRBwASP/BAAQN/
|
||||||
|
fAff+egAPgvffQQxfQQvgA/wQ//vQ+/f/PAxO/hvAgvwwe/tw+uwQOQexQQxw/hB
|
||||||
|
gfQB/BCQgOw/vuyAPhAwwO8vhQg/wPv/f/Qd/PPPOgfQABPfvfhf/fQggwfAAvxe
|
||||||
|
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
|
||||||
|
-----END PRIVATE KEY-----
|
@ -0,0 +1,43 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
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
|
||||||
|
i8Jgnmcsib8TOaRwYA==
|
||||||
|
-----END CERTIFICATE-----
|
@ -0,0 +1,9 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: compilation for client.c file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem prikazy na prelozenie a linkovanie EXE programov s vyuzitim OpenSSL kniznice nainstalovanej v obraze BPS_PS
|
||||||
|
:: MJ Pridanie makra AUTHENTICATION pre autentizaciu klienta, ak nie je nutne autentizovat klienta staci zmazat -DAUTHENTICATION z procesu kompilacie
|
||||||
|
|
||||||
|
gcc -Wall -Wextra -o client_run ./CLIENT/client.c -lcrypto -lssl -I C:\OPENSSL\include -L C:\OPENSSL\lib -lws2_32 -DAUTHENTICATION
|
@ -0,0 +1,9 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: compilation for server.c file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem prikazy na prelozenie a linkovanie EXE programov s vyuzitim OpenSSL kniznice nainstalovanej v obraze BPS_PS
|
||||||
|
:: MJ Pridanie makra AUTHENTICATION pre autentizaciu klienta, ak nie je nutne autentizovat klienta staci zmazat -DAUTHENTICATION z procesu kompilacie
|
||||||
|
|
||||||
|
gcc -Wall -Wextra -o server_run ./SERVER/server.c -lcrypto -lssl -I C:\OPENSSL\include -L C:\OPENSSL\lib -lws2_32 -DAUTHENTICATION
|
@ -0,0 +1,30 @@
|
|||||||
|
# Makefile created by Martin Janitor
|
||||||
|
# DP1
|
||||||
|
# 9.5.2023
|
||||||
|
|
||||||
|
CC=gcc
|
||||||
|
CFLAGS=-Wall -Wextra
|
||||||
|
LIBS= -lcrypto -lssl
|
||||||
|
SRC_CLIENT= ./CLIENT/
|
||||||
|
SRC_SERVER= ./SERVER/
|
||||||
|
OPTIONAL= -DAUTHENTICATION
|
||||||
|
|
||||||
|
ifeq ($(OS),Windows_NT)
|
||||||
|
# Windows-specific options
|
||||||
|
LIBS += -I C:\OPENSSL\include -L C:\OPENSSL\lib -lws2_32
|
||||||
|
endif
|
||||||
|
|
||||||
|
#I C:\BATCHES\include
|
||||||
|
#L C:\BATCHES\lib
|
||||||
|
|
||||||
|
all: server_run client_run
|
||||||
|
|
||||||
|
server_run: $(SRC_SERVER)server.c
|
||||||
|
$(CC) $(CFLAGS) -o server_run $(SRC_SERVER)server.c $(LIBS) $(OPTIONAL)
|
||||||
|
|
||||||
|
client_run: $(SRC_CLIENT)client.c
|
||||||
|
$(CC) $(CFLAGS) -o client_run $(SRC_CLIENT)client.c $(LIBS) $(OPTIONAL)
|
||||||
|
|
||||||
|
clean:
|
||||||
|
rm -f server client
|
||||||
|
del server.exe client.exe
|
@ -0,0 +1,42 @@
|
|||||||
|
-----BEGIN CERTIFICATE-----
|
||||||
|
MIIHdzCCBNmgAwIBAgIUWXaR57uTKy4p1O4cX1NPjeafBsQwBwYFK84PAwYwZTEL
|
||||||
|
MAkGA1UEBhMCVVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcMDUZha2Ug
|
||||||
|
TG9jYWxpdHkxFTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJbG9jYWwu
|
||||||
|
ZGV2MB4XDTI0MDIyMzA5NDAxMFoXDTI5MDIyMTA5NDAxMFowZTELMAkGA1UEBhMC
|
||||||
|
VVMxEzARBgNVBAgMCkZha2UgU3RhdGUxFjAUBgNVBAcMDUZha2UgTG9jYWxpdHkx
|
||||||
|
FTATBgNVBAoMDEZha2UgQ29tcGFueTESMBAGA1UEAwwJbG9jYWwuZGV2MIIDjzAH
|
||||||
|
BgUrzg8DBgOCA4IACRR9c0KbSpmMkJrouMVUQyK3CKyJwmJC0ej2F3AMMhSh/ObX
|
||||||
|
IoIgQ1Ja360wcSVrS/JCdf1TqFMasQiKAG7f66rkLOT3RSGIys3QR9VCRkJUes+q
|
||||||
|
KReiacL22d9mxdPaNB2ypbEvifZqwhK80SMTXi9MdUzQA+BMc/zcqMEPqx6ZVPVH
|
||||||
|
6SF4SO8oll7itNorWJNbwhfGLJpyL1idlCoJxs6VR+qEk5Km0rpc/zF8nbeIZvQW
|
||||||
|
E4aHuzAKKjXBw0CIfWpemBRa3JQD9alJlDqeh/Qapa+cuIoYEIZr3Ij7x0ZDkVnr
|
||||||
|
VO5MSSLxgMQTlYsVmDZAJA1IIwCMgo9ZcFRRl2X1aGY6eQzkwpz7Lmn0wL5fdizI
|
||||||
|
rYJ0wvGB2prLa+GCAgriQESCXB7sftUYUUQb8FVHRia/Tg5vaxmJuDaSXnpGpUEN
|
||||||
|
YLwr05cifABAMWrl2ABU1VOei0264GalhAYojR0h8VEInlPg+Wkn6Pk5krN0MUk+
|
||||||
|
te2yeAfS8hW6fWN57yOKOIW3DAuZDJAuWQFptFlobQvKIKcWGIk4mpKdPQgFxthv
|
||||||
|
cJqVMAhHHjUW3FalU0ZoSU0uF00Qup0d0lKMTlU5TqzqZKLvCioTptgmFmbmWctJ
|
||||||
|
42Ja+o7ShYgXjYZxCZmCrhwZVsFEKZOSJPt4G9D0svkT9LBW7FNybbLqZ0Yc2D4L
|
||||||
|
N1eVuQ6I+brjc0Eu6sNO3rZPpKa4vwZKWEL2Y3wf22DUPpDjmmosRFoIHUJUsh63
|
||||||
|
ILEFegLgOusgCjC3noTY6BDsudy7konozLE8F3JmwSojCKmA7Y5xgAiiwtkkjAae
|
||||||
|
dFHoxmMGdYXFqSfDGxq0IdnX+gReRcMzEvhZ/OfgzC/Rvko2qtBgmXLpRIct4kKL
|
||||||
|
RPw28kPYNozDhi0Igqaiqej96sJY4Ep3ehLhU7wuglNhfLk0BfZKjcoh5ERLGpHd
|
||||||
|
PWRNI/5hpl0azsIOwjgQ9U6TfwT2emAwWyUFiGR0MKAJYCtuQnJFBxzvJnBz6+nO
|
||||||
|
kwh+8AdnqsB6VqcJiu1eT7VWefDKeCkycQpyhSa/kLpwoeESGxT04x5CPiQuLMrT
|
||||||
|
ZyNqVQFaneoVIqqSlbIjfZ/RaPUH66GyFj4TjYyDjaaq0J3NcL9BR2Nxrn9rMNPL
|
||||||
|
m9R4iTo6tvMjvDyN0aRdkO0Q1iayUeOGtBHG+GQOpZpCtXbyDgNegbahFw+UozIw
|
||||||
|
MDAPBgNVHRMBAf8EBTADAQH/MB0GA1UdDgQWBBR1o3Q28L78MFkNnfoDWPuL1ckY
|
||||||
|
eTAHBgUrzg8DBgOCAo0AOQ5Kpd4LYnmsq14VPx6EM7fmwGAU+0sFLk6y1wwO7AIL
|
||||||
|
gkPnzf6vlVznae4pGgEL9LzGuVdnZaYw+HzqbRQ3Pb1cbLnlZjr37N1cwq6rc3uz
|
||||||
|
H34nY2r9uurr1vR5LNq/QryLv5k7RgZKJlKcJ5GsY2kvHsaZ3ONx2xTa4pqn6Bzj
|
||||||
|
Ocfc8C7Y2o6vPx9vHKovMKwgmXVRoLmLBUFq3zEQAsMFYuGF2z6z9dPGCzujRD4f
|
||||||
|
NjnIKTTbEhUx9ZfIt6ay710hytISalO0TZNrPN2+nEJNkPDlkOeWDPBnKkULfOov
|
||||||
|
vRj6kJayXj9nAWHjOvEWfIuMOzCMWyKSRjF9JpceNJORwUIl0J2pWUWQSlcWu58k
|
||||||
|
Mlvq4bfSXDNpWm5kgo2VuulTDWZSNeqoxyMoLXrGohZY1LfVE+4dV4HbM0d/v0Ex
|
||||||
|
xsevMCF4dJSkYJwFWbC3kRwaWxNSlR189Qx+oKyiSNLJe3eVk9nkYmlcC1L17spj
|
||||||
|
Hjhrf6OCQrLqY3qEttJlrMq9Mb5T4Jfmly7EdPNTyHlBa71/i4a9xGkPNjnGXebY
|
||||||
|
at5VT7GXXcWJVtFwqfjBNWNJH6TTDvOoTx9iNOo2m4g7lVCwdHDVHZC7sLQCYjLo
|
||||||
|
KjUNR7rsGZNJW+mRPp3i4Dit5Kndw1sXNmET+8L0lsmULKCuNyxPH7VI/WcoVP2k
|
||||||
|
vGvm+TW6utmwaZ0hr8FX3Mv0B3UHXbR6lIvs4sp/MJS3mZWS0eY1Wh3TwTTiyBOu
|
||||||
|
IsE4yND/v/u8caAlXw4bkbx5DwotdsdwMbgvlN7bpsvg/7sJKtjOXu2PDFSgezGZ
|
||||||
|
pGP7vHrzUEjc84X9freSJr08QLUd9ESpT2Ra+uMowbKECRyR0Np30ajBQA==
|
||||||
|
-----END CERTIFICATE-----
|
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 105 KiB |
@ -0,0 +1,7 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: run client .bat file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem testovanie spojenia klient server na lokalhost adrese s vyuzitim portu 5000
|
||||||
|
client_run 127.0.0.1 5000 ./CLIENT/client.key ./CLIENT/client.pem
|
@ -0,0 +1,7 @@
|
|||||||
|
:: Name: Martin Janitor
|
||||||
|
:: Subject: DP1
|
||||||
|
:: Description: run server.bat file
|
||||||
|
:: Date: 2023-07-05
|
||||||
|
|
||||||
|
rem Spustenie servra, ktory "pocuva" na porte 5000
|
||||||
|
server_run 5000 ./SERVER/server.pem ./SERVER/server.key
|
BIN
OpenSSL_liboqs_oqsprovider/PQ_PROJECT_SSL_TLS/dokumentacia.pdf
Normal file
BIN
OpenSSL_liboqs_oqsprovider/PQ_PROJECT_SSL_TLS/dokumentacia.pdf
Normal file
Binary file not shown.
@ -0,0 +1,54 @@
|
|||||||
|
Tento priecinok obsahuje subor oqsprovider.dll, ktory umoznuje vyuzivat PQ
|
||||||
|
algoritmy v TLS komunikacii. Tento .dll subor bol vytvoreny specialne
|
||||||
|
pre obraz Win 7 x86 za ucelom demonstracie post-kvantovych algoritmov
|
||||||
|
v ramci predmetu BPS a BIKS. V pripade pouzitia zdrojovych kodov
|
||||||
|
klient/server na inom zariadeni je nutne vytvorit novy .dll subor.
|
||||||
|
|
||||||
|
Vytvorene a testovane na:
|
||||||
|
OpenSSL 3.3.0, liboqs 0.10.0, oqs-provider 0.6.0
|
||||||
|
|
||||||
|
Cely postup je dostupny online:
|
||||||
|
https://git.kemt.fei.tuke.sk/js331zc/MastersThesis/src/branch/master/OpenSSL_liboqs_oqsprovider
|
||||||
|
|
||||||
|
NAVOD NA POUZITIE
|
||||||
|
- predpokladame ze system obsahuje kniznice libcrypto a libssl
|
||||||
|
- na generovanie PQ certifikatov je potrebne mat OpenSSL.exe
|
||||||
|
|
||||||
|
Subor oqsprovider.dll presunieme na nas virtualny pocitac na lubovolne miesto.
|
||||||
|
Napr. ho skopirujeme priamo na plochu, teda do C:\Users\Administrator\Desktop
|
||||||
|
|
||||||
|
Cestu k suboru potom definujeme ako systemovu premennu OPENSSL_MODULES.
|
||||||
|
|
||||||
|
Systemovu premennu mozeme definovat:
|
||||||
|
a) PowerShell prikaz
|
||||||
|
[Environment]::SetEnvironmentVariable("OPENSSL_MODULES", "C:\Users\Administrator\Desktop\", "Machine")
|
||||||
|
|
||||||
|
b) cmd prikaz
|
||||||
|
setx OPENSSL_MODULES "C:\Users\Administrator\Desktop\"
|
||||||
|
|
||||||
|
c) manualne cez nastavenia
|
||||||
|
Settings-System-Advanced system settings-Environment Variables-System variables-New
|
||||||
|
Name: OPENSSL_MODULES
|
||||||
|
Value: C:\Users\Administrator\Desktop\
|
||||||
|
|
||||||
|
Po nastaveni premennej restartujeme cmd/PowerShell.
|
||||||
|
|
||||||
|
GENEROVANIE PQ CERTIFIKATOV
|
||||||
|
Generovanie PQ certifikatov prostrednictvom OpenSSL je mozne po aktivacii
|
||||||
|
oqsprovidera priamo cez konfiguracny subor. V tomto subore je potrebne
|
||||||
|
aktivovat default providera a doplnit aktivaciu modulu oqsprovider.
|
||||||
|
|
||||||
|
[provider_sect]
|
||||||
|
default = default_sect
|
||||||
|
oqsprovider = oqsprovider_sect
|
||||||
|
[oqsprovider_sect]
|
||||||
|
activate = 1
|
||||||
|
|
||||||
|
Subor openssl.cnf v tomto priecinku je prikladom konfiguracneho suboru
|
||||||
|
s uz aktivovanym oqsproviderom.
|
||||||
|
|
||||||
|
Aby OpenSSL pouzivalo nas konfiguracny subor, je nutne nastavit systemovu
|
||||||
|
premennu OPENSSL_CONF na priecinok, kde sa tento subor nachadza. V BPS obraze
|
||||||
|
je tato premenna nastavena na C:\OPENSSL\BIN\
|
||||||
|
Systemovu premennu mozeme zmenit alebo skopirovat nas konfiguracny subor
|
||||||
|
na dane miesto.
|
@ -0,0 +1,394 @@
|
|||||||
|
#
|
||||||
|
# OpenSSL example configuration file.
|
||||||
|
# See doc/man5/config.pod for more info.
|
||||||
|
#
|
||||||
|
# This is mostly being used for generation of certificate requests,
|
||||||
|
# but may be used for auto loading of providers
|
||||||
|
|
||||||
|
# Note that you can include other files from the main configuration
|
||||||
|
# file using the .include directive.
|
||||||
|
#.include filename
|
||||||
|
|
||||||
|
# This definition stops the following lines choking if HOME isn't
|
||||||
|
# defined.
|
||||||
|
HOME = .
|
||||||
|
|
||||||
|
# Use this in order to automatically load providers.
|
||||||
|
openssl_conf = openssl_init
|
||||||
|
|
||||||
|
# Comment out the next line to ignore configuration errors
|
||||||
|
config_diagnostics = 1
|
||||||
|
|
||||||
|
# Extra OBJECT IDENTIFIER info:
|
||||||
|
# oid_file = $ENV::HOME/.oid
|
||||||
|
oid_section = new_oids
|
||||||
|
|
||||||
|
# To use this configuration file with the "-extfile" option of the
|
||||||
|
# "openssl x509" utility, name here the section containing the
|
||||||
|
# X.509v3 extensions to use:
|
||||||
|
# extensions =
|
||||||
|
# (Alternatively, use a configuration file that has only
|
||||||
|
# X.509v3 extensions in its main [= default] section.)
|
||||||
|
|
||||||
|
[ new_oids ]
|
||||||
|
# We can add new OIDs in here for use by 'ca', 'req' and 'ts'.
|
||||||
|
# Add a simple OID like this:
|
||||||
|
# testoid1=1.2.3.4
|
||||||
|
# Or use config file substitution like this:
|
||||||
|
# testoid2=${testoid1}.5.6
|
||||||
|
|
||||||
|
# Policies used by the TSA examples.
|
||||||
|
tsa_policy1 = 1.2.3.4.1
|
||||||
|
tsa_policy2 = 1.2.3.4.5.6
|
||||||
|
tsa_policy3 = 1.2.3.4.5.7
|
||||||
|
|
||||||
|
# For FIPS
|
||||||
|
# Optionally include a file that is generated by the OpenSSL fipsinstall
|
||||||
|
# application. This file contains configuration data required by the OpenSSL
|
||||||
|
# fips provider. It contains a named section e.g. [fips_sect] which is
|
||||||
|
# referenced from the [provider_sect] below.
|
||||||
|
# Refer to the OpenSSL security policy for more information.
|
||||||
|
# .include fipsmodule.cnf
|
||||||
|
|
||||||
|
[openssl_init]
|
||||||
|
providers = provider_sect
|
||||||
|
|
||||||
|
# List of providers to load
|
||||||
|
[provider_sect]
|
||||||
|
default = default_sect
|
||||||
|
oqsprovider = oqsprovider_sect
|
||||||
|
# The fips section name should match the section name inside the
|
||||||
|
# included fipsmodule.cnf.
|
||||||
|
# fips = fips_sect
|
||||||
|
|
||||||
|
# If no providers are activated explicitly, the default one is activated implicitly.
|
||||||
|
# See man 7 OSSL_PROVIDER-default for more details.
|
||||||
|
#
|
||||||
|
# If you add a section explicitly activating any other provider(s), you most
|
||||||
|
# probably need to explicitly activate the default provider, otherwise it
|
||||||
|
# becomes unavailable in openssl. As a consequence applications depending on
|
||||||
|
# OpenSSL may not work correctly which could lead to significant system
|
||||||
|
# problems including inability to remotely access the system.
|
||||||
|
[default_sect]
|
||||||
|
activate = 1
|
||||||
|
|
||||||
|
[oqsprovider_sect]
|
||||||
|
activate = 1
|
||||||
|
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
[ ca ]
|
||||||
|
default_ca = CA_default # The default ca section
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
[ CA_default ]
|
||||||
|
|
||||||
|
dir = ./demoCA # Where everything is kept
|
||||||
|
certs = $dir/certs # Where the issued certs are kept
|
||||||
|
crl_dir = $dir/crl # Where the issued crl are kept
|
||||||
|
database = $dir/index.txt # database index file.
|
||||||
|
#unique_subject = no # Set to 'no' to allow creation of
|
||||||
|
# several certs with same subject.
|
||||||
|
new_certs_dir = $dir/newcerts # default place for new certs.
|
||||||
|
|
||||||
|
certificate = $dir/cacert.pem # The CA certificate
|
||||||
|
serial = $dir/serial # The current serial number
|
||||||
|
crlnumber = $dir/crlnumber # the current crl number
|
||||||
|
# must be commented out to leave a V1 CRL
|
||||||
|
crl = $dir/crl.pem # The current CRL
|
||||||
|
private_key = $dir/private/cakey.pem# The private key
|
||||||
|
|
||||||
|
x509_extensions = usr_cert # The extensions to add to the cert
|
||||||
|
|
||||||
|
# Comment out the following two lines for the "traditional"
|
||||||
|
# (and highly broken) format.
|
||||||
|
name_opt = ca_default # Subject Name options
|
||||||
|
cert_opt = ca_default # Certificate field options
|
||||||
|
|
||||||
|
# Extension copying option: use with caution.
|
||||||
|
# copy_extensions = copy
|
||||||
|
|
||||||
|
# Extensions to add to a CRL. Note: Netscape communicator chokes on V2 CRLs
|
||||||
|
# so this is commented out by default to leave a V1 CRL.
|
||||||
|
# crlnumber must also be commented out to leave a V1 CRL.
|
||||||
|
# crl_extensions = crl_ext
|
||||||
|
|
||||||
|
default_days = 365 # how long to certify for
|
||||||
|
default_crl_days= 30 # how long before next CRL
|
||||||
|
default_md = default # use public key default MD
|
||||||
|
preserve = no # keep passed DN ordering
|
||||||
|
|
||||||
|
# A few difference way of specifying how similar the request should look
|
||||||
|
# For type CA, the listed attributes must be the same, and the optional
|
||||||
|
# and supplied fields are just that :-)
|
||||||
|
policy = policy_match
|
||||||
|
|
||||||
|
# For the CA policy
|
||||||
|
[ policy_match ]
|
||||||
|
countryName = match
|
||||||
|
stateOrProvinceName = match
|
||||||
|
organizationName = match
|
||||||
|
organizationalUnitName = optional
|
||||||
|
commonName = supplied
|
||||||
|
emailAddress = optional
|
||||||
|
|
||||||
|
# For the 'anything' policy
|
||||||
|
# At this point in time, you must list all acceptable 'object'
|
||||||
|
# types.
|
||||||
|
[ policy_anything ]
|
||||||
|
countryName = optional
|
||||||
|
stateOrProvinceName = optional
|
||||||
|
localityName = optional
|
||||||
|
organizationName = optional
|
||||||
|
organizationalUnitName = optional
|
||||||
|
commonName = supplied
|
||||||
|
emailAddress = optional
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
[ req ]
|
||||||
|
default_bits = 2048
|
||||||
|
default_keyfile = privkey.pem
|
||||||
|
distinguished_name = req_distinguished_name
|
||||||
|
attributes = req_attributes
|
||||||
|
x509_extensions = v3_ca # The extensions to add to the self signed cert
|
||||||
|
|
||||||
|
# Passwords for private keys if not present they will be prompted for
|
||||||
|
# input_password = secret
|
||||||
|
# output_password = secret
|
||||||
|
|
||||||
|
# This sets a mask for permitted string types. There are several options.
|
||||||
|
# default: PrintableString, T61String, BMPString.
|
||||||
|
# pkix : PrintableString, BMPString (PKIX recommendation before 2004)
|
||||||
|
# utf8only: only UTF8Strings (PKIX recommendation after 2004).
|
||||||
|
# nombstr : PrintableString, T61String (no BMPStrings or UTF8Strings).
|
||||||
|
# MASK:XXXX a literal mask value.
|
||||||
|
# WARNING: ancient versions of Netscape crash on BMPStrings or UTF8Strings.
|
||||||
|
string_mask = utf8only
|
||||||
|
|
||||||
|
# req_extensions = v3_req # The extensions to add to a certificate request
|
||||||
|
|
||||||
|
[ req_distinguished_name ]
|
||||||
|
countryName = Country Name (2 letter code)
|
||||||
|
countryName_default = AU
|
||||||
|
countryName_min = 2
|
||||||
|
countryName_max = 2
|
||||||
|
|
||||||
|
stateOrProvinceName = State or Province Name (full name)
|
||||||
|
stateOrProvinceName_default = Some-State
|
||||||
|
|
||||||
|
localityName = Locality Name (eg, city)
|
||||||
|
|
||||||
|
0.organizationName = Organization Name (eg, company)
|
||||||
|
0.organizationName_default = Internet Widgits Pty Ltd
|
||||||
|
|
||||||
|
# we can do this but it is not needed normally :-)
|
||||||
|
#1.organizationName = Second Organization Name (eg, company)
|
||||||
|
#1.organizationName_default = World Wide Web Pty Ltd
|
||||||
|
|
||||||
|
organizationalUnitName = Organizational Unit Name (eg, section)
|
||||||
|
#organizationalUnitName_default =
|
||||||
|
|
||||||
|
commonName = Common Name (e.g. server FQDN or YOUR name)
|
||||||
|
commonName_max = 64
|
||||||
|
|
||||||
|
emailAddress = Email Address
|
||||||
|
emailAddress_max = 64
|
||||||
|
|
||||||
|
# SET-ex3 = SET extension number 3
|
||||||
|
|
||||||
|
[ req_attributes ]
|
||||||
|
challengePassword = A challenge password
|
||||||
|
challengePassword_min = 4
|
||||||
|
challengePassword_max = 20
|
||||||
|
|
||||||
|
unstructuredName = An optional company name
|
||||||
|
|
||||||
|
[ usr_cert ]
|
||||||
|
|
||||||
|
# These extensions are added when 'ca' signs a request.
|
||||||
|
|
||||||
|
# This goes against PKIX guidelines but some CAs do it and some software
|
||||||
|
# requires this to avoid interpreting an end user certificate as a CA.
|
||||||
|
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
|
||||||
|
# This is typical in keyUsage for a client certificate.
|
||||||
|
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||||
|
|
||||||
|
# PKIX recommendations harmless if included in all certificates.
|
||||||
|
subjectKeyIdentifier=hash
|
||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
|
||||||
|
# This stuff is for subjectAltName and issuerAltname.
|
||||||
|
# Import the email address.
|
||||||
|
# subjectAltName=email:copy
|
||||||
|
# An alternative to produce certificates that aren't
|
||||||
|
# deprecated according to PKIX.
|
||||||
|
# subjectAltName=email:move
|
||||||
|
|
||||||
|
# Copy subject details
|
||||||
|
# issuerAltName=issuer:copy
|
||||||
|
|
||||||
|
# This is required for TSA certificates.
|
||||||
|
# extendedKeyUsage = critical,timeStamping
|
||||||
|
|
||||||
|
[ v3_req ]
|
||||||
|
|
||||||
|
# Extensions to add to a certificate request
|
||||||
|
|
||||||
|
basicConstraints = CA:FALSE
|
||||||
|
keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||||
|
|
||||||
|
[ v3_ca ]
|
||||||
|
|
||||||
|
|
||||||
|
# Extensions for a typical CA
|
||||||
|
|
||||||
|
|
||||||
|
# PKIX recommendation.
|
||||||
|
|
||||||
|
subjectKeyIdentifier=hash
|
||||||
|
|
||||||
|
authorityKeyIdentifier=keyid:always,issuer
|
||||||
|
|
||||||
|
basicConstraints = critical,CA:true
|
||||||
|
|
||||||
|
# Key usage: this is typical for a CA certificate. However since it will
|
||||||
|
# prevent it being used as an test self-signed certificate it is best
|
||||||
|
# left out by default.
|
||||||
|
# keyUsage = cRLSign, keyCertSign
|
||||||
|
|
||||||
|
# Include email address in subject alt name: another PKIX recommendation
|
||||||
|
# subjectAltName=email:copy
|
||||||
|
# Copy issuer details
|
||||||
|
# issuerAltName=issuer:copy
|
||||||
|
|
||||||
|
# DER hex encoding of an extension: beware experts only!
|
||||||
|
# obj=DER:02:03
|
||||||
|
# Where 'obj' is a standard or added object
|
||||||
|
# You can even override a supported extension:
|
||||||
|
# basicConstraints= critical, DER:30:03:01:01:FF
|
||||||
|
|
||||||
|
[ crl_ext ]
|
||||||
|
|
||||||
|
# CRL extensions.
|
||||||
|
# Only issuerAltName and authorityKeyIdentifier make any sense in a CRL.
|
||||||
|
|
||||||
|
# issuerAltName=issuer:copy
|
||||||
|
authorityKeyIdentifier=keyid:always
|
||||||
|
|
||||||
|
[ proxy_cert_ext ]
|
||||||
|
# These extensions should be added when creating a proxy certificate
|
||||||
|
|
||||||
|
# This goes against PKIX guidelines but some CAs do it and some software
|
||||||
|
# requires this to avoid interpreting an end user certificate as a CA.
|
||||||
|
|
||||||
|
basicConstraints=CA:FALSE
|
||||||
|
|
||||||
|
# This is typical in keyUsage for a client certificate.
|
||||||
|
# keyUsage = nonRepudiation, digitalSignature, keyEncipherment
|
||||||
|
|
||||||
|
# PKIX recommendations harmless if included in all certificates.
|
||||||
|
subjectKeyIdentifier=hash
|
||||||
|
authorityKeyIdentifier=keyid,issuer
|
||||||
|
|
||||||
|
# This stuff is for subjectAltName and issuerAltname.
|
||||||
|
# Import the email address.
|
||||||
|
# subjectAltName=email:copy
|
||||||
|
# An alternative to produce certificates that aren't
|
||||||
|
# deprecated according to PKIX.
|
||||||
|
# subjectAltName=email:move
|
||||||
|
|
||||||
|
# Copy subject details
|
||||||
|
# issuerAltName=issuer:copy
|
||||||
|
|
||||||
|
# This really needs to be in place for it to be a proxy certificate.
|
||||||
|
proxyCertInfo=critical,language:id-ppl-anyLanguage,pathlen:3,policy:foo
|
||||||
|
|
||||||
|
####################################################################
|
||||||
|
[ tsa ]
|
||||||
|
|
||||||
|
default_tsa = tsa_config1 # the default TSA section
|
||||||
|
|
||||||
|
[ tsa_config1 ]
|
||||||
|
|
||||||
|
# These are used by the TSA reply generation only.
|
||||||
|
dir = ./demoCA # TSA root directory
|
||||||
|
serial = $dir/tsaserial # The current serial number (mandatory)
|
||||||
|
crypto_device = builtin # OpenSSL engine to use for signing
|
||||||
|
signer_cert = $dir/tsacert.pem # The TSA signing certificate
|
||||||
|
# (optional)
|
||||||
|
certs = $dir/cacert.pem # Certificate chain to include in reply
|
||||||
|
# (optional)
|
||||||
|
signer_key = $dir/private/tsakey.pem # The TSA private key (optional)
|
||||||
|
signer_digest = sha256 # Signing digest to use. (Optional)
|
||||||
|
default_policy = tsa_policy1 # Policy if request did not specify it
|
||||||
|
# (optional)
|
||||||
|
other_policies = tsa_policy2, tsa_policy3 # acceptable policies (optional)
|
||||||
|
digests = sha1, sha256, sha384, sha512 # Acceptable message digests (mandatory)
|
||||||
|
accuracy = secs:1, millisecs:500, microsecs:100 # (optional)
|
||||||
|
clock_precision_digits = 0 # number of digits after dot. (optional)
|
||||||
|
ordering = yes # Is ordering defined for timestamps?
|
||||||
|
# (optional, default: no)
|
||||||
|
tsa_name = yes # Must the TSA name be included in the reply?
|
||||||
|
# (optional, default: no)
|
||||||
|
ess_cert_id_chain = no # Must the ESS cert id chain be included?
|
||||||
|
# (optional, default: no)
|
||||||
|
ess_cert_id_alg = sha1 # algorithm to compute certificate
|
||||||
|
# identifier (optional, default: sha1)
|
||||||
|
|
||||||
|
[insta] # CMP using Insta Demo CA
|
||||||
|
# Message transfer
|
||||||
|
server = pki.certificate.fi:8700
|
||||||
|
# proxy = # set this as far as needed, e.g., http://192.168.1.1:8080
|
||||||
|
# tls_use = 0
|
||||||
|
path = pkix/
|
||||||
|
|
||||||
|
# Server authentication
|
||||||
|
recipient = "/C=FI/O=Insta Demo/CN=Insta Demo CA" # or set srvcert or issuer
|
||||||
|
ignore_keyusage = 1 # potentially needed quirk
|
||||||
|
unprotected_errors = 1 # potentially needed quirk
|
||||||
|
extracertsout = insta.extracerts.pem
|
||||||
|
|
||||||
|
# Client authentication
|
||||||
|
ref = 3078 # user identification
|
||||||
|
secret = pass:insta # can be used for both client and server side
|
||||||
|
|
||||||
|
# Generic message options
|
||||||
|
cmd = ir # default operation, can be overridden on cmd line with, e.g., kur
|
||||||
|
|
||||||
|
# Certificate enrollment
|
||||||
|
subject = "/CN=openssl-cmp-test"
|
||||||
|
newkey = insta.priv.pem
|
||||||
|
out_trusted = insta.ca.crt
|
||||||
|
certout = insta.cert.pem
|
||||||
|
|
||||||
|
[pbm] # Password-based protection for Insta CA
|
||||||
|
# Server and client authentication
|
||||||
|
ref = $insta::ref # 3078
|
||||||
|
secret = $insta::secret # pass:insta
|
||||||
|
|
||||||
|
[signature] # Signature-based protection for Insta CA
|
||||||
|
# Server authentication
|
||||||
|
trusted = insta.ca.crt # does not include keyUsage digitalSignature
|
||||||
|
|
||||||
|
# Client authentication
|
||||||
|
secret = # disable PBM
|
||||||
|
key = $insta::newkey # insta.priv.pem
|
||||||
|
cert = $insta::certout # insta.cert.pem
|
||||||
|
|
||||||
|
[ir]
|
||||||
|
cmd = ir
|
||||||
|
|
||||||
|
[cr]
|
||||||
|
cmd = cr
|
||||||
|
|
||||||
|
[kur]
|
||||||
|
# Certificate update
|
||||||
|
cmd = kur
|
||||||
|
oldcert = $insta::certout # insta.cert.pem
|
||||||
|
|
||||||
|
[rr]
|
||||||
|
# Certificate revocation
|
||||||
|
cmd = rr
|
||||||
|
oldcert = $insta::certout # insta.cert.pem
|
Binary file not shown.
File diff suppressed because one or more lines are too long
After Width: | Height: | Size: 71 KiB |
91
OpenSSL_liboqs_oqsprovider/PQ_PROJECT_SSL_TLS/readme
Normal file
91
OpenSSL_liboqs_oqsprovider/PQ_PROJECT_SSL_TLS/readme
Normal file
@ -0,0 +1,91 @@
|
|||||||
|
[14.04.2024]
|
||||||
|
CLIENT_SERVER_SECURE, CLIENT_SERVER_SECURE_BIO
|
||||||
|
- Testovane na verzii OpenSSL 3.3.0, liboqs 0.10.0, oqs-provider 0.6.0
|
||||||
|
|
||||||
|
[11.04.2024]
|
||||||
|
CLIENT_SERVER_SECURE, CLIENT_SERVER_SECURE_BIO
|
||||||
|
- Testovane na verzii OpenSSL 3.3.0
|
||||||
|
|
||||||
|
[24.2.2024]
|
||||||
|
CLIENT_SERVER_SECURE, CLIENT_SERVER_SECURE_BIO
|
||||||
|
- Rozsirenie funkcie initSSLContext(), aktivacia OQS-providera cez API
|
||||||
|
- Doplnene priklady nastavenia premennej DEFAULT_GROUPS
|
||||||
|
- Testovane s oqsprovider 0.5.3 zalozenom na liboqs 0.9.2
|
||||||
|
- Testovane na Win11 x64, Win10 x64, Ubuntu 22 a Win 7 x86
|
||||||
|
|
||||||
|
OQSPROVIDER
|
||||||
|
- Pridany priecinok so suborom oqsprovider.dll vytvoreny pre BPS obraz Win 7
|
||||||
|
- Vytvorene README s navodom na pouzitie prilozeneho oqsprovidera
|
||||||
|
|
||||||
|
[17.2.2024]
|
||||||
|
CLIENT_SERVER_SECURE, CLIENT_SERVER_SECURE_BIO
|
||||||
|
- testovanie oqs-providera, ktory umoznuje vyuzivat PQ algoritmy v TLS 1.3
|
||||||
|
- Upravene vypisy oboch aplikacii
|
||||||
|
- Doplnene vypisy o pouzitych key exchange/encapsulation a signature algoritmov
|
||||||
|
|
||||||
|
CERTIFICATEs
|
||||||
|
- Pridana zlozka pre generovanie PQ algoritmov
|
||||||
|
- Pridany subor gen_PQ_cert.bat na generovanie PQ algoritmov
|
||||||
|
- Vytvoreny README so zoznamom dostupnych PQ algoritmov
|
||||||
|
|
||||||
|
[8.2.2024]
|
||||||
|
CLIENT_SERVER_SECURE, CLIENT_SERVER_SECURE_BIO
|
||||||
|
- Testovane na verzii OpenSSL 3.2.1
|
||||||
|
|
||||||
|
CERTIFICATEs
|
||||||
|
- Upravene certificate-authority-options.conf pri generovani ECC a RSA
|
||||||
|
- Upraveny subor gen_cert_RSA.bat - zmenena velkost generovanych klucov
|
||||||
|
|
||||||
|
[12.9.2023]
|
||||||
|
- Konverzia obrazkov v dokumentacii na vektorove
|
||||||
|
|
||||||
|
[28.8.2023]
|
||||||
|
- Vektorove obrazky pridane do wordu
|
||||||
|
- Pridal som k otestovanym nastrojom aj 32-bitovou GCC 13.2 posix winlibs rel.1 a OpenSSL 3.1.2, ktore ste avizovali v readme
|
||||||
|
- Vygeneroval som vektorove obrazky do PDF formatu
|
||||||
|
- Pod niektorymi obrazkami som upravil lenegdy (opis obrazka)
|
||||||
|
- Formalna uprava textu
|
||||||
|
- Pridal som zdroj z ktoreho pochadza povodny projekt
|
||||||
|
- Vektorove PDF obrazky som umiestnil do .zip suboru Janitor_Martin_documents/Documents
|
||||||
|
|
||||||
|
[10.8.2023]
|
||||||
|
- Zmena v subore CLIENT_SERVER_SECURE_BIO/CLIENT/client.c
|
||||||
|
BIO_free_all(sock) -> SSL_free(ssl); kvoli spravnemu
|
||||||
|
uvolneniu pamate
|
||||||
|
- Uprava opisu serioveho cisla v dokumentacii + pridanie nazornej ukazky do prilohy
|
||||||
|
- Uprava prikazu pre zobrazenie certifikatu v dokumentacii
|
||||||
|
|
||||||
|
|
||||||
|
[12.7.2023]
|
||||||
|
-------------------------------------------------------------------------------------
|
||||||
|
CLIENT_SERVER_SECURE, CLIENT_SERVER_SECURE_BIO
|
||||||
|
- Zmazanie prebitocnych suborov
|
||||||
|
- Sparovanie pre BPS obraz
|
||||||
|
- Pridanie osobitnych kompilacnych suborov pre
|
||||||
|
client a server [comp_client.bat a comp_server.bat]
|
||||||
|
- Pridanie bat suborov pre spustenie klienta a servera
|
||||||
|
[start_server.bat a start_client.bat]
|
||||||
|
- Formalna uprava zdrojovych kodov client.c a server.c
|
||||||
|
- Nahradenie tabulatorov medzerami
|
||||||
|
|
||||||
|
CLIENT_SERVER_SECURE_BIO
|
||||||
|
- Oprava chyby ktora sposobovala zlihanie a nasledne
|
||||||
|
spadnutie servera [server.c -> Pridanie BIO_pop() funkcie]
|
||||||
|
|
||||||
|
DOKUMENTACIA
|
||||||
|
- Pridanie nazornych ukazok do priloh
|
||||||
|
- Opisanie extensions v prilohe
|
||||||
|
- Podrobnejsie opisanie serioveho cisla
|
||||||
|
- Formalna uprava textu
|
||||||
|
- Oprava opisu niektorych funkcii, prepinacov ...
|
||||||
|
- modifikacia suboru program_structure.svg
|
||||||
|
- vytvorenie 2 suborov schematic pre obidva projekty,
|
||||||
|
ktore zobrazuju schemu a opis vyuzitych funkcii v projekte
|
||||||
|
- Pridanie uzitocnych liniek
|
||||||
|
|
||||||
|
|
||||||
|
Nastroje
|
||||||
|
- Otestovane na najnovsej verzii OpenSSL 3.1.1 30 May 2023
|
||||||
|
- Otestovane na najnovsom Winlibs gcc prekladaci: gcc (MinGW-W64 x86_64-ucrt-posix-seh, built by Brecht Sanders) 13.1.0
|
||||||
|
- Otestovane s nastrojmi vyuzitymi v BPS obraze
|
||||||
|
|
Loading…
Reference in New Issue
Block a user