Compare commits

..

2 commits

Author SHA1 Message Date
vSpaike
1ffdf6eca1 P2 finito tout marche p5 2025-01-25 01:11:26 +01:00
vSpaike
9e2fd37838 P2 finito tout marche 2025-01-25 01:08:15 +01:00
15 changed files with 246 additions and 143 deletions

View file

@ -1,25 +1,31 @@
from flask import * from flask import *
import ssl
import requests import requests
import rsa import rsa
import urllib3
data = 'Hello World !' # Open public key of the server
with open("ssl/server_public.pem","r") as f_public:
pubi_k = rsa.PublicKey.load_pkcs1(f_public.read())
with open("../server/ssl/public.key", "rb") as public_serv_file: message = "Hello World !".encode()
public_serv = public_serv_file.read() # Encrypt the message with the public key of the server
encrypt_message= rsa.encrypt(message,pubi_k)
with open("ssl/id_rsa", "rb") as private_key_file: # Delete error in the terminal
private_key = private_key_file.read() urllib3.disable_warnings(urllib3.exceptions.InsecureRequestWarning)
public_key_serv = rsa.PublicKey.load_pkcs1(public_serv) # Send the request
private_key_client = rsa.PrivateKey.load_pkcs1(private_key) response = requests.post('https://localhost:5000/data',data=encrypt_message, verify="ssl/CA.crt")
print(response.json())
crypt = rsa.encrypt(data.encode(), public_key_serv) '''
Generation clef
(public_key, private_key) = rsa.newkeys(4096)
# Afficher le message original (pour vérification) with open("ssl/public.pem", "wb") as pub_file:
print(data) pub_file.write(public_key.save_pkcs1("PEM"))
response = requests.post('https://localhost:5000', data={'message': crypt, 'signature': signature}, verify=False) with open("ssl/private.pem", "wb") as priv_file:
priv_file.write(private_key.save_pkcs1("PEM"))
#print(response.text) '''

18
RSA/client/ssl/CA.crt Normal file
View file

@ -0,0 +1,18 @@
-----BEGIN CERTIFICATE-----
MIIC1DCCAbygAwIBAgIUTfOwgzv5ZTp7nUfMnJ79src6Tn8wDQYJKoZIhvcNAQEL
BQAwFDESMBAGA1UEAwwJbG9jYWxob3N0MB4XDTI1MDEyNTAwMDUwMloXDTI2MDEy
NTAwMDUwMlowFDESMBAGA1UEAwwJbG9jYWxob3N0MIIBIjANBgkqhkiG9w0BAQEF
AAOCAQ8AMIIBCgKCAQEApcL8pJNhaFcZekJwqlY0by5p8j74N57R9zZdpj0YcyqZ
jVS2Crq9yRaCMBNTF4yi9miaVQhr6b8id1HyDwkqwXagPVsCtvUz7ZFa9YOQSPpS
EeRW2hMOe1vUce3eKS5gIip4C+pCYlHoGPGY07rxAp9KNCSBgFI9IFEjah12OKg8
ivLgEQehuwXzbaxHY717Z3m5pkfJxk5lVVuL24o4oPGD05Kw+tNAWD3+agnx+U4F
q0Rew/WR7qLQXgO3j2QngRx9fZFOHTY8lsnfu5UXLJC1rFWjrlR2u0FW0obIlrGe
uAAElMhcHf606ZVLotqMbExEqpB3AM3d38nmuW9MXwIDAQABox4wHDAaBgNVHREE
EzARgglsb2NhbGhvc3SHBH8AAAEwDQYJKoZIhvcNAQELBQADggEBAFUCwH92Xw7X
NxHql8GyExotGro1EZrOP+x9rNk2EycaxTDtF0G5Wdvkzri8Ngmh1L++obl4qa1d
7gek93Dfgj2/b+/DURIh3mcsXCCOedOgTuZK8GukYO7c8tVTSfZFISPvrPwys/IM
mXJyNb8CK/inX+GsbLFwJELtc6As7dTpFGOZNFZ9ijBkNz+UBV/LGkV8MV5Mh36W
xKqBCEwiOjw8Hd9rvN/Bp3tW/ouLohCj53T4k7ric4XlElGBY0ljWDd0ts7J76F0
WJA2FCmEd77R37TgbJp9y/ZSEYqMl0l2tKZIbJ8Upa96/Wosr2Nk25Z4ggGCSSkF
0Q5kp5LkHV4=
-----END CERTIFICATE-----

View file

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvgIBADANBgkqhkiG9w0BAQEFAASCBKgwggSkAgEAAoIBAQCxCQfJ2qoYRU+0
hZ8sNeaGmUNl0A5m48+z2LgRA4XTkeurF83YuJl1zKJhpGjlCMl+jmf069lDCL0r
xthxtx5WlUaXDPOKRxYuiC7g4qjD92aHT8oloEhvk+PEJgn/9ZsqhB0uO7mpkGuQ
0lLFJ5zaUrIPNuGeeAj8nuDQpNrtGHGfBdXWfaPVdnhFf5uwsOPkAHssw8Ygqay1
0fnBOPq1luJNJQW2aGrXxYuBnd7Uujt8AI/OzBB73+zWXpxQKmqGS+bg93W07Lg2
11K9UB9vnwO0NejM1UZPKJ6T7N7CUvrkD2DZZdtPz020mcGF13lK2efiuTAlsKMu
4u2xWZX5AgMBAAECggEAEU8duNRX/x7VEoRiB145wifoBA4ElSC++l7nwu9s5+kD
eWtOurAfKPpaAgv4yYlDZ3agSWe/NU5Rw0miI0l704wC0S/4pn4ZeBvj4XmnyzPm
4rdKv2+yxV4DTfaeJwLU1KJYLAtg4BL5Frl0UvHIOecN9m4vlGE4wmJSVB6vh7DL
NBjRcXzeUWfjuieg9HvSJpnt7HcXD8kWWa0euXC0Yxd0dAZ90jguvm+3exq3KySX
tFQtnzKftkiTQMLTQE3wZvsDp2hCpeVX1blS9ubai4JApG4oMa5MOVYzQgJya2vm
IdqRW8lYeIW6qP4HaJ3ZU83umi+Wb62pDEiW38OnlQKBgQDwPCUAkrQeXj7gcwhG
78UVvOD2FHEaGz4AWrnPAJWwRcwLcMaV606IjOha/52tSzdsnrei+jdHMI/w3iWe
ZLvNWjjd9IaDaB/iZtjktnXe3kNaL3XpORuxiDi4pIrgtuKlVv9E5b9Bdo1YCn0b
aOKgCOGwP5WqrdtyFxpEsDtwcwKBgQC8pyfVRBFWH/CozM4rWGpO8RCOjEN0rdpV
1DXjgj36oj6xKrDMKTOZ7X2j/W6EYH1aoikPAEdt4ywgMVnfOzISUKdkSmYTyXbo
rjbyqKp91wQbkWVttHdN6qaTWHtl6YUgi17LCNZVYD95rXC7a/izGps7ggYvWOft
S96Iye+g4wKBgQC8yLbXPXH4D13f6eXOQOuiynwKRUQgHNpbUvCDQFVhYWgYcXZN
J83eNsT9hbQ2E06puAxdMb4w3nOu+BOd5lFC7ayUl20BZNjxhJrbGJuGGSnafENv
lGYz2/We/Ab60h1Hixcs4FKsseofDpcD7CdzVadtZnpJ1zgE7yzAX7FGCwKBgQCm
QfZD6FoS+dEhImWsI56E9cRurESiprjdnUjkuRqgMK5pesMXGlSEmp14kdf9SAAR
iQoAU3Gf8W4o7PVUW5n0NCpho4O0en+V7js0vdqLTpwrI4ctGLdv7pVhE8Ckfxm5
Jbqj2qTx1wH53RWVx0EFrzQRTLTgs0yqf4ueJ8FMmwKBgEi99cX3XyfToiQWU3X9
yLRYfV85i9UCBmFRb1EMtHhTZCBKpo5GrpvdnNN5AQpl4iXYvKGEapX8TXXELwC9
M+u9eqDEb+l5H2X3dWeDx782yDr1SvkSnfdLBXaSWH1mqWaN74bv6b1+rsUL+rIw
7Vb74+c88t6HdN644dR0UvJY
-----END PRIVATE KEY-----

View file

@ -1,9 +0,0 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAsQkHydqqGEVPtIWfLDXm
hplDZdAOZuPPs9i4EQOF05HrqxfN2LiZdcyiYaRo5QjJfo5n9OvZQwi9K8bYcbce
VpVGlwzzikcWLogu4OKow/dmh0/KJaBIb5PjxCYJ//WbKoQdLju5qZBrkNJSxSec
2lKyDzbhnngI/J7g0KTa7RhxnwXV1n2j1XZ4RX+bsLDj5AB7LMPGIKmstdH5wTj6
tZbiTSUFtmhq18WLgZ3e1Lo7fACPzswQe9/s1l6cUCpqhkvm4Pd1tOy4NtdSvVAf
b58DtDXozNVGTyiek+zewlL65A9g2WXbT89NtJnBhdd5Stnn4rkwJbCjLuLtsVmV
+QIDAQAB
-----END PUBLIC KEY-----

View file

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

13
RSA/client/ssl/public.pem Normal file
View file

@ -0,0 +1,13 @@
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAhdb+vNDimutzag4JmxFP4Cw5w86ffkBQiys0bo4fV0IWNbTwcP/Z
/E4HYYaju3P8hom/xUojgy64ZJpMbDYbW/pqOkUWNdDcRIm3oBftwRVuUtHGZe8+
QQnZTO6+G90zkHbaQT2P1M5AahKvp3PNazlXrZEcRf8mtFbqKnKFv4oEIUKpS+AL
OB3o7smAawSfF6vktL9umpH/iCljWV4WsWusC72K25kuV0mS25Z720LNACHWraK8
0sGx2DO8HyOpbD3Ca3EHt3bPeajTuv8MWD2m7XcGVURv64ouvv91RjOtfxLLoH54
vTIP7sSBTGijbWsPLN8fHiAdah2tIXDQGsHuwPcM16IguxSxfBvbJc5TlytCIjnt
RtU4HXO8wE0np9or5lWtzlBGGmolEAlhHk/UZutU6d89JyRlIxa8oVpPHGiRaJbd
+E4JGkC9I53WTTF3ejPZWzqVX1YFU16NBkTZ885dBySZwK1i67M7f9WnQWByGzaR
wzmmIoJ0DHHztWtg8OpnfU5O3Joly9fEGFOxbiUN3Yhez7US81/byizRnhJBokLa
/nW6kF/66RjZpgRqzdQoogSpDFH5hNOx3Z+bYMzX1nPTmj8fVWZBbyUZj6udn124
+xF5CaPWzSFErPPGHZb/9BjqeZoJ9A1CS6Ug26orwYm0bw+SZ0qC03sCAwEAAQ==
-----END RSA PUBLIC KEY-----

View file

@ -0,0 +1,13 @@
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAlp0tKMC3NCR2xnk7MBtxp41xReUcQPai2Y4FiVJzTeyyJZ16Er+l
m0LkQ2RM1z/HvyLlRT8QB0t8UV74HWtdyl/QohCGv5xJkO7o4yLBeBDTavy7e90C
hCdWt3Nm/nRVg07EPmTDuu3dxu7ys+dfWX8Um3ZcwWn93VcuCIa/37Lmc+AzrlwL
0IrQ7VSbxnnCJrWgE9h87tmktIUgmq1iG+kfOvf1fA5uhMXjgwTjJ3Kl9x8Z6rgh
M9Ue7irXADXd1DFyj6KB9D+nkZrCwaTIl8o5gtGGEWNob7A3vhkp2Jfap7N96vKn
AxaYhCiabf3qQsOYUpd1/1BO2fCAg7muwP7Bi1SWiYDFlfrMTg+jsuMbz8gGhhEP
NtwESRY9K3h1uRD/dhFt63rD5Ccge7PkkJtwvRo9sww+Pb4vquRrxhz/r9AomiTv
qMAIHDAIdQlzwuB6RsLfSgVG2tP38vfsMILpc5VzXReiDf3GwXZAi6d076ypQoKr
X0auhi3jpOayWdz+0sjOtYV3rjYCikMAWe0qkuYqKly8i4yd149hth9cZue2u2on
i30RC2NBUbO0UDiPwoYFHKfZ34FYnl1615tQEIwefhJwjgZ+9aYE/ss/7uzgWl3v
5d9cAJmghyi3pRKmyD9wjluBR+dFQy5vrv3PxhBmX2K8ZmeAlLgr1IkCAwEAAQ==
-----END RSA PUBLIC KEY-----

View file

@ -1,12 +1,15 @@
import base64
import ssl import ssl
from flask import Flask, render_template, request from flask import Flask, jsonify, render_template, request
import rsa
app = Flask(__name__) app = Flask(__name__)
app.config['SECRET_KEY'] = 'c&S2QL9DDhZjwlqPoRYRGSN6gOidjaC9f25CW#SF1AinsMg7$3*JxC3e^9FnuliC5DWfhAPwiPcAMJcutBn#5k&VsIP0KBOMf9VvzKTN@Wuuq5i*UjoonTZEMHiyabpI' # Required for Flask-WTF app.config['SECRET_KEY'] = 'c&S2QL9DDhZjwlqPoRYRGSN6gOidjaC9f25CW#SF1AinsMg7$3*JxC3e^9FnuliC5DWfhAPwiPcAMJcutBn#5k&VsIP0KBOMf9VvzKTN@Wuuq5i*UjoonTZEMHiyabpI' # Required for Flask-WTF
# SSL Configuration # SSL Configuration
context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER) context = ssl.SSLContext(ssl.PROTOCOL_TLS_SERVER)
context.load_cert_chain(certfile='ssl/CA.crt', keyfile='ssl/CA.key') context.load_cert_chain(certfile='ssl/CA.crt', keyfile='ssl/CA.pem')
@app.route("/") @app.route("/")
def index(): def index():
@ -14,10 +17,22 @@ def index():
@app.route('/data', methods=['POST']) @app.route('/data', methods=['POST'])
def receive(): def receive():
encrypted_data = request.form.get('data', None) # Safely get form data try:
if encrypted_data: # Receive message from the client
return f"Received encrypted data: {encrypted_data}", 200 encrypted_message = request.data
return "No data received", 400
# Open our private key
with open("ssl/server_private.pem","r") as f_public:
pubi_k = rsa.PrivateKey.load_pkcs1(f_public.read())
# Decrypt the message and post-it
decrypt_message = rsa.decrypt(encrypted_message,pubi_k).decode()
print("Message received :",decrypt_message)
return jsonify({'status': 'success', 'decrypted_message': decrypt_message}), 200
except Exception as e:
return jsonify({'status': 'error', 'message': str(e)}), 400
if __name__ == "__main__": if __name__ == "__main__":
app.run(ssl_context=context, host='0.0.0.0', port=5000) # Allow external access app.run(ssl_context=context, host='localhost', port=5000)

View file

@ -1,22 +1,18 @@
-----BEGIN CERTIFICATE----- -----BEGIN CERTIFICATE-----
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 0Q5kp5LkHV4=
QsS8Y50FuQoLHIaKdlnyXGCFlX3xOva+rGy1x15iWfY+eyxv1iHNgdmKLcWgQ9rm
iv4VziLmz4JGyYtiiCkNJP/PLKqX/Ma7jw8CJ1u1j8+fupoJOUv9kE5mm0KWR9me
CWaWTXIMz8nYUUFJyF7au0nLNO6ZpBZRyPryJQxxuxBpf0xKeG7kKI2YdviEBkR+
1WxUakL9Zdx1DxbT+8niQg/zUUODBwFfkREAGZzRzyNsT7D2sHmy+u8=
-----END CERTIFICATE----- -----END CERTIFICATE-----

View file

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvQIBADANBgkqhkiG9w0BAQEFAASCBKcwggSjAgEAAoIBAQC2l9MGxg7hWE7z
xB+Kag4d5H3DiqnbmgpV8BfHY1KxJ29u4/q9ZvapTongV8lmtJf8yPxiiG79cDNy
XeKgJ1QB8pJ+73PsLyuUTDaVhmhZqYnwVd86KVVaJjbVXjuuCnaxDY8kLvrfYrvU
NUIZUSig4vX/FLefUHHiRZniTE64RivHgYFUjTGKH3yGgWPArRbVPcqb+1AfxGk0
NOSx9K25fyPUkQEyt8U8FwO12OngD6lC5N0AWPcfTWXBjinuovU3rITe+HSqqJvg
QEzqPZGtI4aod4lByQLJJc09irJXhf6V5mr456XQEwfX/gx31Ysn4JTCuy4A7JI5
I27DD7JvAgMBAAECggEALKC7EULDTEybL3VWCCyXurKoEm0HywbBU/PUvAUIpwfu
cnoCRNyvmP37MPwD27h0FXLCTQrvpb4QtPlBdMdn/vnc2G2KNcXprttZ0/3/7zpC
3pz+bGbB18DTUh8wEv+3ttqLi9p3srWdFubVev6dIYWXfnr/zk6JJza/v9HKw7ro
p5F43UYy3dV6YABUWRlfvisM2Kxr88K6mVD0r939vJ+UGZsiQ6rEDFV3FqTNOHD5
LghFQMccyX+QQQ35OJAOFk9tacY4H1+JR6aqiOTJlVTFr7aiVY0ms46Ru3epPoHh
d+tRaUrF/qSQtsIjr03IarKGiQ790uOHvavk9ASnwQKBgQDvbo2dTqmTEUq+jA2y
26Os7fs7hbEFZ31SAvN2zlzaXRKG0ICwUq0XRNhcziSpU4Fu15MjqM4pf/3jqmmX
X5f8gylhvsXJH5ykp/VfxXPaK2QMek2UnaJIOoqtdW7uWTGlYTJwEFGgcHRhjzMC
iyrwQATqXkhAZ0flTZrQn9mH/wKBgQDDOmSe9//v2heTWLwNT9VEUirC7+nAHu9w
f8xge6KalURsSKOLW0dR5Ew+9M+lwmFCxxjGhr9LjQWD7zdUu1ManPZnaemypUtv
k9arj36oWp5IRtXC91R3GgNGO9wlUj/Dldx1ELra3uQ+3AmuY2vdOTEFl6mzTLdV
GHsecU5VkQKBgE5vO+sFYt2vs3mabb5i30p+J2gHUsc/cLlWCCWqUpaiGLibQxz/
6H4P6oT0buQdW/BQpH3xBaBosmZLZA3XnfV1ji/cC/Tn6yuxbdty1pHo1vyTcCi4
PvpEWzuZlb5076OKpLg7UFIrpKR1AbPanTVY84NHYYnfi5jdhFLFmsBHAoGAIlW0
uJiZNI/AsbNbb2Po+BkTWDFlhNpr9fcj9JwJ3vH9lKW5zZqCEo76MeBQXLCw9lOZ
seCk6B6nJ6r8qjQ/y2BrnYhtB3Q2rirsCEQ2XFmDmOaMVbu16TRz+vgwIYgzmqxS
l2wX0MJ+leeQ9FCb+c5DJt6jg9ssKxUhIht/UWECgYEAtZFjrPZUFgSf/jxnFsV0
8N6LgSxiDPcfSIYQ25re5WL46V8AOiXJy6rfVcp9KqNDYtxh7wAR4ccXlalQhovt
0+Gv+cDVpLTazLu88QCDUxJLPgoUu1lzGEKwILMG5lwwpS1ahxKEh6IFlwa/YhZs
vjohcTVXmRM1WxigYlLjgy0=
-----END PRIVATE KEY-----

27
RSA/server/ssl/CA.pem Normal file
View file

@ -0,0 +1,27 @@
-----BEGIN RSA PRIVATE KEY-----
MIIEpQIBAAKCAQEApcL8pJNhaFcZekJwqlY0by5p8j74N57R9zZdpj0YcyqZjVS2
Crq9yRaCMBNTF4yi9miaVQhr6b8id1HyDwkqwXagPVsCtvUz7ZFa9YOQSPpSEeRW
2hMOe1vUce3eKS5gIip4C+pCYlHoGPGY07rxAp9KNCSBgFI9IFEjah12OKg8ivLg
EQehuwXzbaxHY717Z3m5pkfJxk5lVVuL24o4oPGD05Kw+tNAWD3+agnx+U4Fq0Re
w/WR7qLQXgO3j2QngRx9fZFOHTY8lsnfu5UXLJC1rFWjrlR2u0FW0obIlrGeuAAE
lMhcHf606ZVLotqMbExEqpB3AM3d38nmuW9MXwIDAQABAoIBAEc4iLGzq0oYBlfb
/SmK4XuVzyqo+KB5SlC0GLfJD1zIRHKPn6nrg4jHdYdvfiejow9JcWowtKEZoRbw
bBcewrKeJApItNlkcHvWFOVhMljQyPtsBw8q2fGRyq1q3SYHiYGUisDf1ccF1zoE
cDwk2dHdHBZcSxIWA7KDejppTzbXC+TW+B8NP07lzLJvSyEeumTS0dDW8xa/ObrR
XMcRocX/fJUy6MzbXnq7fx2sJ8HSblc+WFXVT9+PcXafgkD/+y1KWOZcC3GfPMix
K2jzlZZPBmnUghDCEcESCFb5kb5bbauiobDVeQTGjS786SM8+IITqSOa8texwm43
GPF3X0UCgYEA6EAsWjGpAPwv/pCTYdLNtppJKK3U6U/usfzFXmPudBlNv2MpZ7Il
1bjwc4oXno8QEALyDDCxilTXfkL5q5JrwsdonjzG5qcpW7+ZlzSF9F9wuJLuY6mi
R1XOoYVYdQ9yxNijY2m1xU1jr2s76Ow4CEZqKDAQNTmtmQ1/xeY8xWMCgYEAtrZF
+ua8IATjdf27G/4ZJxQ6WOzXVlzCsUJZJphBqOeK3qzYrIzm+JaHqRx5gHoJX525
TyRCLFTGJuzqEH4szutkM9U+mAxvFsMke1RFJcZuw3mJU1gfOinskxl/SaazPk33
COo9ivGceM71B3PhWopxDaJoKSJicHzVsqZ9+9UCgYEA5s/YBC70QalfXUN7ZS2m
CYJdkJLpVJF+q96Em6D+utzm2nyHCqoOVc99D6Y+gPK2yOLUgG7oEozsuGuBSxSy
CZo5i4DlPxcD0E2jK5UkR0+Oa7CCQAO25eQN/ZHS7ktTCPQvtL26ywF1P0F4Aay4
puir2ZKimPLgZon24MtGu/cCgYEAhvoqwor4SXMzEnSKaMiTjlIcNJtrDWrjjY3l
TGTIhN3gslXgj8Bb1SNnPuBBRk9hY1iikDvKAvPxmsoEtIBx2777vGr5ndv5qUgq
SE3d82UfaJr9fyunjhFwqs74QNG8svdn2xcotd9956WEUKgjv/5sPFVRO6oiLNWc
DSmAAq0CgYEA0RaxNODY9h2bokAH2SThtxhx/Y2kT2oklH4ZeH7Ofa9d0PlG4GSl
qmhqOb9HhhJg6zCdwbtWRvHPbjovALUuR0JuUATneh6aNyPeslGL6ly/gEa72gSm
DQBKk2F5BTx1J/QcVT+WVvTWLxFicQcABU4D2HR5LIfvW5UYS3aH+9o=
-----END RSA PRIVATE KEY-----

View file

@ -1,28 +0,0 @@
-----BEGIN PRIVATE KEY-----
MIIEvwIBADANBgkqhkiG9w0BAQEFAASCBKkwggSlAgEAAoIBAQDOvS7podlWJ20v
GUHuRmveTmCVUKFlQQt+TuKy42espa52mqfMPBbKkULegpAir8K8h0g/GA0r3+50
a2s8Jnn8PFfqlTtDtVfA0kJa9avm1bTSJTbEPNUY85gF9ycEHFiHW0XG06wLyKMC
0gwuxEsUJKs/dOlTOqWFELPXcumOW1m6SYQ/ANnFhFzRtkwY3hylVpJ/u6FFSaqD
Yc2sTAtqFmLhBmmvSOSkoLpE1VOHOnla+fJfWfXj+dgnQGG0hMaa2Up/YqN4FD02
J46dhL3GsVzd0jCTktjDRyiFU5uqFhodv3z9j/Li/Bz2woe8ev2vgmzPytj0t2XE
6p6EmKhBAgMBAAECggEBAKxbkPb7FmT7bc2scwkh8OBf26nglQ4Dkn91aQ7XBCIt
5yu+eFKPbjjnriYwF9azTdk7uAHSHXkMspKg08BMG7ss2+cZD1W9pDF/mg6Xbv99
/8iLegNU7BxnScD/cqm8sBn5AE1pP7B7T1wUnk+HG0jp4VOANt5KsKAlcqoWhZ1G
D9lonNAos3Uqf2J7c9ERJEO4VYXQx69jCSnSJEinSjE4RqESmzzNbo0iDkIlOoK1
JTLx/ylVUJrHDTilTz1Ze00YOv2PsuKNlylHYkj/yOko1eP9IcYDWc4g4NbDKu9Z
8k8PpE38rlI0GLxAzedHU9nqpuB4HwLFOkVy8S2h6KECgYEA7V2WpgtR/o9azvYD
0g8jFA0/IEeHhaPrCVdD1QuYi9jIV+Seqarz9PbFB9RkXAuvphQ1k6x4Jit9keBJ
Y8UXxDC7Gu0CdOEG9PMqNoMnd79LNJQSaqusIg4C1EyXTi9WrqKF9tURkcJr2Z8I
DDFyUyTcPze+eAnYJm/mYpE1YMUCgYEA3vgVJcWujufx2gm2jTVKcmoFp5XahDBH
o/hdlr8Qf8yqnhAuYXpfSNurRZGWjL/1ujpaxS48k7NQfCRMw1sCGstoTIAUq5Xl
pTAAfENS2oqxrkuqUxI0eSKcd0UdQ258lGrh33Q2123S1B6RpOCOGcHllhw35hwA
ewoZ1xmPKU0CgYB0QRwhovW7ubZ+GtvwK93AWmSKiL4FZC0fXBAq7gz+oWQuOBjF
fKcTWTFTDmFA+7BBpTBAbX5DI5XStoj7RnLHch6Rp3dGi1f+7IHGRSI1cgmBbOxA
NmiOHVKhbAnHD0RjL9Jw/BYoz5JG+a7VWfpmYm1EwSaWYCvvV2r856W/CQKBgQCY
lMxj/NNnl/I5c0wpdb5sbYFRHYtbym48F0p0TmvMCRL497nFmyh5g1nBUc/kobhW
qHhVVz69FIiPa4fcZ/sYuvm04DFE+l8cm6y5XJjmVOMik0ULc/nUq4rHU9SiwIkg
R8QqVizxX4ZXAlRIsCKOHdIu10Cph6AMkuz79dGyQQKBgQDS+vWZhSTDZw/0NZqn
hk+DVFpm1P2wictEnssFZYdAlAoXFJ2lzATtUH7Kl2DDPc/pXVCKeuKukyHbtEAx
IZwLEFd7kGHVOZYGM6KHpG7wBbE58qneeTOHimHufbzdEAK6pGBLwhpTfIO226QV
7tc2ikPsTdXb6/b9Q8MtWmdebQ==
-----END PRIVATE KEY-----

View file

@ -1,9 +0,0 @@
-----BEGIN PUBLIC KEY-----
MIIBIjANBgkqhkiG9w0BAQEFAAOCAQ8AMIIBCgKCAQEAzr0u6aHZVidtLxlB7kZr
3k5glVChZUELfk7isuNnrKWudpqnzDwWypFC3oKQIq/CvIdIPxgNK9/udGtrPCZ5
/DxX6pU7Q7VXwNJCWvWr5tW00iU2xDzVGPOYBfcnBBxYh1tFxtOsC8ijAtIMLsRL
FCSrP3TpUzqlhRCz13LpjltZukmEPwDZxYRc0bZMGN4cpVaSf7uhRUmqg2HNrEwL
ahZi4QZpr0jkpKC6RNVThzp5WvnyX1n14/nYJ0BhtITGmtlKf2KjeBQ9NieOnYS9
xrFc3dIwk5LYw0cohVObqhYaHb98/Y/y4vwc9sKHvHr9r4Jsz8rY9LdlxOqehJio
QQIDAQAB
-----END PUBLIC KEY-----

View file

@ -0,0 +1,52 @@
-----BEGIN RSA PRIVATE KEY-----
MIIJNgIBAAKCAgEAlp0tKMC3NCR2xnk7MBtxp41xReUcQPai2Y4FiVJzTeyyJZ16
Er+lm0LkQ2RM1z/HvyLlRT8QB0t8UV74HWtdyl/QohCGv5xJkO7o4yLBeBDTavy7
e90ChCdWt3Nm/nRVg07EPmTDuu3dxu7ys+dfWX8Um3ZcwWn93VcuCIa/37Lmc+Az
rlwL0IrQ7VSbxnnCJrWgE9h87tmktIUgmq1iG+kfOvf1fA5uhMXjgwTjJ3Kl9x8Z
6rghM9Ue7irXADXd1DFyj6KB9D+nkZrCwaTIl8o5gtGGEWNob7A3vhkp2Jfap7N9
6vKnAxaYhCiabf3qQsOYUpd1/1BO2fCAg7muwP7Bi1SWiYDFlfrMTg+jsuMbz8gG
hhEPNtwESRY9K3h1uRD/dhFt63rD5Ccge7PkkJtwvRo9sww+Pb4vquRrxhz/r9Ao
miTvqMAIHDAIdQlzwuB6RsLfSgVG2tP38vfsMILpc5VzXReiDf3GwXZAi6d076yp
QoKrX0auhi3jpOayWdz+0sjOtYV3rjYCikMAWe0qkuYqKly8i4yd149hth9cZue2
u2oni30RC2NBUbO0UDiPwoYFHKfZ34FYnl1615tQEIwefhJwjgZ+9aYE/ss/7uzg
Wl3v5d9cAJmghyi3pRKmyD9wjluBR+dFQy5vrv3PxhBmX2K8ZmeAlLgr1IkCAwEA
AQKCAgEAjjZA4r78/X4ErKjhqy3upe+W6hFIGUsIP3WrYpt4hjadi4jjL/rHaw/B
KqT1LTVq7N4NL9I41zp+WvLaQiUTvTe1bqE+KoRuriv3uCgkF7ODfPzAJldrvc7L
QZL0yASejcp84BETA1kAVItgnWA1lvK4SYZ8VKA49ZsQuzpIx/dLRFSJV/RPr4yz
c7S1FbX4DcbnLHX4mSrmKxGc1JAsGACJ3YstvwJ9dl7H0Pl3ZtMJRIqYVRmhOCje
+LF4qxkxqN87tcYTAMZt+bzwchme0jw/C3e9KIP9o5/3MkbeTUYtTrXbilGuQus9
/WO9VWgwDSezNaOENhEXVAqOsrw1fkYX+ckerZ7xmUDa30GC4h2ZShf3vfqXLJiM
qkRyo1BNcynF2IeYgkdZ8NPDLPQ3DzF6Ad5bdxINjfs+92bX+BGpOv+84rV1+zC7
IRRp5gPiIGy9OIeZOX6stdlCiyE/r5lShQQFgSj+yWKKH9FEXCC18AdUIf2B/MAs
7eHBRpG+PAXQO4PEh6tHDuXPQrXAREwQg3yCKuzfVPh4fvq0fil1SHwYNZpfcwx9
lTwK2XWRTfG3FTZ1pJHgkCN66tjaoOEhzqvkW8AfZ4r4L9YQYkoL4oaCxi7YrPVx
0YwoHLjx/+TPN6E2NbQ0ShcXKaTDQbgS8F73DgNTID6evYbGVlECggERAJppNXwc
hvs3g3Tem0aBvMa20kIUrqtNu6sxM++FewRu+HxmZADlKhLqNsb7MDP42uKsMH/4
9E8797CBUSnD2/DpjCxd4Vg3tbvZY9hOL56uWXemjvR8dbaj3gArPHcoAyEyRl4+
5+aUCfZDUp+BWlt4ojwWdQA6sJyJABOhiCSMQyGeq3FRjHF5UUbhmHp/V8ANcIix
yM1GChUhicR3BPG/SD3MMHiHNl/c386YwP9HUoimWHDfgZrWtFp0XLZMlU5BzYld
Zn/cralPyf81xao6pvbRI8czpOH8ZdMBJVcty4Ra3RvG+CMc0/QrZX6CnlDXoSJJ
6Uu60Zq03dLo5x+aF277ezck7wSj3Qp7PUKVAoHxAPm0dFJ9nbCtvn2mG/k9Efaw
Uf9iIX1Fppj3/3dfk1tvoAybD2ac27iAEfWwspNqYeO+79pIBCxzA+AAIRCbFAWr
Oqq3hJeRR8jYLdYz5y7VxshyNbrUfnR0lRVv7pNe/1o6dGOfYlvxrYkj6q1NMyEs
HmWt9ekakyhNjlJOD3O46j7SCKfBiKId1jOq/985dOPYcxminpWExj9LgjGV8+QP
3TI7a1qK6Ei2E1P5gN6zfr3kzI+1eWGWylgr0qxUexaUQLt6QTRvNpY7+QgVVSGa
h+pfFB0Y/dFau6jUImHKYaLvAh9fyGgl11oAJMwhJQKCARBhtjIiV+sTDg4h5rxb
4b2UAh0LtArUXFxl+Lzk1ZMDOzYDgsfFyT7WuV/wiwP134Sj7FLEqMXxXgFfsHWr
+EU2LpSFfuMa8CYQuYB1YQTBZZM4JC5SiG/1I71YXgPlY2yXlTjyatxVDVlAfVnL
lg+X0r7XR17CxmD8rbVettlwR1Iz9DSJgRFevWaxdBEJc4wT/G06E0b+n1PCC3ci
3C5EzMbqVExX+ThvcVYvZnq7EGcqEhnlU4qwcS2wD/KbadsRqpJmWrSCNSOwAM3S
sjRjhLojdjUt2YB9gTruS8tVX6VqHBXPfhmIHrYBzXRsmjuU7N8K07rOMWpyfAHj
dX7MgLZThNB0FOssBIXcHCCoAQKB8BUlcQxjUu1ZaV5eqNPMli7b87W667ceJOOj
bOEBGQuPQnCO2RkJg5n2To8N7bGKOsv8qXdEzgWtn9Bicmpjl6h7PbajX/kt9nRN
ymPvdU6EEBd9hItT33mhPdbY6c1VKC7N8HlXUA8VQmrwvbj7Zq8Se2iE+ORKudeZ
6cmSjsBwEnZLdywtuZJxEGjDvHN8/Ccnd2feW6ux2NAXZukoF8ViiorseUTrqowt
zyk3YfB6JuuR6rjo12SqTmx1GZw6c0oQOAMocUkteePzJD3JALKd0ZDJiHyGV0hZ
dLbxcA/0AZy4vOdHR0N6oOggRv16eQKCARByfS02g5JptP317T3YUx/0KZ8WEUFf
wkxJshdFla39ffRyojZIM2zk+dANLKzYMFTa2Uud3CPrlgSlU7xAtoMXUeqRGAEu
1i91P2aTKda0x4DL9YIgxAEPISUMXUK+EtN6FkjvY7jn9rFyETpD8FJxQFcBuITA
G9vRoEvu/ZhKNaV7G0HtYE333RFZNmw1qJtHYORBzRWMOI9VUNQBf/M/MA8PecYN
wX7oikEoNmD4D2LKigCElF5CdKiqvH89zHLJxcVlLLW526mqEJgBVXsOhxxkg1Pp
tGJuMyfNyaIVo95eJX+9aLEMF+K2vSD3WREwFplodgXOl8GsmBC9m2O4l3sBZM9E
+gIVGvXOCkb80Q==
-----END RSA PRIVATE KEY-----

View file

@ -0,0 +1,13 @@
-----BEGIN RSA PUBLIC KEY-----
MIICCgKCAgEAlp0tKMC3NCR2xnk7MBtxp41xReUcQPai2Y4FiVJzTeyyJZ16Er+l
m0LkQ2RM1z/HvyLlRT8QB0t8UV74HWtdyl/QohCGv5xJkO7o4yLBeBDTavy7e90C
hCdWt3Nm/nRVg07EPmTDuu3dxu7ys+dfWX8Um3ZcwWn93VcuCIa/37Lmc+AzrlwL
0IrQ7VSbxnnCJrWgE9h87tmktIUgmq1iG+kfOvf1fA5uhMXjgwTjJ3Kl9x8Z6rgh
M9Ue7irXADXd1DFyj6KB9D+nkZrCwaTIl8o5gtGGEWNob7A3vhkp2Jfap7N96vKn
AxaYhCiabf3qQsOYUpd1/1BO2fCAg7muwP7Bi1SWiYDFlfrMTg+jsuMbz8gGhhEP
NtwESRY9K3h1uRD/dhFt63rD5Ccge7PkkJtwvRo9sww+Pb4vquRrxhz/r9AomiTv
qMAIHDAIdQlzwuB6RsLfSgVG2tP38vfsMILpc5VzXReiDf3GwXZAi6d076ypQoKr
X0auhi3jpOayWdz+0sjOtYV3rjYCikMAWe0qkuYqKly8i4yd149hth9cZue2u2on
i30RC2NBUbO0UDiPwoYFHKfZ34FYnl1615tQEIwefhJwjgZ+9aYE/ss/7uzgWl3v
5d9cAJmghyi3pRKmyD9wjluBR+dFQy5vrv3PxhBmX2K8ZmeAlLgr1IkCAwEAAQ==
-----END RSA PUBLIC KEY-----