license_system/
lib.rs

1//! 授权系统
2//! # Example
3//! ```rust
4//! use std::sync::Arc;
5//! use license_system::{
6//!     LicenseGenerator as _, LicenseManager, LicenseValidator as _, ChaCha20Protocol,
7//! };
8//! fn main() -> e_utils::Result<()> {
9//!     // 创建授权管理器(使用固定密钥便于测试)
10//!     let secret_key: [u8; 32] = [
11//!         0x12, 0x34, 0x56, 0x78, 0x9a, 0xbc, 0xde, 0xf0, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77,
12//!         0x88, 0x99, 0xaa, 0xbb, 0xcc, 0xdd, 0xee, 0xff, 0x00, 0x13, 0x24, 0x35, 0x46, 0x57, 0x68,
13//!         0x79, 0x8a,
14//!     ];
15//!     let protocol = Arc::new(ChaCha20Protocol::new(secret_key));
16//!     let license_manager = LicenseManager::new(protocol, 8)?;
17//!     // 测试批量生成
18//!     let user_ids = vec![
19//!         "user1",
20//!         "user2",
21//!         "user3",
22//!     ];
23//!     println!("生成批量授权...");
24//!     let licenses = license_manager.generate_batch_licenses(user_ids, 300)?;
25//!     for license in &licenses {
26//!         println!(
27//!             "用户: {}, 授权码: {}, 过期时间: {}",
28//!             license.user_id, license.license_key, license.expire_time
29//!         );
30//!     }
31//!     // 测试批量验证
32//!     println!("\n批量验证授权...");
33//!     let verify_results = license_manager.verify_batch_licenses(&licenses)?;
34//!     for result in &verify_results {
35//!         println!("用户 {}: {}", result.user_id, result.message);
36//!     }
37//!     // 测试单个授权验证
38//!     println!("\n验证单个授权...");
39//!     if let Some(first_license) = licenses.first() {
40//!         match license_manager.verify_license(&first_license.license_key) {
41//!             Ok(res) => println!("验证结果: {} 剩余{}天", res.message, res.days_remaining),
42//!             Err(e) => println!("验证失败: {}", e),
43//!         }
44//!     }
45//!     Ok(())
46//! }
47//!```
48mod manager;
49pub mod protocols;
50pub use protocols::*;
51pub mod ty;
52
53pub use manager::LicenseManager;
54pub use ty::*;
55