decode_ssl / app.py
raannakasturi's picture
Update app.py
b19261f verified
raw
history blame
2.24 kB
import json
import gradio as gr
from cryptography import x509
from cryptography.hazmat.backends import default_backend
from decode import decode_ssl_certificate
def decode(cert) -> str:
try:
# Ensure cert is a byte string
if isinstance(cert, str):
cert = cert.encode()
try:
decoded_cert = None
try:
decoded_cert = x509.load_pem_x509_certificate(cert, default_backend())
except Exception:
decoded_cert = x509.load_pem_x509_csr(cert, default_backend())
if decoded_cert:
decoded_data = decode_ssl_certificate(decoded_cert)
response = {
"status": "Success",
"message": "Certificate decoded successfully.",
"data": decoded_data
}
else:
response = {
"status": "Failed",
"message": "Invalid certificate format.",
"data": None
}
except Exception as e:
response = {
"status": "Failed",
"message": "Failed to decode certificate. Please upload a valid certificate file.",
"error": str(e) # Convert Exception to a string
}
except Exception as e:
response = {
"status": "Failed",
"message": "Unexpected error while processing the certificate.",
"error": str(e)
}
print(response)
return json.dumps(response, indent=4) # Always return a JSON string
def app():
with gr.Blocks(title="Project Gatekeeper - Get free SSL Certificates") as webui:
with gr.Row():
ssl = gr.Textbox(label="Enter Domains", type="text", interactive=True)
with gr.Row():
decoded_data = gr.Textbox(label="Decoded SSL Data", type="text", interactive=False, show_copy_button=True)
btn = gr.Button(value="Generate SSL Certificate")
btn.click(decode, inputs=ssl, outputs=decoded_data)
try:
webui.queue(default_concurrency_limit=15).launch()
except Exception as e:
print(f"Error: {e}")
if __name__ == "__main__":
app()