1
0
mirror of https://github.com/Mailu/Mailu.git synced 2025-07-15 01:24:34 +02:00

Remove the dependency on pyOpenSSL

This commit is contained in:
Florent Daigniere
2022-11-27 15:41:21 +01:00
parent a366116cae
commit 3e38e7b89d
4 changed files with 10 additions and 11 deletions

View File

@ -2,20 +2,21 @@
They are thus represented as ASCII armored PEM. They are thus represented as ASCII armored PEM.
""" """
from OpenSSL import crypto from cryptography.hazmat.primitives import serialization
from cryptography.hazmat.primitives.asymmetric import rsa
def gen_key(key_type=crypto.TYPE_RSA, bits=2048): def gen_key(bits=2048):
""" Generate and return a new RSA key. """ Generate and return a new RSA key.
""" """
key = crypto.PKey() k = rsa.generate_private_key(public_exponent=65537, key_size=bits)
key.generate_key(key_type, bits) return k.private_bytes(encoding=serialization.Encoding.PEM,format=serialization.PrivateFormat.PKCS8,encryption_algorithm=serialization.NoEncryption())
return crypto.dump_privatekey(crypto.FILETYPE_PEM, key)
def strip_key(pem): def strip_key(pem):
""" Return only the b64 part of the ASCII armored PEM. """ Return only the b64 part of the ASCII armored PEM.
""" """
key = crypto.load_privatekey(crypto.FILETYPE_PEM, pem)
public_pem = crypto.dump_publickey(crypto.FILETYPE_PEM, key) priv_key = serialization.load_pem_private_key(pem, password=None)
public_pem = priv_key.public_key().public_bytes(encoding=serialization.Encoding.PEM,format=serialization.PublicFormat.SubjectPublicKeyInfo)
return public_pem.replace(b"\n", b"").split(b"-----")[2] return public_pem.replace(b"\n", b"").split(b"-----")[2]

View File

@ -19,7 +19,7 @@ from marshmallow_sqlalchemy.fields import RelatedList
from flask_marshmallow import Marshmallow from flask_marshmallow import Marshmallow
from OpenSSL import crypto from cryptography.hazmat.primitives import serialization
from pygments import highlight from pygments import highlight
from pygments.token import Token from pygments.token import Token
@ -609,7 +609,7 @@ class DkimKeyField(fields.String):
# check key validity # check key validity
try: try:
crypto.load_privatekey(crypto.FILETYPE_PEM, value) serialization.load_pem_private_key(value, password=None)
except crypto.Error as exc: except crypto.Error as exc:
raise ValidationError(f'invalid dkim key {bad_key!r}') from exc raise ValidationError(f'invalid dkim key {bad_key!r}') from exc
else: else:

View File

@ -27,7 +27,6 @@ mysql-connector-python==8.0.29
passlib passlib
psycopg2-binary psycopg2-binary
Pygments Pygments
pyOpenSSL
PyYAML PyYAML
redis redis
SQLAlchemy SQLAlchemy

View File

@ -51,7 +51,6 @@ psycopg2-binary==2.9.5
pycares==4.2.2 pycares==4.2.2
pycparser==2.21 pycparser==2.21
Pygments==2.13.0 Pygments==2.13.0
pyOpenSSL==22.1.0
pyparsing==3.0.9 pyparsing==3.0.9
python-dateutil==2.8.2 python-dateutil==2.8.2
pytz==2022.6 pytz==2022.6