use sha2::{Sha256, Digest};
use base64::{engine::general_purpose::STANDARD, Engine};
use chrono::{Utc, Duration};
use std::env;
const SECRET_KEY: &str = "SQEP-AUTHOR-CERTIFIED";
fn main() {
let args: Vec<String> = env::args().collect();
if args.len() != 3 {
eprintln!("Usage: {} <user_email> <days>", args[0]);
eprintln!("Example: {} user@proton.me 365", args[0]);
return;
}
let email = &args[1];
let days: i64 = args[2].parse().expect("Invalid number of days");
let expiry = Utc::now() + Duration::days(days);
let expiry_ts = expiry.timestamp();
let payload_str = format!("{}:{}", email, expiry_ts);
let mut hasher = Sha256::new();
hasher.update(payload_str.as_bytes());
hasher.update(SECRET_KEY.as_bytes());
let signature = hasher.finalize();
let combined = [&payload_str.as_bytes()[..], &signature[..]].concat();
let license_base64 = STANDARD.encode(&combined);
let license_final = format!("{}:{}", license_base64, expiry_ts);
println!("\n===== SQEP+ LICENSE KEY =====\n{}\nValid until: {}\n==============================\n", license_final, expiry);
}