use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PermissionsManagerConfig {
pub require_protocol_permission_for_signing: bool,
pub require_protocol_permission_for_encrypting: bool,
pub require_protocol_permission_for_hmac: bool,
pub require_protocol_permission_for_key_linkage: bool,
pub require_protocol_permission_for_public_key: bool,
pub require_protocol_permission_for_signature_verification: bool,
pub require_protocol_permission_for_hmac_verification: bool,
pub require_protocol_permission_for_decryption: bool,
pub require_basket_access_for_insertion: bool,
pub require_basket_access_for_listing: bool,
pub require_basket_access_for_relinquishing: bool,
pub require_certificate_access_for_acquisition: bool,
pub require_certificate_access_for_listing: bool,
pub require_certificate_access_for_proving: bool,
pub require_certificate_access_for_relinquishing: bool,
pub require_certificate_access_for_discovery: bool,
pub require_spending_authorization: bool,
pub require_label_access_for_actions: bool,
pub require_label_access_for_listing: bool,
pub encrypt_wallet_metadata: bool,
}
impl Default for PermissionsManagerConfig {
fn default() -> Self {
Self {
require_protocol_permission_for_signing: true,
require_protocol_permission_for_encrypting: true,
require_protocol_permission_for_hmac: true,
require_protocol_permission_for_key_linkage: true,
require_protocol_permission_for_public_key: true,
require_protocol_permission_for_signature_verification: true,
require_protocol_permission_for_hmac_verification: true,
require_protocol_permission_for_decryption: true,
require_basket_access_for_insertion: true,
require_basket_access_for_listing: true,
require_basket_access_for_relinquishing: true,
require_certificate_access_for_acquisition: true,
require_certificate_access_for_listing: true,
require_certificate_access_for_proving: true,
require_certificate_access_for_relinquishing: true,
require_certificate_access_for_discovery: true,
require_spending_authorization: true,
require_label_access_for_actions: true,
require_label_access_for_listing: true,
encrypt_wallet_metadata: true,
}
}
}
#[cfg(test)]
mod tests {
use super::*;
#[test]
fn test_config_defaults_all_true() {
let config = PermissionsManagerConfig::default();
assert!(config.require_protocol_permission_for_signing);
assert!(config.require_protocol_permission_for_encrypting);
assert!(config.require_protocol_permission_for_hmac);
assert!(config.require_protocol_permission_for_key_linkage);
assert!(config.require_protocol_permission_for_public_key);
assert!(config.require_protocol_permission_for_signature_verification);
assert!(config.require_protocol_permission_for_hmac_verification);
assert!(config.require_protocol_permission_for_decryption);
assert!(config.require_basket_access_for_insertion);
assert!(config.require_basket_access_for_listing);
assert!(config.require_basket_access_for_relinquishing);
assert!(config.require_certificate_access_for_acquisition);
assert!(config.require_certificate_access_for_listing);
assert!(config.require_certificate_access_for_proving);
assert!(config.require_certificate_access_for_relinquishing);
assert!(config.require_certificate_access_for_discovery);
assert!(config.require_spending_authorization);
assert!(config.require_label_access_for_actions);
assert!(config.require_label_access_for_listing);
assert!(config.encrypt_wallet_metadata);
}
}