[PD1] Added certificates and fixed a few things

This commit is contained in:
Afonso Franco 2024-04-18 20:15:29 +01:00
parent b7023329de
commit 1cb81d2279
Signed by: afonso
SSH key fingerprint: SHA256:aiLbdlPwXKJS5wMnghdtod0SPy8imZjlVvCyUX9DJNk
28 changed files with 596 additions and 54 deletions

View file

@ -1,11 +1,6 @@
# Structure # Report
### Server:
- data_management
### Client: ## Key Store generation
- interface
### Libs [Commands used to generate the key stores](./certs/README.md)
- crypto
- networking

54
Projs/PD1/certs/CA/CA.key Normal file
View file

@ -0,0 +1,54 @@
-----BEGIN ENCRYPTED PRIVATE KEY-----
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
-----END ENCRYPTED PRIVATE KEY-----

29
Projs/PD1/certs/CA/CA.pem Normal file
View file

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIE/TCCAuWgAwIBAgIUbbTnDexnXfjy2qZItJ59aWuc8aAwDQYJKoZIhvcNAQEL
BQAwDTELMAkGA1UEAwwCQ0EwIBcNMjQwNDE4MTgyODMzWhgPMjA3NDA0MDYxODI4
MzNaMA0xCzAJBgNVBAMMAkNBMIICIjANBgkqhkiG9w0BAQEFAAOCAg8AMIICCgKC
AgEAkecsrHHXnMkWW9bOQ5wmmpVBxkYxKSR2DR5vesSCw+e2yKhYrcO5bIb1vgwJ
vhrzFjqIC5Nos3T0MDaOYWRHj4rtrM7lgo8Mwo5rc6ZiNBtXXtS5vJhEerIDim+M
ONdQhxlg86BlHfmX5kDXxHY1eYSbSfuydD+HNJE0IZvQvWRhmdAmQCRUppcZgtTK
h6PGdOP6SX0vM5TqZfNVdbU4knEB+CN/brLPUCGIfqqDTxyFIuMesZDAb4qHts2Q
p5de/FqoQZSuO1SlPLEbCPXi98QqHK9yn6hfeHMF++vyLxkG3TjTaSvWRkH1W15Q
KV2oozbrvxQlr50bYkkKDu9s30B04lHDse85eojH0mgQp5OUFy101Qa6jbB2uTuI
0BYNCxlFds+61xlxR5ygDdTy324uNAbshA319SClbN4+8Ei5GhpYkKKefCvNRbOr
i0nnNhOFEsSQIkvd2jf2WjwwBKKlkxRd7t1r+jA3Z4K1/KkPrdMLD62XnBII8tLp
Sj3KD4DX1zirSnyyPcZnoyLwPPLvpq5dRdSM0730UdU3FKOY4J/JbUX4tTsaymY+
zE3bEWVtN9c34x4NFKx+kcNIWsZVaGolX1vNONZHhQN+aHetq9zxOlF8LGABiXXM
oi+iFLlHDYHExhJ/zFBv9IZRiGZ+oF7j3/NHEfk6xyTDDNkCAwEAAaNTMFEwHQYD
VR0OBBYEFKtm0LduXX4qkeE8J8R2cbzbbcc6MB8GA1UdIwQYMBaAFKtm0LduXX4q
keE8J8R2cbzbbcc6MA8GA1UdEwEB/wQFMAMBAf8wDQYJKoZIhvcNAQELBQADggIB
ACvlvEFuQO7fz7R/811pOXhGlg3b2OFqPcPgDMjm5GniCf1ATmvRDXz3NUftMZEd
/RL4sdBdgVSwsPfGlgvBXKzjdPrhxnKXWnVxubTKK9QIUU1iNzPXUivsMp7Kqel9
aHSeH2vWGTGB0VVm94DtMoSU5szHTi43fcchqkYic9HoYRHt/EwcuU7axC3qy6kP
6v4qq2H0a86Hw1e5hzSrKJMljcuuMyvq70kF9QU8YPd9Myj29dsWBeTGiJcNyb/p
eeJ19XC+k1QUw2DlP1K9tXoP/Kr+sS38w+9Ivb0PKqhc7segJPYItvH/zsX5lBLo
LtbFayNmw0f6b+D4wM3mRiRBNir00SMvQiDvLIrfE5gE5sFCtcFn27Fx2PfL2dYu
3yCJ7JDPT5sbSxIMW98QyQL5RtSZFhQZhQcbIXV+8MaXal5LuHVcyN3IqRXo+9CA
Ftqg5HlAX9zgypRtZpffTey889Hqp4TUvbShuolp/cfDQ8XeAS+r5oNQ4+zg7TLG
Wn1p5T3ml+74uKR8Nrfn+5PYJnyZht6S+5YtjwS9S3pGMcHeuisGMW+B3pSa1VlO
F64Ia/VIBpg4HQwbYW1TMG6dmRyK+DoZ4eDHPPI3AfIzRWA13zQcey19VXZc2WuC
0JNh5FxvI551YXrIedWb7gwfz8I5mmOmz4JCRQ/DWy/0
-----END CERTIFICATE-----

View file

@ -0,0 +1 @@
5D0E05A111F416F0F91F6C4D69A0D3C1F8393D3E

Binary file not shown.

48
Projs/PD1/certs/README.md Normal file
View file

@ -0,0 +1,48 @@
# Generating keys
1. Generate CA key and certificate:
```bash
openssl genrsa -aes256 -out CA/CA.key 4096
openssl req -x509 -new -nodes -key CA/CA.key -sha256 -days 18250 -out CA/CA.pem -subj "/2.5.4.3=CA"
```
The CA passphrase is 1234
2. Generate server key and CSR:
```bash
openssl genrsa -out server/server.key 4096
openssl req -new -key server/server.key -out server/server.csr -subj "/2.5.4.11=MSG SERVICE/2.5.4.65=SERVER"
```
3. Sign the server CSR with CA:
```bash
openssl x509 -req -in server/server.csr -CA CA/CA.pem -CAkey CA/CA.key -CAcreateserial -out server/server.crt -days 1825 -sha256
```
4. Generate the server's keystore:
```bash
openssl pkcs12 -export -out server/server.p12 -inkey server/server.key -in server/server.crt -certfile CA/CA.pem -name "ServerKeyStore"
```
The passphrase used for the keystore is server
5. Generate each client's key and CSR:
```bash
openssl genrsa -out client{NUM}/client{NUM}.key 4096
openssl req -new -key client{NUM}/client{NUM}.key -out client{NUM}/client{NUM}.csr -subj "/2.5.4.11=MSG SERVICE/2.5.4.65=CL{NUM}/2.5.4.3=Client {NUM}"
```
6. Sign the client CSR with CA:
```bash
openssl x509 -req -in client/client.csr -CA CA/CA.pem -CAkey CA/CA.key -CAcreateserial -out client/client.crt -days 1825 -sha256
```
7. Generate the client's keystore:
```bash
openssl pkcs12 -export -out client{NUM}/client{NUM}.p12 -inkey client{NUM}/client{NUM}.key -in client{NUM}/client{NUM}.crt -certfile CA/CA.pem -name "Client{NUM}KeyStore"
```
The passphrase used for the keystore is client{NUM}

View file

@ -0,0 +1,30 @@
-----BEGIN CERTIFICATE-----
MIIFFDCCAvygAwIBAgIUXQ4FoRH0FvD5H2xNaaDTwfg5PTwwDQYJKoZIhvcNAQEL
BQAwDTELMAkGA1UEAwwCQ0EwHhcNMjQwNDE4MTg0MDQ3WhcNMjkwNDE3MTg0MDQ3
WjA3MRQwEgYDVQQLDAtNU0cgU0VSVklDRTEMMAoGA1UEQQwDQ0wxMREwDwYDVQQD
DAhDbGllbnQgMTCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALrrWjdc
rLHyKKPhEZdjCXb0d0Jx8pQB2Gkh56+q8n8qDMh+xP8fNr+fAKYwpicmrjIZTNIq
AzdEjoVfvKvsLFXPDrb8P2qxNN5tHacjTjJezgSGBB8WrBNr0AC9EhxtmSt0fgUx
v0QW4KsNksFcLlIILaT0UYZG2ULEcw0Vg94crX7PxQJUTuCGZyxLVfyOELupl5qA
9vx9RbSGGcCaNFzy9UZBWxuO+hIdG9uthyr5uVitc9/Ru9jR65NSa+mt9LVPfKLe
PeDEZlLL675bFOISKkmgO0014sPzvg5W8Jjoewg7igklFeiOXziIEoa9VbJxi/2l
tiNo5mughQHIw6LP8KlTgaQdvT9zmOejhO+7cbBFp5g+PldPi0L0GKyUtpWnjEv7
eoUxwXaVtuRQk/u5JYZn0XLTId5vpZjvToCdbyamVATl+WchBr1J8+/2SeqHMG1F
7pVv0ZWIV71m2Blgtr8qA+AMIm5vBTaVrKil/+XPog004MM+shsoZEW/YYZSyf5I
F6U5z3oOoKys61SYoqrMK6B6xA5JsUOjOsAOsEJoRuyzXyMXJhEK84xj6AvI8M9a
mFLYlpqr6PyAIdFZvm2v8D3OZpXtzvR+Bcvf3czbfrbxWTpo5p4awZ4eYlkozYu1
ubRYK4TzXqLbSImjQ9/K26WT6N9uZur4EsBXAgMBAAGjQjBAMB0GA1UdDgQWBBRS
S+bnUAt3V83EnGppznpb7viU1TAfBgNVHSMEGDAWgBSrZtC3bl1+KpHhPCfEdnG8
223HOjANBgkqhkiG9w0BAQsFAAOCAgEAEnsbOGgHJJg4XLnYSiVtP8nu/HxJFRgW
PWm5FTfmkHqW6E7FJa5wRe8gCU/CERF5rV6aoaswwI2gfmFWLp6HIjpRRzK0UvWs
/42gVPuhs9P9uZOdFULLYLTQ8w47ft0xBV7d/SjtItL/QfcZdjDoa5QCctQf9CnT
oow18ijoTZM8MrtY0wKdSeXtH8vR/xc8jrfB6JA58nIIf4wdoiDCUhJe9jWdGajO
vVT0tjExyi4sBLmxRgO8Pkrx8DwHGHX8pFGU0Bqt/nIetfnTevgTa+kMH1x8nAJw
GlV3kiNoC18VRidK/73hvgUltAV0UfLox/gBMo6NPo/MNfzrsBCEhUAna3yJWeTj
zHDQA88mcOaA9G9Pe7mkMfcwfYPcsEce1O2Q8S6snkku+8sNu9xU0ThiUEGLFq80
7vQPpAtCZkBkMJLBbERZg8kTxsYHPvvp6laibO9SWLjPmevWG9GW/m7DFvkWM1xK
vaqtl1l9ExbRymITc/d0+hjn0kI+h/ZDoNt28E/xl0HXN2sManTLgzn5m2vR2I89
O7DpOdFK9ppNEdJ+f+g31DmmQzlvfGpFU7D8bBUD+KmdZ1WRi9FNQLO5I67/tJ0k
meYSKfd3vyZagrLQC4QIks5pAs0slX2+gDNDppvwFybp+agm8Py/AhxYtZmFpdDz
MgYY0m5LXPM=
-----END CERTIFICATE-----

View file

@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIEfDCCAmQCAQAwNzEUMBIGA1UECwwLTVNHIFNFUlZJQ0UxDDAKBgNVBEEMA0NM
MTERMA8GA1UEAwwIQ2xpZW50IDEwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQC661o3XKyx8iij4RGXYwl29HdCcfKUAdhpIeevqvJ/KgzIfsT/Hza/nwCm
MKYnJq4yGUzSKgM3RI6FX7yr7CxVzw62/D9qsTTebR2nI04yXs4EhgQfFqwTa9AA
vRIcbZkrdH4FMb9EFuCrDZLBXC5SCC2k9FGGRtlCxHMNFYPeHK1+z8UCVE7ghmcs
S1X8jhC7qZeagPb8fUW0hhnAmjRc8vVGQVsbjvoSHRvbrYcq+blYrXPf0bvY0euT
UmvprfS1T3yi3j3gxGZSy+u+WxTiEipJoDtNNeLD874OVvCY6HsIO4oJJRXojl84
iBKGvVWycYv9pbYjaOZroIUByMOiz/CpU4GkHb0/c5jno4Tvu3GwRaeYPj5XT4tC
9BislLaVp4xL+3qFMcF2lbbkUJP7uSWGZ9Fy0yHeb6WY706AnW8mplQE5flnIQa9
SfPv9knqhzBtRe6Vb9GViFe9ZtgZYLa/KgPgDCJubwU2layopf/lz6INNODDPrIb
KGRFv2GGUsn+SBelOc96DqCsrOtUmKKqzCugesQOSbFDozrADrBCaEbss18jFyYR
CvOMY+gLyPDPWphS2Jaaq+j8gCHRWb5tr/A9zmaV7c70fgXL393M23628Vk6aOae
GsGeHmJZKM2Ltbm0WCuE816i20iJo0Pfytulk+jfbmbq+BLAVwIDAQABoAAwDQYJ
KoZIhvcNAQELBQADggIBABoGiv4jhBYvhUlruiNnJkgUGuEWMsQhnAurHtyTtNBA
OHx3NlFsWTdY+iicH558+ECzExgoPf7cYZ2XaBRIN9XGZWP89nTR1BcH6keva5un
CsVEhY03BLgpShjk6PwC3lA998dFPT97igM0KgZtpDKmejxjUBBK0iCmbQczCVKw
TMfPxt3wUWmiiBK1EAGuolij7zcA7dqLd2yaURqMe+QJ2KV+KE+isLXoycrbSJHz
Ek9fsh9lqBEtKoH8Roz67s2RP6zHkDK386Nb4tQTAFW8b1T8TWg1OHr+/JcQ95Z9
Zvk6Q+DkBYfLeTxznKN/Spbx5r7SziXB3+D1IkN9lNrkxB6helTAYAPENVBW5TX+
91Ei4JZi/+Wp+/SEmJyOJIvq2CPtJCoHQjS3x5xg2WPLgxJGJ8gIPuEBmYvCjcb8
jUhE0t/sesIrAxHx3zOmzNM7Z44cEp+4bTPigGV1lxdWqW9ZCc/JkyixM78jhfWW
GpMRjeT7Okb2/tyB+atpy3FM8bng1leAJeNn872E9kk03d6B65jTdA6ruSAz+HAZ
NVtawYsx5IQEpAY+8iK/8/RjJxsW1cUQsM/z1vwNdWSAOtH27sps15ldw6opYTLe
PY8tjkEy2e6savcGVF+4QWAZbLyWChs6g9xmFBDCpx1+JM1JoJGbZ7imuFA3e1Ma
-----END CERTIFICATE REQUEST-----

View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
d1KXMJti52AbxejgdJrc2tjRLs0Q
-----END PRIVATE KEY-----

Binary file not shown.

View file

@ -0,0 +1,30 @@
-----BEGIN CERTIFICATE-----
MIIFFDCCAvygAwIBAgIUXQ4FoRH0FvD5H2xNaaDTwfg5PT0wDQYJKoZIhvcNAQEL
BQAwDTELMAkGA1UEAwwCQ0EwHhcNMjQwNDE4MTg0MDU4WhcNMjkwNDE3MTg0MDU4
WjA3MRQwEgYDVQQLDAtNU0cgU0VSVklDRTEMMAoGA1UEQQwDQ0wyMREwDwYDVQQD
DAhDbGllbnQgMjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAMvAGLW1
+u3pGF1cupT0K6L6MLaUzAqTHKdWiL8ne3vySHu8VC/c3gPooisC7HZyVqnZiR86
v1GXnd7Yy2B89R6PDLHooUU/KeeuaetKCX/pGCekw6Q+tixUqtRRL2QWtpWKMe9x
zs5SQNudlxig/Mk2wNgycCtsklHJUXyyXBeKLGH/EsKwnX6PiX4MAWCizdxT+03j
XkgvxDhY/uHQBXFfECCbKLFKR04tqHukyBhjErPbBDEs8V5PXr1SDc+C7wEiGWKW
YH7YfOsEzTJAqBc+3U93ZuEDhrVHF39YuQXGN6XO7yJKL0haxEbztep5jHBZ6wal
ZySlzrrN5CS//Tu2mM10qe2ZgRGQlxy13TpHL+1l5NKprGrZgI/lCIl7PWLk3A+F
0Ay5O2TqHnqzOZY9KTLbFsDMsWneNCXepoqMlnzB2ka1IXBm7a7oZ9fhdTpQPoks
LlZkEq+cUiy3jRuEqdrPyT7nr/k6CXD90UeGtmzjtAvufEyB0YmoNeMzwHeuud3Q
4ckaTWJc1ArwEYB+2lJQMo78sLIVs68jiQbTU1xddgipU1TzwujFxP/fTicUNbfx
hCijPG3MJCNKX0pYhIGXtdbMYhDbrCgNpisuYqoo3aGjRrRu9gowYbjXYjavaeln
6a4jt3Zg0nCRFnllplXXf6nzwn3rkyFMoyTXAgMBAAGjQjBAMB0GA1UdDgQWBBRf
VE18fE1oGMIZPQ8VmyR2BY+IfDAfBgNVHSMEGDAWgBSrZtC3bl1+KpHhPCfEdnG8
223HOjANBgkqhkiG9w0BAQsFAAOCAgEAXvoNY5VWOJ0KBlOkk+BafG4pR7vNC0AI
8rh6snNQCwSv3m8Zq2tlGIRltQK+lkAM/xi0jyiFAhsApNlJ11JrUZrKrQ8sgBTl
TM/tUhd/uhrhKLOUh+ooeWTZ3elj1Tp6hm0XhUZu5STErUfJgxQFSZBH4ryGfUQ7
yd2hIMT6iMHx0wnUhBtoMatq/NNsTMXv+90TEcRreCjF1aYSDKc0bT8Pzvzk/KF+
HhrLJlNOvUyVc1s4mDdxKfjVKc8fDz4+myHn2KBW95PVpwAUfhwhlIsV7QHzWTaN
/73KjWpsGeFu3chmDaRY+x8j8guAunPjF/GKQ65rh7TfLmDUUxSrtwkLrAMioXU5
6T+IGKvgJiZ5RQHAsNLtI3hmL4vSxrLcG0FRgNyuXWHOAtvHJaxj6vXME6ypmhZ2
efRWALF6qcUw/V8ehQQvxl6aVEHTvcqfkpFEKZNaNDBJVq994yPdZz9ArFsh1L/a
JPW+WU2apebzUx1OOnc6zsmvFQGv4626V0Xp77arUfSJUBE3iFdNKSnrjIAcaCLy
qiF29B/1pUEwlB26qf/A25O7mKurYjFEP0jTEl6mynyg2HK5Vb5gHrzvdAaQ61p3
tA09OaZQfp4D4sv+AEF98iQ6lq3KAj3Lyl7MeQ9/d++nIFGMdZopxwhj75Nze2xN
KwS6onv3oLQ=
-----END CERTIFICATE-----

View file

@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIEfDCCAmQCAQAwNzEUMBIGA1UECwwLTVNHIFNFUlZJQ0UxDDAKBgNVBEEMA0NM
MjERMA8GA1UEAwwIQ2xpZW50IDIwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQDLwBi1tfrt6RhdXLqU9Cui+jC2lMwKkxynVoi/J3t78kh7vFQv3N4D6KIr
Aux2clap2YkfOr9Rl53e2MtgfPUejwyx6KFFPynnrmnrSgl/6RgnpMOkPrYsVKrU
US9kFraVijHvcc7OUkDbnZcYoPzJNsDYMnArbJJRyVF8slwXiixh/xLCsJ1+j4l+
DAFgos3cU/tN415IL8Q4WP7h0AVxXxAgmyixSkdOLah7pMgYYxKz2wQxLPFeT169
Ug3Pgu8BIhlilmB+2HzrBM0yQKgXPt1Pd2bhA4a1Rxd/WLkFxjelzu8iSi9IWsRG
87XqeYxwWesGpWckpc66zeQkv/07tpjNdKntmYERkJcctd06Ry/tZeTSqaxq2YCP
5QiJez1i5NwPhdAMuTtk6h56szmWPSky2xbAzLFp3jQl3qaKjJZ8wdpGtSFwZu2u
6GfX4XU6UD6JLC5WZBKvnFIst40bhKnaz8k+56/5Oglw/dFHhrZs47QL7nxMgdGJ
qDXjM8B3rrnd0OHJGk1iXNQK8BGAftpSUDKO/LCyFbOvI4kG01NcXXYIqVNU88Lo
xcT/304nFDW38YQoozxtzCQjSl9KWISBl7XWzGIQ26woDaYrLmKqKN2ho0a0bvYK
MGG412I2r2npZ+muI7d2YNJwkRZ5ZaZV13+p88J965MhTKMk1wIDAQABoAAwDQYJ
KoZIhvcNAQELBQADggIBAG8bVcEEU9wmepZzr/Rfq5NNiO+KcGcdRTvmW2jCEcAu
Gi/Tk3YkKsgRe5BDFc3bpQR+qkh9jolC72sLPLZ3F1LVuBWum9feQ43DmKLzzalV
Znry7LGOGu37h1CrRb3HBJZ84+TM0OZLbnX/U4MZP09GRyhANkQBcQ5u5BQIcomE
BEz3j0NvAfr96nIZdpbWgJoamDbAfle8gfxFYlcGYe+wAUXlrWYYbf0nlH3E1AAx
FRFgUHGaR3rl+Y0QeSxGeeN32iQ3HZhreRHzR2IN8KmNjhynRmFQdPitEpR9CJre
p0s2Se5Jx8bOwhrBhN7UcN3mSXdjD2Lp1UxQcvT0EMVPVLOd6d+e0sOHdQ0SjgTz
O4hSNCvhz6sIE5c3q+ONkAB2OrHA7ZitFWNk4EnGr2Yhi+g5sr3wxwRIQkx2jfVK
S4dQ8gW8r1uny3L5pqzI6IoRXpdm1hS2gug8igfNTYEePGceG4GPRL+Z87z5zmu5
bxaNqMZLlco9k6tiRlkt1mcuJiH1GfVj5UEHGQPYEcu8tL+DKaCwdHK+q+P5eQdq
ONEqTlqo93SccjnJ5w0q0N+78/QC6jXEmsjcC0BnwiT2vl5XFPFgvJRf2A5wLtlZ
VtACzltX5GJSE1HFo3DxAONhHPB0oNrmbnpe25nF3woQZAyR0TQz+C0r39Naydc3
-----END CERTIFICATE REQUEST-----

View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
iRL9rU5G/sk86BnyFiCyzDT2AaI3rCC7
-----END PRIVATE KEY-----

Binary file not shown.

View file

@ -0,0 +1,30 @@
-----BEGIN CERTIFICATE-----
MIIFFDCCAvygAwIBAgIUXQ4FoRH0FvD5H2xNaaDTwfg5PT4wDQYJKoZIhvcNAQEL
BQAwDTELMAkGA1UEAwwCQ0EwHhcNMjQwNDE4MTg0MTA3WhcNMjkwNDE3MTg0MTA3
WjA3MRQwEgYDVQQLDAtNU0cgU0VSVklDRTEMMAoGA1UEQQwDQ0wzMREwDwYDVQQD
DAhDbGllbnQgMzCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBALNmzE5C
t4zsRtRhDMXpRuT5/JEUB66Gnnr+YVtadR9AgWw8CQfcZneK78ciNMeLh96w6BTA
03BV1htcaL89Zer9i7QxyVAgSxnau7MJtaQ+TvthRrFcEKdvauXFy66KpTsDFrWL
5uyL+yHasmDBPeASpn7Se2FtptAphQqBNVkOfduIFQg0+F+gKtJK036EVv4xFHh5
NQTLQvw9VWkEaZxcCrFJWS1++N/c528kbXlA4A++lxc3lG1BRVl+weJEgUhintF5
ajQueaYLCbsGn5njI5h2qZvIvzMMKkhWmEoLLQK1h9XQ2mxuySL5FK2UbfstrRyl
seCUmVgmmR3GVNR5mFc4hZPEGoshzAGtA4ZQH1tZBrS9AlXOOjuhhrpZVeR1MBfO
FtjYko3glifm1yt1/jsfLLD9l2TnjXENIyFxENs2de7pf8b1ThsUyZhaP1DUg0wl
6xqG5cBLMkbhugCSxPV6R1pgtrRZ7xm9QV0p2sEc8G95Z6YE1qCf2WmZ7vFzVlwA
nbgFjgLaIm1zNHQeOjJ9uDyXolWHnD0nwzSxKNpdu5Tikxs9RJwLf1ajkLnkk5+U
X8qLdHJZP7Q4Nx97fQpKqASWbpeCIRuONd1iSBVM0FhHXc1eACe1aA4HBM49ddgt
QA9LPrcxr2O4N0vOy9dEKVw6vaWFzGxPpOYxAgMBAAGjQjBAMB0GA1UdDgQWBBSs
QPc32xM1jAiR9eJeT+2umJMrwzAfBgNVHSMEGDAWgBSrZtC3bl1+KpHhPCfEdnG8
223HOjANBgkqhkiG9w0BAQsFAAOCAgEADV+6qXAODAf/Dx6sUzzpjHhe0PlotLZ3
B1onT5J3+uZPfqsROGFpsfU3HI4BpeiG7yok0qyZrkYnioVntXnj9OmRA0+Fik4v
3YAPS+SBdtWyOeuA5mhVDiHOlzRmrlDTypfdAoI9Up/L/3hM83Z5DeOsV07K5oVw
CUT+LJCoiGY0yHHeKLi8WYJVmhBpwzhz/vz0aZduG6w8rPh7XG888d4kbFdFuYxg
Tfs7D/TN9gwDcKHJKrt0wVF/JMGyw9DCvLYbF95XSfNbml07exPGqnnI5EFgfVgj
0xC/vD4ahUczm9BA51Rf23LVIZ0UgU0Cm7AJ28yhZyzr60ewUdRY3xXxOnGW5Jri
2pZgRzB0tUehJ+hghFLP9BDurYtnqf6t0sH+GuL5akvOqSj0ECwlMd3M6p6lqKbk
ifGlBkdIU8i5tnmjsjz0GjpgjDpCJBO6Ps2RaPmUcDIXVNvMHFEhDk5ZK22v5Sx+
0m5z2daBAfhJ4YOIdm5dEQIJWAFIBV4EGWMyrXHf+wgrlZ+59MX7+/VWxt1zPgzr
G4/JHiRGtkAOKrd9RVYsN3h4286Okbh4rt3V8j7OhiP94p62ltWSuZDx+GzGboR5
hlDAP6BFxUFN0TRR+Y/FtxaYZo9KjN2ftvkyJKrIlhR1TX6ZbeS9xsl3N3fJ/tf2
qarZg2UPjTs=
-----END CERTIFICATE-----

View file

@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIEfDCCAmQCAQAwNzEUMBIGA1UECwwLTVNHIFNFUlZJQ0UxDDAKBgNVBEEMA0NM
MzERMA8GA1UEAwwIQ2xpZW50IDMwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIK
AoICAQCzZsxOQreM7EbUYQzF6Ubk+fyRFAeuhp56/mFbWnUfQIFsPAkH3GZ3iu/H
IjTHi4fesOgUwNNwVdYbXGi/PWXq/Yu0MclQIEsZ2ruzCbWkPk77YUaxXBCnb2rl
xcuuiqU7Axa1i+bsi/sh2rJgwT3gEqZ+0nthbabQKYUKgTVZDn3biBUINPhfoCrS
StN+hFb+MRR4eTUEy0L8PVVpBGmcXAqxSVktfvjf3OdvJG15QOAPvpcXN5RtQUVZ
fsHiRIFIYp7ReWo0LnmmCwm7Bp+Z4yOYdqmbyL8zDCpIVphKCy0CtYfV0Npsbski
+RStlG37La0cpbHglJlYJpkdxlTUeZhXOIWTxBqLIcwBrQOGUB9bWQa0vQJVzjo7
oYa6WVXkdTAXzhbY2JKN4JYn5tcrdf47Hyyw/Zdk541xDSMhcRDbNnXu6X/G9U4b
FMmYWj9Q1INMJesahuXASzJG4boAksT1ekdaYLa0We8ZvUFdKdrBHPBveWemBNag
n9lpme7xc1ZcAJ24BY4C2iJtczR0Hjoyfbg8l6JVh5w9J8M0sSjaXbuU4pMbPUSc
C39Wo5C55JOflF/Ki3RyWT+0ODcfe30KSqgElm6XgiEbjjXdYkgVTNBYR13NXgAn
tWgOBwTOPXXYLUAPSz63Ma9juDdLzsvXRClcOr2lhcxsT6TmMQIDAQABoAAwDQYJ
KoZIhvcNAQELBQADggIBAEemM2fWJ0jk+ISTWVOAPulH/cBWaFc33KOs8zGioRmu
1weU2Ycammz/5ms5kE5su5XxpnV9aMFP6HRihIArPEeSJsUXncss1Xl+XQNd8Jz7
y+pn2Rmcg6Xo0Gz6lApCgyfvZofObFZYFbMSr70KmBt7Nx9XQ4tjnXZcPbLlog1i
awD4Y1xoHAXsFs7ni40MLty3LUsEYh7hE7e7sWjD6oCjaxUJxM0m1666xKPs/Kcv
4p6b2hI1oA86XIvIC2exGAORNDfVWpGI2xm+T5BjIVelgZjFwoa+nFCiiJpycvZ4
3eOv4AIUr3OQB/LRqjqQ1EAPTtWNyZVNsYj46xKFnwT91pKN5hC3DsDrNgfwvBw2
ujx7/H2krmwjmgDThV2WO0jt2M7R0r1ELafs459JcOYOS5nFsOPv9tOjdgIQ/sUP
uHpHiU8BwMlpZhw7fqGD9EYWlVrpv5CX2bbU1RASr2kcUiLqY2flTBXI1kDvM0hi
fUEQrmD/GuuD2Cx12kANthsz3vxV0Bd+roNC908H3wnrvWFz5v8UOfggQYSqH89M
XhtCODUByeKdCM07zYbf9ibDnKoNRYMconsHrGAYu8e6d2u/1rxj3EC9TQ/jo2pX
AwAsK3bWoYf8pqXYs6skcSV1K5dGuSRCwiDjYnXX16vsedpNcV+0VtHylNyVd1XY
-----END CERTIFICATE REQUEST-----

View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
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
AKUpYNbM7ean2vdszejy9hTQfQrDrg==
-----END PRIVATE KEY-----

Binary file not shown.

View file

@ -0,0 +1,29 @@
-----BEGIN CERTIFICATE-----
MIIFBDCCAuygAwIBAgIUXQ4FoRH0FvD5H2xNaaDTwfg5PTswDQYJKoZIhvcNAQEL
BQAwDTELMAkGA1UEAwwCQ0EwHhcNMjQwNDE4MTgzMzE5WhcNMjkwNDE3MTgzMzE5
WjAnMRQwEgYDVQQLDAtNU0cgU0VSVklDRTEPMA0GA1UEQQwGU0VSVkVSMIICIjAN
BgkqhkiG9w0BAQEFAAOCAg8AMIICCgKCAgEAmeKWLd2p1OoNYbyCzAl2hyiUvgCm
ZnGEOVL3/YBvLfPHOzouEHhsF5GT/SwzK+C0qT9Mxyg6D3UZsFJYuFAEvdfBmoMe
vCaQDicZ9sP082jWub4mh/eR6TMsju8Z6cTgkk48/p3U3MFGyMFL4XNvw7hpqjEW
t0346dG3ITmMuFeASB5DaHp0WG3cbqk/DonFSQPvEALGXFKSMxBlg5tHwcriIaxA
obrDfLSSxIUmt5JU0B7rco5v6AnLSbnGUIkAiv67xEqCQAUnQF0ApWRAdHrkuMwY
hpnPApWhMSgUhRY1CMSTPdpr8ahpLa/SsqAtgFdf4IE9kY6LwkC9hNyJpVuZS2MD
umEai+wk/p2HhBFtsCNqwW7E4xbZyvjrQWSTcMNY1fN3mNVOv7ACGk8xBeCXKK/B
DR+/pUO4BhGqg5hH62Xm/IR6/gD9fV8t0cwuzc5GPLewM+l4rRmPeJayzHmEjdw9
qsj9CR/GI73Zo5ZWj5ZKhJiYTaRmJhmpuxvF4lUf9srTgRti6/A5fFQw6mWEiRMc
5Q5YuUff6SM/KbmmPDhpd+T7dtMQHPd1p+ZchO9MoyMNr+RhKH3i6sawNgO94HfB
9Ne93zcza3MEeneqK1jQVzMF6f1l7UoVce6xyxm5LvUBrHAB/FD0So5pZHE/VsvJ
V0IH7qvB0G4S0SUCAwEAAaNCMEAwHQYDVR0OBBYEFLeS2yhshDHnZbY+CVj1FoVW
jwSEMB8GA1UdIwQYMBaAFKtm0LduXX4qkeE8J8R2cbzbbcc6MA0GCSqGSIb3DQEB
CwUAA4ICAQA9e4R4wGAuSMbkisA2e1+ewqMpTakiEDZUnJf4CaG2JtaDpH6R9Pi9
yF2TjGc5yTidGQ57rvVhaq/IR77blHX7JZjPrSidV+SiOq0baGS2Uk6Hz4WTSC0y
NY17IG7TZZ9ZjL++LobnU9BBhqU9C+HbGGyV42pQgk8M1+yDTnMxLFdJacbUL2jl
y53RrfPc1e6EcRukfUVRQgegxjEJVene/MDIuB3pBJeFYgjV2pTPjnGL/h4AaG02
W7PY5EAFoe27LibWJ0KeR39gC11Ot1JtdnGh31z/Vz2XE2CoiJ2Faxe3Vl13UuB2
J0FeATpZ8KMUKHIMhgbIvkln0uMLZqvgx4FPEAn4dEK3s6L936eXDseD7Soi0fbf
lNm5o4toOt1wcEpfpLQ2JYsXphvzkpw6NWIIq/f0WEh+XFj4fjFsQ/WrzgQcz+C9
NGkzvxn8v+l2Z4KRN+zAa+wg/6nOoedb3XAxWr9Q3xC/aHwWRHzGEilj/OeARYai
0mHiAI16hU/JlaV/JhokJJKAxadP7C/dWp9LV590YyNsHYFKDbVKsadGbn5K8txF
moqxSkI70lvEoJkYPtQnfeWjArsmQpF+hguQBM7EkrDzzH9hyNgriEg0pQa+zUo7
fakeyoxdu5wR7fBDCG9msiiDuPMxDmY98/Zjc7M1pd77YOGIk5dU8g==
-----END CERTIFICATE-----

View file

@ -0,0 +1,26 @@
-----BEGIN CERTIFICATE REQUEST-----
MIIEbDCCAlQCAQAwJzEUMBIGA1UECwwLTVNHIFNFUlZJQ0UxDzANBgNVBEEMBlNF
UlZFUjCCAiIwDQYJKoZIhvcNAQEBBQADggIPADCCAgoCggIBAJnili3dqdTqDWG8
gswJdocolL4ApmZxhDlS9/2Aby3zxzs6LhB4bBeRk/0sMyvgtKk/TMcoOg91GbBS
WLhQBL3XwZqDHrwmkA4nGfbD9PNo1rm+Jof3kekzLI7vGenE4JJOPP6d1NzBRsjB
S+Fzb8O4aaoxFrdN+OnRtyE5jLhXgEgeQ2h6dFht3G6pPw6JxUkD7xACxlxSkjMQ
ZYObR8HK4iGsQKG6w3y0ksSFJreSVNAe63KOb+gJy0m5xlCJAIr+u8RKgkAFJ0Bd
AKVkQHR65LjMGIaZzwKVoTEoFIUWNQjEkz3aa/GoaS2v0rKgLYBXX+CBPZGOi8JA
vYTciaVbmUtjA7phGovsJP6dh4QRbbAjasFuxOMW2cr460Fkk3DDWNXzd5jVTr+w
AhpPMQXglyivwQ0fv6VDuAYRqoOYR+tl5vyEev4A/X1fLdHMLs3ORjy3sDPpeK0Z
j3iWssx5hI3cParI/QkfxiO92aOWVo+WSoSYmE2kZiYZqbsbxeJVH/bK04EbYuvw
OXxUMOplhIkTHOUOWLlH3+kjPym5pjw4aXfk+3bTEBz3dafmXITvTKMjDa/kYSh9
4urGsDYDveB3wfTXvd83M2tzBHp3qitY0FczBen9Ze1KFXHuscsZuS71AaxwAfxQ
9EqOaWRxP1bLyVdCB+6rwdBuEtElAgMBAAGgADANBgkqhkiG9w0BAQsFAAOCAgEA
W9dQwUiDUuu3bVr2ocreKPMPBDQ2z5yQg0qqt8F8Qwg6+ZbajGBn3TN4CemptaCx
/4r41u7gf9slmzVeNPheIweAWq6crV7FB1zfqok8N2F4we8vCpIo2Q+eW4XXuIT8
pk9OmKsXJ5taRwp37Qy6wplZOcAf9edhfFl1p0/3Ue7EBVPPRrkwJg8VQo2PRWlh
luXX4qf4TmwDNIlVF8UUHwAPNEWeQPNvGJvNesAzsI3eEBTjRRstvwRwQPNbVepo
xkH48OEP1lanLb3uKWlGgbJdoDV7JbqbQRHeGDZcx0sfKJzeiEeO6/9J7qjMehrb
kTKdiN5i4R3HYS2mpVaDZ/0y9TiWpltTkJk4Aubv59IqjsiBIQy/9SoWoSXKkvzF
8pvh+3wIL4KZt+qJF+fyzs73PdrdewpdfEJpO5aibvvGkjKOwGGg8biUyEWR9mIW
LwSlfTDsc8H0Q6EAI0qx8GlDIPTKBsQk4GlxDJQWZI1+ZzrHBk2OJGXj9RvoCgn/
EAqqBAnT1bfcpAEMg/QADrEP0csvFE8UJLCFGRokAVmFnORoMv3nj0Ic81ONbPUz
xYQFCTxyOqArpVgNE9oYIYrQFdCuedVcGWEmP+FCg+hy/4enD2Q+VlJ65Wvma+Ya
8QLykyXaOKsR7rGJyQY8xEv2rN1PSgriyJKLUXPHI/Y=
-----END CERTIFICATE REQUEST-----

View file

@ -0,0 +1,52 @@
-----BEGIN PRIVATE KEY-----
MIIJQgIBADANBgkqhkiG9w0BAQEFAASCCSwwggkoAgEAAoICAQCZ4pYt3anU6g1h
vILMCXaHKJS+AKZmcYQ5Uvf9gG8t88c7Oi4QeGwXkZP9LDMr4LSpP0zHKDoPdRmw
Uli4UAS918Gagx68JpAOJxn2w/TzaNa5viaH95HpMyyO7xnpxOCSTjz+ndTcwUbI
wUvhc2/DuGmqMRa3Tfjp0bchOYy4V4BIHkNoenRYbdxuqT8OicVJA+8QAsZcUpIz
EGWDm0fByuIhrEChusN8tJLEhSa3klTQHutyjm/oCctJucZQiQCK/rvESoJABSdA
XQClZEB0euS4zBiGmc8ClaExKBSFFjUIxJM92mvxqGktr9KyoC2AV1/ggT2RjovC
QL2E3ImlW5lLYwO6YRqL7CT+nYeEEW2wI2rBbsTjFtnK+OtBZJNww1jV83eY1U6/
sAIaTzEF4Jcor8ENH7+lQ7gGEaqDmEfrZeb8hHr+AP19Xy3RzC7NzkY8t7Az6Xit
GY94lrLMeYSN3D2qyP0JH8YjvdmjllaPlkqEmJhNpGYmGam7G8XiVR/2ytOBG2Lr
8Dl8VDDqZYSJExzlDli5R9/pIz8puaY8OGl35Pt20xAc93Wn5lyE70yjIw2v5GEo
feLqxrA2A73gd8H0173fNzNrcwR6d6orWNBXMwXp/WXtShVx7rHLGbku9QGscAH8
UPRKjmlkcT9Wy8lXQgfuq8HQbhLRJQIDAQABAoICAAiwRFyqzAWANFw4QBK6iacA
K0T+rwAdJa/05GXVF0uH0AM8k2naDfeKTTBGWBqAnlxPlvHhu0SwwgNBSwGxGh6i
UxIty0T1UNazuq52CihAjmsmkAqT3fjfd+l9sr/CHkOBR/laVDC/EVRePmVCCf8j
gOsByLx1zXmQngXlHj7Kr5M8cWYYD+Y6rokC/lMl6gea2yfsxPvLRhzvyCnu0Qjh
Zlr49lDYK8rbos1jKGuR+nIiMZbViv6V2vs6xYM593FhogMA7/fvmPOneW6QYzR2
1RL7PXrc4VU0hi+xb+/2ibnVtR73bHcH1FRzinJydjWgxhv12bhhTR8DkVyYjriH
sl5RQmMZ5k+qg0LRU00cGtEX/XydIuXWi2w15C+fTRBNQVPh7uArWVsYE55zDIBu
cJQM4+WHAjSN5WFWReTJxIN5R98leD85yOh1IZ4tE/25wGbSh7ZWGqlGGq8Qdjb4
ydarwyffRsp2cdJdIfnP6la+I4MvcPWB2qTQ30Ondej/0XfYki9qbHfU3I6QzLaV
aTaZNyHygEQyA3tclnGdLAadHGN9c3riagcmWfgG/ohdPwzOPQy6Bio1cCFQXMGS
8bDQzVGWuhhgBegCbqEqbBEwMNgZf+xHa5GJoaT7mKZhZ/WD3nwo60Pcf4t2lO7s
LBHkIkuekR7Zzto6Y5mLAoIBAQDGgYB90tNJCHsAL8reVkhCrUsOjTGJFITT3rm6
OrG0ge00gaMdlMUQThH9tFeEwl8ThqqNh5G/msnp/nKv6GIGzzIPYT0i9d292AID
iynkH6Zsvx//0nNM2ho9BCoSkTipwZZ+CtXLTqdqSydZ2IEs8x7pd4gh4N+BMhzd
8x1K1a94OfCbq7HEgGJlWPLaq1BU+mPUxatsxM9+ZVqN7mKFY67YN0q2HOZqi9gp
IDNSRSmqbUD1bW1rRjvNvIkhbh6Iv5V/0sqbvRR0PvMA/iIhO0Ff6esRRwuw3Jeq
wuTnpytpVw78nkGnmludxKYFwIs+Dn0wS3ZVSWvsCqqDNzxzAoIBAQDGdJ18+Po5
ZTvq6w7GrTqaeX7hLEBQUh8GYO3whPe/aEppOTVV8p8llMiiZABqL/rCZUjn8Og6
iJSjStaTgZCVOKEjUQjkfe5mRMG/4I3NxY5blwa1b3umAf+5aKQX02I/jDXVcQhW
Ngb3G+nKUv8J6VyXuCe2rjt8wD7exD5qzhZH+65cH2ewHLIzGs0x0IdemYR1elaf
qROk/GjKVmOJhOEpVVCU4fVjlwblIOXpIKaXNPzYiIZyn43botNEKT0MD1XmZpce
iDDqsDm93jf/ZeYLqRIwrIBoLc64pt0qvOsb62XA+OgxDpxPMA97nmM4iEXfXJrC
64Gq6yotHq4HAoIBAFkZN3tCbeOSEuN6kCxLvhNvhQj7BwjoVNZkWijkv26uArJW
nchhRjKTWC/wCnhkZhh1kYgFGb5O0+Jbe07Jl3ZG+ck9dBuFEApuMjk09ZCXRDP7
dXl2FJqiKrTIcbnzxOMtKUdZxayDmVF0ei0xqIlsdquEI25RaQCsZZiZzsQQNbpZ
B05YOmpg1cl3q0nLKzt5R+Xw84jWreulwoeCQGZu38PczYQAZMveCSAse9ypfpIo
h8ehXkOQOreVsFd4/euTUp8VFivhKpUizB/d8aPI3QcYD5KpuO2hldHnuKbhufKG
SQvKXN3FwumFop9iVR19k2Nh+7M8SVyhTPeoi1ECggEAICcgpPDJyabHMGZo/HNw
fTqV/fFnchv7/tKRelhws0g4Vhf4tjYa5sHWR8kf8BRZ8kjqqPl1Bpa+Tj5/yWJC
hIqqQMiOQkbM6zDUmzvMfbw2Nkyfv6GSTPEh924mt919m4Ih7rTjfuQ9+KdDF46e
14JBiCtD8+sCpFGZXgo5eqBtJ7h1JWPJLtVXYcRD3oBEjmUc+tOZWUDRd/eVGsMo
WU14FXRHG/gIA9yiN1k/JqgtlW32UTa9YbDMEPuucuqjg2KwriWM8ltqYXuvvz1T
oUNnJBh+Y/huzXIufeg7CQOWq+1VjRBGvjv5wzKsL4EX3j7l4yxjvpTda02yhaDk
3QKCAQEAvZRaZfLLcPzGEk1OCKzkW6NtdIQwwSSBQwE8HjhNMR8vOO35ul+gD172
DBzC6lIbMRQWUR0A/u3uH/XhHwnFvN8bQC6aTx8TBLesHSK+cQVHkqYRib6isdmw
sI1XFNfDBbsyvEmdtYEafDZQPZaRkxawuv0jy4K4g8c/a+YPvIMsQzAdPcIBu/Lt
W1djo2GM3ecZmx5C+FB1UOKIvqyPUZb8Xn50qXkO/AWuTbHtZM5Cdw7ZXvujtWUY
4u0vRkUS8RqMSIK43shL2Io3xui6/AIr+FV+H5HU2Sn6g7ONM0yU7upR4fPsDInP
u9PpP4gE97NhlhBa182gnqSdl3Gq0A==
-----END PRIVATE KEY-----

Binary file not shown.

Binary file not shown.

View file

@ -41,7 +41,7 @@ func Run(port int) {
//Read server keystore //Read server keystore
password := AskServerPassword() password := AskServerPassword()
serverKeyStore := cryptoUtils.LoadKeyStore("certs/serverdata.p12",password) serverKeyStore := cryptoUtils.LoadKeyStore("certs/server/server.p12",password)
//Create server listener //Create server listener
server := networking.NewServer[protocol.Packet](&serverKeyStore,port) server := networking.NewServer[protocol.Packet](&serverKeyStore,port)

View file

@ -8,7 +8,7 @@ import (
"crypto/tls" "crypto/tls"
"crypto/x509" "crypto/x509"
"encoding/binary" "encoding/binary"
"encoding/pem" "fmt"
"log" "log"
"os" "os"
@ -65,54 +65,28 @@ func LoadKeyStore(keyStorePath string, password string) KeyStore {
if err := privKey.Validate(); err != nil { if err := privKey.Validate(); err != nil {
log.Panicln("Private key is not valid") log.Panicln("Private key is not valid")
} }
fmt.Println(cert.SignatureAlgorithm)
return KeyStore{cert: cert, caCertChain: caCerts, privKey: privKey} return KeyStore{cert: cert, caCertChain: caCerts, privKey: privKey}
} }
func (k *KeyStore) GetTLSConfig() *tls.Config { func (k *KeyStore) GetTLSConfig() *tls.Config {
certPEM := pem.EncodeToMemory(&pem.Block{Type: "CERTIFICATE", Bytes: k.cert.Raw}) certificate := tls.Certificate{Certificate: [][]byte{k.cert.Raw}, PrivateKey: k.privKey, Leaf: k.cert}
privKeyPEM := pem.EncodeToMemory(&pem.Block{Type: "RSA PRIVATE KEY", Bytes: x509.MarshalPKCS1PrivateKey(k.privKey)})
certificate, err := tls.X509KeyPair(certPEM, privKeyPEM)
if err != nil {
log.Panicln("Could not load certificate and privkey to TLS", err)
}
//Add the CA certificate chain to a CertPool
caCertPool := x509.NewCertPool()
for _, caCert := range k.caCertChain {
caCertPool.AddCert(caCert)
}
config := &tls.Config{ config := &tls.Config{
Certificates: []tls.Certificate{certificate}, Certificates: []tls.Certificate{certificate},
ClientCAs: caCertPool,
RootCAs: caCertPool,
ClientAuth: tls.RequireAndVerifyClientCert,
} }
return config return config
} }
func (k *KeyStore) GetTLSConfigServer() *tls.Config {
config := k.GetTLSConfig()
//Add the CA certificate chain to a CertPool
caCertPool := x509.NewCertPool()
for _, caCert := range k.caCertChain {
caCertPool.AddCert(caCert)
}
config.ClientCAs = caCertPool
config.ClientAuth = tls.RequireAndVerifyClientCert
return config
}
func (k *KeyStore) GetTLSConfigClient() *tls.Config {
config := k.GetTLSConfig()
//Add the CA certificate chain to a CertPool
caCertPool := x509.NewCertPool()
for _, caCert := range k.caCertChain {
caCertPool.AddCert(caCert)
}
config.RootCAs = caCertPool
//TODO: FIX THE VERIFICATION OF THE SERVER
//config.ServerName = "SERVER"
return config
}
func (k KeyStore) EncryptMessageContent(receiverCert *x509.Certificate, content []byte) []byte { func (k KeyStore) EncryptMessageContent(receiverCert *x509.Certificate, content []byte) []byte {
// Digital envolope // Digital envolope
@ -128,7 +102,7 @@ func (k KeyStore) EncryptMessageContent(receiverCert *x509.Certificate, content
} }
nonce := make([]byte, cipher.NonceSize(), cipher.NonceSize()+len(content)+cipher.Overhead()) nonce := make([]byte, cipher.NonceSize(), cipher.NonceSize()+len(content)+cipher.Overhead())
if _, err := rand.Read(nonce); err != nil { if _, err = rand.Read(nonce); err != nil {
log.Panicln("Could not create data nonce properly: ", err) log.Panicln("Could not create data nonce properly: ", err)
} }
@ -154,7 +128,7 @@ func (k KeyStore) EncryptMessageContent(receiverCert *x509.Certificate, content
func (k KeyStore) DecryptMessageContent(senderCert *x509.Certificate, cipherContent []byte) []byte { func (k KeyStore) DecryptMessageContent(senderCert *x509.Certificate, cipherContent []byte) []byte {
return nil return nil
} }
func pair(l []byte, r []byte) []byte { func pair(l []byte, r []byte) []byte {

View file

@ -7,7 +7,7 @@ import (
type ClientTLSConfigProvider interface { type ClientTLSConfigProvider interface {
GetTLSConfigClient() *tls.Config GetTLSConfig() *tls.Config
} }
type Client[T any] struct { type Client[T any] struct {
@ -15,7 +15,7 @@ type Client[T any] struct {
} }
func NewClient[T any](clientTLSConfigProvider ClientTLSConfigProvider) Client[T] { func NewClient[T any](clientTLSConfigProvider ClientTLSConfigProvider) Client[T] {
dialConn, err := tls.Dial("tcp", "localhost:8080", clientTLSConfigProvider.GetTLSConfigClient()) dialConn, err := tls.Dial("tcp", "localhost:8080", clientTLSConfigProvider.GetTLSConfig())
if err != nil { if err != nil {
log.Panicln("Could not open connection to server",err) log.Panicln("Could not open connection to server",err)
} }

View file

@ -8,7 +8,7 @@ import (
) )
type ServerTLSConfigProvider interface { type ServerTLSConfigProvider interface {
GetTLSConfigServer() *tls.Config GetTLSConfig() *tls.Config
} }
type Server[T any] struct { type Server[T any] struct {
@ -18,7 +18,7 @@ type Server[T any] struct {
func NewServer[T any](serverTLSConfigProvider ServerTLSConfigProvider, port int) Server[T] { func NewServer[T any](serverTLSConfigProvider ServerTLSConfigProvider, port int) Server[T] {
listener, err := tls.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", port), serverTLSConfigProvider.GetTLSConfigServer()) listener, err := tls.Listen("tcp", fmt.Sprintf("0.0.0.0:%d", port), serverTLSConfigProvider.GetTLSConfig())
if err != nil { if err != nil {
panic("Server could not bind to address") panic("Server could not bind to address")
} }
@ -39,9 +39,11 @@ func (s *Server[T]) ListenLoop() {
if !ok { if !ok {
panic("Connection is not a TLS connection") panic("Connection is not a TLS connection")
} }
fmt.Println(tlsConn)
state := tlsConn.ConnectionState() state := tlsConn.ConnectionState()
if len(state.PeerCertificates) == 0 { if len(state.PeerCertificates) == 0 {
fmt.Println(state.PeerCertificates)
log.Panicln("Client did not provide a certificate") log.Panicln("Client did not provide a certificate")
} }
conn := NewConnection[T](tlsConn) conn := NewConnection[T](tlsConn)

View file

@ -13,6 +13,14 @@ cmd="go build"
deps=["check"] deps=["check"]
cmd="go run ./cmd/server/server.go" cmd="go run ./cmd/server/server.go"
[targets.client] [targets.client1]
deps=["check"] deps=["check"]
cmd="go run ./cmd/client/client.go -user certs/CLI1.p12 send CLI1 testsubject" cmd="go run ./cmd/client/client.go -user certs/client1/client1.p12 send CLI1 testsubject"
[targets.client2]
deps=["check"]
cmd="go run ./cmd/client/client.go -user certs/client2/client2.p12 send CLI1 testsubject"
[targets.client3]
deps=["check"]
cmd="go run ./cmd/client/client.go -user certs/client3/client3.p12 send CLI1 testsubject"