massa_versioning/
keypair_factory.rs

1use massa_signature::KeyPair;
2
3use crate::{
4    versioning::{MipComponent, MipStore},
5    versioning_factory::{FactoryError, FactoryStrategy, VersioningFactory},
6};
7
8#[derive(Clone)]
9pub struct KeyPairFactory {
10    pub mip_store: MipStore,
11}
12
13impl VersioningFactory for KeyPairFactory {
14    type Output = KeyPair;
15    type Error = FactoryError;
16    type Arguments = ();
17
18    fn get_component() -> MipComponent {
19        MipComponent::KeyPair
20    }
21
22    fn get_versioning_store(&self) -> MipStore {
23        self.mip_store.clone()
24    }
25
26    fn create(
27        &self,
28        _args: &Self::Arguments,
29        strategy: FactoryStrategy,
30    ) -> Result<Self::Output, Self::Error> {
31        let version = self.get_component_version_with_strategy(strategy)?;
32
33        let output = KeyPair::generate(version.into())
34            .map_err(|_| FactoryError::UnimplementedVersion(version))?;
35
36        Ok(output)
37    }
38}