Source code for opinionated_mcp.crypto

"""Cryptographic utilities for OpinionatedMCP"""

from cryptography.fernet import Fernet


[docs] def generate_session_key() -> str: """Generate a session key for Fernet encryption""" return Fernet.generate_key().decode()
class SessionCrypto: """Handles encryption and decryption of session data""" def __init__(self, session_key: str): self.session_key = session_key self.fernet = Fernet(session_key.encode()) def encrypt_user_id(self, user_id: str) -> str: """Encrypt a user ID for session storage""" return self.fernet.encrypt(user_id.encode()).decode() def decrypt_user_id(self, encrypted_user_id: str) -> str: """Decrypt a user ID from session storage""" return self.fernet.decrypt(encrypted_user_id.encode()).decode() def update_key(self, new_session_key: str): """Update the session key""" self.session_key = new_session_key self.fernet = Fernet(new_session_key.encode())