b3_utils 0.13.1

Utility functions for building on the Internet Computer
Documentation
use crate::Environment;
use candid::{CandidType, Deserialize};

use super::types::{VetKDCurve, VetKDKeyId};

#[derive(CandidType, Deserialize, Clone)]
pub struct VetKDConfig {
    pub key_name: String,
    pub sign_cycles: u64,
}

impl Default for VetKDConfig {
    fn default() -> Self {
        Self::from(Environment::Development)
    }
}

impl From<Environment> for VetKDConfig {
    fn from(env: Environment) -> Self {
        if env == Environment::Production {
            Self {
                key_name: "key_1".to_string(),
                sign_cycles: 0,
            }
        } else if env == Environment::Staging {
            Self {
                key_name: "test_key_1".to_string(),
                sign_cycles: 0,
            }
        } else {
            Self {
                key_name: "dfx_test_key".to_string(),
                sign_cycles: 0,
            }
        }
    }
}

impl VetKDConfig {
    pub fn key_name(&self) -> String {
        self.key_name.clone()
    }

    pub fn sign_cycles(&self) -> u64 {
        self.sign_cycles
    }

    pub fn key_id(&self) -> VetKDKeyId {
        VetKDKeyId {
            curve: VetKDCurve::Bls12_381,
            name: self.key_name.clone(),
        }
    }
}