"""Security exceptions for wFabricSecurity."""
from typing import Optional
[docs]
class SecurityError(Exception):
"""Base security exception."""
[docs]
def __init__(self, message: str, details: Optional[dict] = None):
super().__init__(message)
self.message = message
self.details = details or {}
[docs]
class CodeIntegrityError(SecurityError):
"""Raised when code integrity verification fails."""
[docs]
def __init__(
self,
message: str = "Code integrity verification failed. The code may have been tampered with.",
details: Optional[dict] = None,
):
super().__init__(message, details)
[docs]
class PermissionDeniedError(SecurityError):
"""Raised when communication permission is denied."""
[docs]
def __init__(
self,
message: str = "Permission denied. The sender is not authorized to communicate with the recipient.",
details: Optional[dict] = None,
):
super().__init__(message, details)
[docs]
class MessageIntegrityError(SecurityError):
"""Raised when message integrity verification fails."""
[docs]
def __init__(
self,
message: str = "Message integrity verification failed. The message may have been altered.",
details: Optional[dict] = None,
):
super().__init__(message, details)
[docs]
class SignatureError(SecurityError):
"""Raised when signature verification fails."""
[docs]
def __init__(
self,
message: str = "Signature verification failed. The signature is invalid.",
details: Optional[dict] = None,
):
super().__init__(message, details)
[docs]
class RateLimitError(SecurityError):
"""Raised when rate limit is exceeded."""
[docs]
def __init__(
self,
message: str = "Rate limit exceeded. Too many requests.",
details: Optional[dict] = None,
):
super().__init__(message, details)
[docs]
class RevocationError(SecurityError):
"""Raised when a revoked participant is detected."""
[docs]
def __init__(
self,
message: str = "Participant has been revoked.",
details: Optional[dict] = None,
):
super().__init__(message, details)
[docs]
class ConfigurationError(SecurityError):
"""Raised when there is a configuration error."""
[docs]
def __init__(
self,
message: str = "Configuration error.",
details: Optional[dict] = None,
):
super().__init__(message, details)