1use serde::{Deserialize, Serialize};
4use std::time::{Duration, SystemTime};
5use uuid::Uuid;
6
7use super::config::*;
8use super::types::*;
9use crate::{DeviceError, DeviceResult};
10
11#[derive(Debug, Clone, Serialize, Deserialize, Default)]
13pub struct SecurityOperationInfo {
14 pub operation_id: String,
15}
16
17impl SecurityOperationInfo {
18 pub fn from_operation(operation: SecurityOperation) -> Self {
19 Self {
20 operation_id: operation.operation_id,
21 }
22 }
23}
24
25#[derive(Debug, Clone, Serialize, Deserialize, Default)]
26pub struct ThreatDetectionResults {
27 pub threats_detected: usize,
28 pub high_severity_threats: usize,
29 pub medium_severity_threats: usize,
30 pub low_severity_threats: usize,
31 pub false_positives: usize,
32 pub detection_algorithms_used: Vec<ThreatDetectionAlgorithm>,
33 pub overall_risk_score: f64,
34 pub detection_time: Duration,
35}
36
37impl ThreatDetectionResults {
38 pub fn merge(traditional: Self, ml: Self) -> Self {
39 Self {
40 threats_detected: traditional.threats_detected + ml.threats_detected,
41 high_severity_threats: traditional.high_severity_threats + ml.high_severity_threats,
42 medium_severity_threats: traditional.medium_severity_threats
43 + ml.medium_severity_threats,
44 low_severity_threats: traditional.low_severity_threats + ml.low_severity_threats,
45 false_positives: traditional.false_positives + ml.false_positives,
46 detection_algorithms_used: [
47 traditional.detection_algorithms_used,
48 ml.detection_algorithms_used,
49 ]
50 .concat(),
51 overall_risk_score: f64::midpoint(
52 traditional.overall_risk_score,
53 ml.overall_risk_score,
54 ),
55 detection_time: traditional.detection_time + ml.detection_time,
56 }
57 }
58}
59
60#[derive(Debug, Clone, Serialize, Deserialize, Default)]
61pub struct AccessControlAuditResults {
62 pub audit_id: String,
63 pub access_attempts: usize,
64 pub successful_authentications: usize,
65 pub failed_authentications: usize,
66 pub authorization_decisions: usize,
67 pub policy_violations: usize,
68 pub anomalous_access_patterns: usize,
69 pub risk_score: f64,
70}
71
72#[derive(Debug, Clone, Serialize, Deserialize, Default)]
73pub struct CryptographicOperationResults {
74 pub operations_executed: usize,
75 pub algorithms_used: Vec<PostQuantumAlgorithm>,
76 pub key_operations: usize,
77 pub signature_operations: usize,
78 pub encryption_operations: usize,
79 pub performance_metrics: CryptographicPerformanceMetrics,
80}
81
82#[derive(Debug, Clone, Serialize, Deserialize, Default)]
83pub struct ComplianceAssessmentResults {
84 pub compliance_score: f64,
85}
86
87#[derive(Debug, Clone, Serialize, Deserialize, Default)]
88pub struct SecurityAnalyticsResults {
89 pub analytics_score: f64,
90}
91
92#[derive(Debug, Clone, Serialize, Deserialize, Default)]
93pub struct RiskAssessmentResults {
94 pub risk_score: f64,
95}
96
97#[derive(Debug, Clone, Serialize, Deserialize, Default)]
98pub struct IncidentResponseAction {
99 pub action_id: String,
100}
101
102#[derive(Debug, Clone, Serialize, Deserialize, Default)]
103pub struct SecurityMetrics {
104 pub overall_security_score: f64,
105 pub threat_detection_rate: f64,
106 pub false_positive_rate: f64,
107 pub incident_response_time: Duration,
108 pub compliance_score: f64,
109 pub risk_score: f64,
110 pub encryption_coverage: f64,
111 pub access_control_effectiveness: f64,
112}
113
114#[derive(Debug, Clone, Serialize, Deserialize, Default)]
115pub struct SecurityPerformanceImpact {
116 pub performance_overhead: f64,
117}
118
119#[derive(Debug, Clone, Serialize, Deserialize, Default)]
120pub struct SecurityRecommendation {
121 pub recommendation_id: String,
122 pub category: SecurityRecommendationCategory,
123 pub priority: RecommendationPriority,
124 pub title: String,
125 pub description: String,
126 pub expected_impact: f64,
127 pub implementation_effort: ImplementationEffort,
128 pub timeline: Duration,
129}
130
131#[derive(Debug, Clone, Serialize, Deserialize)]
132pub struct SecurityExecutionMetadata {
133 pub start_time: SystemTime,
134 pub end_time: Option<SystemTime>,
135 pub total_duration: Option<Duration>,
136 pub security_config: QuantumSecurityConfig,
137 pub threat_landscape: ThreatLandscape,
138 pub compliance_status: ComplianceStatus,
139 pub security_posture: SecurityPosture,
140}
141
142impl Default for SecurityExecutionMetadata {
143 fn default() -> Self {
144 Self {
145 start_time: SystemTime::UNIX_EPOCH,
146 end_time: None,
147 total_duration: None,
148 security_config: QuantumSecurityConfig::default(),
149 threat_landscape: ThreatLandscape::default(),
150 compliance_status: ComplianceStatus::default(),
151 security_posture: SecurityPosture::default(),
152 }
153 }
154}
155
156#[derive(Debug, Clone, Serialize, Deserialize, Default)]
157pub struct AuthenticationCredentials {
158 pub credential_type: String,
159 pub credential_data: Vec<u8>,
160}
161
162#[derive(Debug, Clone, Serialize, Deserialize, Default)]
163pub struct SecurityPolicyParameters {
164 pub policy_id: String,
165}
166
167#[derive(Debug, Clone, Serialize, Deserialize, Default)]
168pub struct IncidentResponseParameters {
169 pub incident_id: String,
170}
171
172#[derive(Debug, Clone, Serialize, Deserialize)]
173pub struct EncryptedData {
174 pub data: Vec<u8>,
175 pub algorithm: PostQuantumAlgorithm,
176 pub classification: SecurityClassification,
177 pub key_id: String,
178 pub timestamp: SystemTime,
179 pub integrity_hash: Vec<u8>,
180}
181
182impl Default for EncryptedData {
183 fn default() -> Self {
184 Self {
185 data: Vec::new(),
186 algorithm: PostQuantumAlgorithm::default(),
187 classification: SecurityClassification::default(),
188 key_id: String::new(),
189 timestamp: SystemTime::UNIX_EPOCH,
190 integrity_hash: Vec::new(),
191 }
192 }
193}
194
195#[derive(Debug, Clone, Serialize, Deserialize)]
196pub struct AuthenticationResult {
197 pub user_id: String,
198 pub authenticated: bool,
199 pub authentication_method: AuthenticationMethod,
200 pub security_level: SecurityLevel,
201 pub session_token: String,
202 pub expires_at: SystemTime,
203 pub additional_verification_required: bool,
204}
205
206impl Default for AuthenticationResult {
207 fn default() -> Self {
208 Self {
209 user_id: String::new(),
210 authenticated: false,
211 authentication_method: AuthenticationMethod::default(),
212 security_level: SecurityLevel::default(),
213 session_token: String::new(),
214 expires_at: SystemTime::UNIX_EPOCH,
215 additional_verification_required: false,
216 }
217 }
218}
219
220#[derive(Debug, Clone, Serialize, Deserialize)]
221pub struct AuthorizationResult {
222 pub user_id: String,
223 pub resource: String,
224 pub authorized: bool,
225 pub granted_permissions: Vec<String>,
226 pub authorization_model: AuthorizationModel,
227 pub decision_factors: Vec<String>,
228 pub expires_at: SystemTime,
229}
230
231impl Default for AuthorizationResult {
232 fn default() -> Self {
233 Self {
234 user_id: String::new(),
235 resource: String::new(),
236 authorized: false,
237 granted_permissions: Vec::new(),
238 authorization_model: AuthorizationModel::default(),
239 decision_factors: Vec::new(),
240 expires_at: SystemTime::UNIX_EPOCH,
241 }
242 }
243}
244
245#[derive(Debug, Clone, Serialize, Deserialize, Default)]
246pub struct QuantumThreatDetectionResult {
247 pub target_system: String,
248 pub threats_detected: usize,
249 pub quantum_state_anomalies: usize,
250 pub quantum_noise_anomalies: usize,
251 pub decoherence_attacks: usize,
252 pub side_channel_attacks: usize,
253 pub risk_score: f64,
254 pub detection_confidence: f64,
255}
256
257#[derive(Debug, Clone, Serialize, Deserialize, Default)]
258pub struct QuantumRiskAssessment {
259 pub asset_id: String,
260 pub risk_score: f64,
261}
262
263#[derive(Debug, Clone, Serialize, Deserialize, Default)]
264pub struct SecurityReport {
265 pub report_id: String,
266}
267
268#[derive(Debug, Clone, Serialize, Deserialize, Default)]
269pub struct SecurityOperationContext {
270 pub context_id: String,
271}
272
273#[derive(Debug, Clone, Serialize, Deserialize, Default)]
274pub struct SecurityRequirement {
275 pub requirement_id: String,
276}
277
278#[derive(Debug, Clone, Serialize, Deserialize, Default)]
279pub struct CryptographicPerformanceMetrics {
280 pub operation_time: Duration,
281}
282
283#[derive(Debug, Clone, Serialize, Deserialize, Default)]
284pub struct ThreatLandscape {
285 pub threat_level: String,
286}
287
288#[derive(Debug, Clone, Serialize, Deserialize, Default)]
289pub struct ComplianceStatus {
290 pub compliance_level: String,
291}
292
293#[derive(Debug, Clone, Serialize, Deserialize, Default)]
294pub struct SecurityPosture {
295 pub overall_posture_score: f64,
296 pub maturity_level: SecurityMaturityLevel,
297 pub key_strengths: Vec<String>,
298 pub areas_for_improvement: Vec<String>,
299 pub risk_exposure: f64,
300}
301
302#[derive(Debug, Clone, Serialize, Deserialize)]
304pub struct SecurityOperation {
305 pub operation_id: String,
307 pub operation_type: SecurityOperationType,
309 pub target: String,
311 pub user_id: String,
313 pub security_requirements: Vec<SecurityRequirement>,
315 pub classification: SecurityClassification,
317 pub context: SecurityOperationContext,
319 pub risk_tolerance: f64,
321}
322
323#[derive(Debug, Clone, Serialize, Deserialize)]
325pub struct QuantumSecurityExecutionResult {
326 pub execution_id: String,
328 pub status: QuantumSecurityExecutionStatus,
330 pub security_operations: Vec<SecurityOperationInfo>,
332 pub threat_detection_results: ThreatDetectionResults,
334 pub access_control_results: AccessControlAuditResults,
336 pub cryptographic_results: CryptographicOperationResults,
338 pub compliance_results: ComplianceAssessmentResults,
340 pub security_analytics: SecurityAnalyticsResults,
342 pub risk_assessment: RiskAssessmentResults,
344 pub incident_response_actions: Vec<IncidentResponseAction>,
346 pub security_metrics: SecurityMetrics,
348 pub performance_impact: SecurityPerformanceImpact,
350 pub security_recommendations: Vec<SecurityRecommendation>,
352 pub execution_metadata: SecurityExecutionMetadata,
354}