massa_versioning/
keypair_factory.rs1use 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}