From a11b3f3477bf17f749ca9bfb3296d9e8f3c954ae Mon Sep 17 00:00:00 2001 From: Yury Date: Sun, 9 Feb 2025 21:13:42 +0200 Subject: [PATCH] Add `generate_ssl.py` source --- README.md | 5 +++++ utils/generate_ssl.py | 50 +++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 utils/generate_ssl.py diff --git a/README.md b/README.md index be07dbd..5b15034 100644 --- a/README.md +++ b/README.md @@ -109,6 +109,11 @@ If you've installed the certificate for the **Current User**: If you've installed the certificate for the **Local Machine**, repeat the same steps but instead open `certlm.msc`. +#### `generate_ssl.exe` is flagged as a virus + +`generate_ssl.exe` is a Python application packed with PyInstaller and some anti-viruses may flag it as a virus. +This application is a simple certificate generator and you can find its source code in `utils/generate_ssl.py`. + ## Development TBD \ No newline at end of file diff --git a/utils/generate_ssl.py b/utils/generate_ssl.py new file mode 100644 index 0000000..e02e502 --- /dev/null +++ b/utils/generate_ssl.py @@ -0,0 +1,50 @@ +from cryptography.hazmat.primitives.asymmetric import rsa +from cryptography.hazmat.primitives import serialization, hashes +from cryptography.hazmat.primitives.asymmetric import padding +from cryptography.x509 import NameOID, CertificateBuilder +from cryptography import x509 +import datetime + +# Generate private key +private_key = rsa.generate_private_key( + public_exponent=65537, + key_size=4096 +) + +# Generate self-signed certificate +subject = issuer = x509.Name([ + x509.NameAttribute(NameOID.COMMON_NAME, '2EA46.playfabapi.com'), +]) + +cert = CertificateBuilder().subject_name( + subject +).issuer_name( + issuer +).public_key( + private_key.public_key() +).serial_number( + x509.random_serial_number() +).not_valid_before( + datetime.datetime.utcnow() +).not_valid_after( + datetime.datetime.utcnow() + datetime.timedelta(days=365) +).add_extension( + x509.BasicConstraints(ca=True, path_length=None), critical=True +).sign(private_key, hashes.SHA256()) + +# Export PKCS12 file +from cryptography.hazmat.primitives.serialization.pkcs12 import serialize_key_and_certificates + +pfx_data = serialize_key_and_certificates( + name=b"The Cycle: Frontier backend", + key=private_key, + cert=cert, + cas=None, + encryption_algorithm=serialization.NoEncryption() +) + +# Save to file +with open("certificate.pfx", "wb") as f: + f.write(pfx_data) + +print("PKCS#12 certificate (certificate.pfx) created successfully.") \ No newline at end of file