Files
eveAI/common/utils/simple_encryption.py

46 lines
1.5 KiB
Python

import random
from cryptography.fernet import Fernet
from flask import Flask
def generate_api_key(prefix="EveAI-Chat"):
parts = [str(random.randint(1000, 9999)) for _ in range(5)]
return f"{prefix}-{'-'.join(parts)}"
class SimpleEncryption:
def __init__(self, app: Flask = None):
self.app = app
self.fernet = None
if app is not None:
self.init_app(app)
def init_app(self, app: Flask):
self.app = app
encryption_key = app.config.get('API_ENCRYPTION_KEY')
if not encryption_key:
raise ValueError("ENCRYPTION_KEY is not set in the app configuration")
self.fernet = Fernet(encryption_key.encode())
# Optionally log the initialization (similar to your current setup)
app.logger.info('SimpleEncryption initialized')
def encrypt_api_key(self, api_key: str) -> str:
if not self.fernet:
raise RuntimeError("SimpleEncryption is not initialized. Call init_app first.")
return self.fernet.encrypt(api_key.encode()).decode()
def decrypt_api_key(self, encrypted_api_key: str) -> str:
if not self.fernet:
raise RuntimeError("SimpleEncryption is not initialized. Call init_app first.")
return self.fernet.decrypt(encrypted_api_key.encode()).decode()
@staticmethod
def generate_key() -> str:
"""Generate a new Fernet key."""
return Fernet.generate_key().decode()
# Usage:
# from common.utils.simple_encryption import simple_encryption
# simple_encryption.init_app(app)