Skip to main content

quantrs2_device/security/
mod.rs

1//! Enterprise security for quantum cloud operations.
2//!
3//! Provides structured audit logging, credential management, and token-bucket
4//! rate limiting for production quantum computing workloads, as well as a
5//! comprehensive Quantum System Security Framework.
6//!
7//! ## Modules
8//!
9//! - [`audit`] — Structured JSON audit log trail (file, in-memory, null sinks)
10//! - [`credentials`] — Credential abstraction with env-var, file, and composite providers
11//! - [`rate_limit`] — Per-provider token-bucket rate limiter
12//! - [`config`] — Security configuration types for the full framework
13//! - [`engines`] — Security engine and result types
14//! - [`framework`] — Main `QuantumSystemSecurityFramework` implementation
15//! - [`types`] — Security enums and shared types
16//!
17//! ## Quick start
18//!
19//! ```rust
20//! use quantrs2_device::security::{
21//!     InMemoryAuditLogger, AuditLogger, AuditEvent, OperationType,
22//!     EnvVarCredentialProvider, CredentialProvider,
23//!     RateLimiter,
24//! };
25//!
26//! // Audit logging
27//! let logger = InMemoryAuditLogger::new();
28//! let event = AuditEvent::new(OperationType::CircuitSubmit, true)
29//!     .with_backend("ibm_nairobi")
30//!     .with_duration_ms(120);
31//! logger.log(event).expect("audit log failed");
32//!
33//! // Rate limiting
34//! let mut limiter = RateLimiter::with_cloud_defaults();
35//! if limiter.try_consume("ibm") {
36//!     // proceed with API call
37//! }
38//! ```
39
40pub mod audit;
41pub mod config;
42pub mod credentials;
43pub mod engines;
44pub mod framework;
45pub mod rate_limit;
46pub mod types;
47
48pub use audit::{
49    circuit_hash, AuditError, AuditEvent, AuditLogger, FileAuditLogger, InMemoryAuditLogger,
50    NullAuditLogger, OperationType,
51};
52pub use config::*;
53pub use credentials::{
54    CompositeCredentialProvider, CredentialError, CredentialProvider, EnvVarCredentialProvider,
55    FileCredentialProvider, SecretString,
56};
57pub use engines::*;
58pub use framework::*;
59pub use rate_limit::{RateLimiter, TokenBucket};
60pub use types::*;