use serde::{Deserialize, Serialize};
use std::collections::HashMap;
use std::time::{Duration, SystemTime};
use uuid::Uuid;
use crate::{DeviceError, DeviceResult};
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum SecurityClassification {
#[default]
Public,
Internal,
Confidential,
Secret,
TopSecret,
QuantumProtected,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum SecurityObjective {
Confidentiality,
Integrity,
Availability,
Authentication,
Authorization,
NonRepudiation,
Privacy,
Compliance,
QuantumSafety,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum SecurityStandard {
ISO27001,
NistCsf,
SOC2,
FedRAMP,
GDPR,
HIPAA,
PciDss,
Fips140_2,
CommonCriteria,
QuantumSafeNist,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum PostQuantumAlgorithm {
#[default]
Kyber,
Dilithium,
Falcon,
SphincsPlus,
NTRU,
McEliece,
Rainbow,
SIDH,
SIKE,
NewHope,
FrodoKEM,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum AuthenticationMethod {
#[default]
Password,
Biometric,
SmartCard,
QuantumKey,
CertificateBased,
TokenBased,
BehavioralBiometrics,
ZeroKnowledgeProof,
QuantumSignature,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum AuthorizationModel {
#[default]
RBAC, ABAC, DAC, MAC, PBAC, QuantumACL, ZeroTrust,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum ThreatDetectionAlgorithm {
SignatureBased,
BehaviorBased,
MachineLearning,
StatisticalAnalysis,
AnomalyDetection,
HeuristicAnalysis,
QuantumStateAnalysis,
QuantumNoiseAnalysis,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum SecurityAnalyticsEngine {
SIEM, SOAR, UEBA, ThreatIntelligence,
QuantumSecurityAnalytics,
MLSecurityAnalytics,
RiskAnalytics,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum RegulatoryFramework {
GDPR,
CCPA,
HIPAA,
SOX,
PciDss,
FISMA,
ITAR,
EAR,
QuantumRegulations,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum ComplianceStandard {
ISO27001,
Soc2Type1,
Soc2Type2,
FedRampLow,
FedRampModerate,
FedRampHigh,
Nist800_53,
CisControls,
QuantumCompliance,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum EncryptionProtocol {
Tls1_3,
IPSec,
WireGuard,
QuantumSafeTLS,
QuantumKeyDistribution,
QuantumTunneling,
PostQuantumVPN,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum SecurityMLModel {
AnomalyDetection,
ThreatClassification,
BehaviorProfiling,
RiskScoring,
FraudDetection,
IntrusionDetection,
QuantumAnomalyDetection,
QuantumThreatClassification,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum SecurityOperationType {
Authentication,
Authorization,
Encryption,
Decryption,
ThreatDetection,
RiskAssessment,
ComplianceAudit,
IncidentResponse,
SecurityAnalytics,
PolicyEnforcement,
DataProtection,
HardwareSecurity,
CommunicationSecurity,
Custom(String),
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
pub enum QuantumSecurityExecutionStatus {
Pending,
Initializing,
AuthenticatingUsers,
DetectingThreats,
AnalyzingRisks,
EnforcingPolicies,
MonitoringCompliance,
RespondingToIncidents,
AnalyzingPerformance,
Completed,
Failed,
PartiallyCompleted,
ComplianceViolation,
SecurityThreatDetected,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum ThreatSeverity {
#[default]
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum IncidentSeverity {
#[default]
Low,
Medium,
High,
Critical,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum DataProtectionEventType {
#[default]
AccessRequest,
DataModification,
DataDeletion,
SecurityViolation,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum SecurityReportType {
#[default]
Summary,
Detailed,
Compliance,
ThreatAnalysis,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum SecurityLevel {
Low,
#[default]
Medium,
High,
Critical,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum SecurityRecommendationCategory {
#[default]
ThreatDetection,
Cryptography,
AccessControl,
Compliance,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum RecommendationPriority {
Low,
#[default]
Medium,
High,
Critical,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum ImplementationEffort {
Low,
#[default]
Medium,
High,
}
#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
pub enum SecurityMaturityLevel {
#[default]
Basic,
Intermediate,
Advanced,
Expert,
}
pub trait DurationExt {
fn from_weeks(weeks: u64) -> Duration;
fn from_hours(hours: u64) -> Duration;
fn from_minutes(minutes: u64) -> Duration;
}
impl DurationExt for Duration {
fn from_weeks(weeks: u64) -> Duration {
Self::from_secs(weeks * 7 * 24 * 3600)
}
fn from_hours(hours: u64) -> Duration {
Self::from_secs(hours * 3600)
}
fn from_minutes(minutes: u64) -> Duration {
Self::from_secs(minutes * 60)
}
}