use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize, schemars::JsonSchema)]
#[schemars(rename = "filesystem.config.ViewerSecretSignaturePair")]
pub struct ViewerSecretSignaturePair {
pub secret: String,
pub signature: String,
}
pub fn generate_viewer_secret_signature_pair() -> ViewerSecretSignaturePair {
use sha2::{Digest, Sha256};
let mut bytes = [0u8; 32];
rand::fill(&mut bytes);
let secret: String = bytes.iter().map(|b| format!("{:02x}", b)).collect();
let hash = Sha256::digest(secret.as_bytes());
let signature = format!(
"sha256={}",
hash.iter()
.map(|b| format!("{:02x}", b))
.collect::<String>()
);
ViewerSecretSignaturePair { secret, signature }
}