Added libs

This commit is contained in:
Lucas
2026-01-25 13:55:46 +10:00
parent 575c682afc
commit f70af3c4ea
229 changed files with 26983 additions and 0 deletions

115
api/certs.py Normal file
View File

@@ -0,0 +1,115 @@
import os
import webview
import ssl
import ipaddress
import pathlib
from cryptography import x509
from cryptography.x509.oid import NameOID
from cryptography.hazmat.primitives import hashes, serialization
from cryptography.hazmat.primitives.asymmetric import rsa
from datetime import datetime, timedelta
import os
import platform
import subprocess
def generate_ca_and_cert(ca_path="ca.pem", ca_key_path="ca_key.pem",
cert_path="cert.pem", key_path="key.pem"):
ca_key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
ca_subject = x509.Name([
x509.NameAttribute(NameOID.COUNTRY_NAME, u"US"),
x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"NoSys-CA"),
x509.NameAttribute(NameOID.COMMON_NAME, u"NoSys Local CA"),
])
ca_cert = (
x509.CertificateBuilder()
.subject_name(ca_subject)
.issuer_name(ca_subject)
.public_key(ca_key.public_key())
.serial_number(x509.random_serial_number())
.not_valid_before(datetime.utcnow())
.not_valid_after(datetime.utcnow() + timedelta(days=3650))
.add_extension(
x509.BasicConstraints(ca=True, path_length=None), critical=True,
)
.sign(ca_key, hashes.SHA256())
)
with open(ca_path, "wb") as f:
f.write(ca_cert.public_bytes(serialization.Encoding.PEM))
with open(ca_key_path, "wb") as f:
f.write(ca_key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption(),
))
key = rsa.generate_private_key(public_exponent=65537, key_size=2048)
subject = x509.Name([
x509.NameAttribute(NameOID.COUNTRY_NAME, u"US"),
x509.NameAttribute(NameOID.ORGANIZATION_NAME, u"NoSys"),
x509.NameAttribute(NameOID.COMMON_NAME, u"localhost"),
])
cert = (
x509.CertificateBuilder()
.subject_name(subject)
.issuer_name(ca_subject)
.public_key(key.public_key())
.serial_number(x509.random_serial_number())
.not_valid_before(datetime.utcnow())
.not_valid_after(datetime.utcnow() + timedelta(days=3650))
.add_extension(
x509.SubjectAlternativeName([
x509.DNSName(u"localhost"),
x509.IPAddress(ipaddress.IPv4Address("127.0.0.1"))]),
critical=False,
)
.sign(ca_key, hashes.SHA256())
)
with open(cert_path, "wb") as f:
f.write(cert.public_bytes(serialization.Encoding.PEM))
with open(key_path, "wb") as f:
f.write(key.private_bytes(
encoding=serialization.Encoding.PEM,
format=serialization.PrivateFormat.TraditionalOpenSSL,
encryption_algorithm=serialization.NoEncryption(),
))
return ca_path, cert_path, key_path
def add_ca_os(ca_path="ca.pem"):
system = platform.system()
if system == "Windows":
add_ca_windows(ca_path)
elif system == "Darwin":
add_ca_macos(ca_path)
elif system == "Linux":
add_ca_linux(ca_path)
else:
raise Exception("Operational system not supported")
def add_ca_windows(ca_path="ca.pem"):
subprocess.run([
"powershell",
"-Command",
f'Import-Certificate -FilePath "{os.path.abspath(ca_path)}" -CertStoreLocation Cert:\\CurrentUser\\Root'
], check=True)
def add_ca_macos(ca_path="ca.pem"):
subprocess.run([
"sudo",
"security",
"add-trusted-cert",
"-d",
"-r", "trustRoot",
"-k", "/Library/Keychains/System.keychain",
os.path.abspath(ca_path)
], check=True)
def add_ca_linux(ca_path="ca.pem"):
import shutil
dest = "/usr/local/share/ca-certificates/zecho-ca.crt"
shutil.copy(os.path.abspath(ca_path), dest)
subprocess.run(["sudo", "update-ca-certificates"], check=True)