1use serde::{Deserialize, Serialize};
4use std::collections::HashMap;
5use std::time::{Duration, SystemTime};
6use uuid::Uuid;
7
8use crate::{DeviceError, DeviceResult};
9
10#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
12pub enum SecurityClassification {
13 #[default]
14 Public,
15 Internal,
16 Confidential,
17 Secret,
18 TopSecret,
19 QuantumProtected,
20 Custom(String),
21}
22
23#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
25pub enum SecurityObjective {
26 Confidentiality,
27 Integrity,
28 Availability,
29 Authentication,
30 Authorization,
31 NonRepudiation,
32 Privacy,
33 Compliance,
34 QuantumSafety,
35 Custom(String),
36}
37
38#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
40pub enum SecurityStandard {
41 ISO27001,
42 NistCsf,
43 SOC2,
44 FedRAMP,
45 GDPR,
46 HIPAA,
47 PciDss,
48 Fips140_2,
49 CommonCriteria,
50 QuantumSafeNist,
51 Custom(String),
52}
53
54#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
56pub enum PostQuantumAlgorithm {
57 #[default]
59 Kyber,
60 Dilithium,
61 Falcon,
62 SphincsPlus,
63 NTRU,
65 McEliece,
66 Rainbow,
67 SIDH,
68 SIKE,
69 NewHope,
70 FrodoKEM,
71 Custom(String),
72}
73
74#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
76pub enum AuthenticationMethod {
77 #[default]
78 Password,
79 Biometric,
80 SmartCard,
81 QuantumKey,
82 CertificateBased,
83 TokenBased,
84 BehavioralBiometrics,
85 ZeroKnowledgeProof,
86 QuantumSignature,
87 Custom(String),
88}
89
90#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
92pub enum AuthorizationModel {
93 #[default]
94 RBAC, ABAC, DAC, MAC, PBAC, QuantumACL, ZeroTrust,
101 Custom(String),
102}
103
104#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
106pub enum ThreatDetectionAlgorithm {
107 SignatureBased,
108 BehaviorBased,
109 MachineLearning,
110 StatisticalAnalysis,
111 AnomalyDetection,
112 HeuristicAnalysis,
113 QuantumStateAnalysis,
114 QuantumNoiseAnalysis,
115 Custom(String),
116}
117
118#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
120pub enum SecurityAnalyticsEngine {
121 SIEM, SOAR, UEBA, ThreatIntelligence,
125 QuantumSecurityAnalytics,
126 MLSecurityAnalytics,
127 RiskAnalytics,
128 Custom(String),
129}
130
131#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
133pub enum RegulatoryFramework {
134 GDPR,
135 CCPA,
136 HIPAA,
137 SOX,
138 PciDss,
139 FISMA,
140 ITAR,
141 EAR,
142 QuantumRegulations,
143 Custom(String),
144}
145
146#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
148pub enum ComplianceStandard {
149 ISO27001,
150 Soc2Type1,
151 Soc2Type2,
152 FedRampLow,
153 FedRampModerate,
154 FedRampHigh,
155 Nist800_53,
156 CisControls,
157 QuantumCompliance,
158 Custom(String),
159}
160
161#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
163pub enum EncryptionProtocol {
164 Tls1_3,
165 IPSec,
166 WireGuard,
167 QuantumSafeTLS,
168 QuantumKeyDistribution,
169 QuantumTunneling,
170 PostQuantumVPN,
171 Custom(String),
172}
173
174#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
176pub enum SecurityMLModel {
177 AnomalyDetection,
178 ThreatClassification,
179 BehaviorProfiling,
180 RiskScoring,
181 FraudDetection,
182 IntrusionDetection,
183 QuantumAnomalyDetection,
184 QuantumThreatClassification,
185 Custom(String),
186}
187
188#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
190pub enum SecurityOperationType {
191 Authentication,
192 Authorization,
193 Encryption,
194 Decryption,
195 ThreatDetection,
196 RiskAssessment,
197 ComplianceAudit,
198 IncidentResponse,
199 SecurityAnalytics,
200 PolicyEnforcement,
201 DataProtection,
202 HardwareSecurity,
203 CommunicationSecurity,
204 Custom(String),
205}
206
207#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq)]
209pub enum QuantumSecurityExecutionStatus {
210 Pending,
211 Initializing,
212 AuthenticatingUsers,
213 DetectingThreats,
214 AnalyzingRisks,
215 EnforcingPolicies,
216 MonitoringCompliance,
217 RespondingToIncidents,
218 AnalyzingPerformance,
219 Completed,
220 Failed,
221 PartiallyCompleted,
222 ComplianceViolation,
223 SecurityThreatDetected,
224}
225
226#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
228pub enum ThreatSeverity {
229 #[default]
230 Low,
231 Medium,
232 High,
233 Critical,
234}
235
236#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
238pub enum IncidentSeverity {
239 #[default]
240 Low,
241 Medium,
242 High,
243 Critical,
244}
245
246#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
248pub enum DataProtectionEventType {
249 #[default]
250 AccessRequest,
251 DataModification,
252 DataDeletion,
253 SecurityViolation,
254}
255
256#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
258pub enum SecurityReportType {
259 #[default]
260 Summary,
261 Detailed,
262 Compliance,
263 ThreatAnalysis,
264}
265
266#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
268pub enum SecurityLevel {
269 Low,
270 #[default]
271 Medium,
272 High,
273 Critical,
274}
275
276#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
278pub enum SecurityRecommendationCategory {
279 #[default]
280 ThreatDetection,
281 Cryptography,
282 AccessControl,
283 Compliance,
284}
285
286#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
288pub enum RecommendationPriority {
289 Low,
290 #[default]
291 Medium,
292 High,
293 Critical,
294}
295
296#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
298pub enum ImplementationEffort {
299 Low,
300 #[default]
301 Medium,
302 High,
303}
304
305#[derive(Debug, Clone, Serialize, Deserialize, PartialEq, Eq, Default)]
307pub enum SecurityMaturityLevel {
308 #[default]
309 Basic,
310 Intermediate,
311 Advanced,
312 Expert,
313}
314
315pub trait DurationExt {
317 fn from_weeks(weeks: u64) -> Duration;
318 fn from_hours(hours: u64) -> Duration;
319 fn from_minutes(minutes: u64) -> Duration;
320}
321
322impl DurationExt for Duration {
323 fn from_weeks(weeks: u64) -> Duration {
324 Self::from_secs(weeks * 7 * 24 * 3600)
325 }
326
327 fn from_hours(hours: u64) -> Duration {
328 Self::from_secs(hours * 3600)
329 }
330
331 fn from_minutes(minutes: u64) -> Duration {
332 Self::from_secs(minutes * 60)
333 }
334}