mithril_aggregator/message_adapters/
from_register_signer.rs1use anyhow::Context;
2use mithril_common::{
3 StdResult,
4 entities::Signer,
5 messages::{RegisterSignerMessage, TryFromMessageAdapter},
6};
7
8pub struct FromRegisterSignerAdapter;
10
11impl TryFromMessageAdapter<RegisterSignerMessage, Signer> for FromRegisterSignerAdapter {
12 fn try_adapt(register_signer_message: RegisterSignerMessage) -> StdResult<Signer> {
14 Ok(Signer {
15 party_id: register_signer_message.party_id,
16 verification_key: register_signer_message.verification_key.try_into().with_context(
17 || "'FromRegisterSignerAdapter' can not convert the verification key",
18 )?,
19 verification_key_signature: match register_signer_message.verification_key_signature {
20 Some(verification_key_signature) => {
21 Some(verification_key_signature.try_into().with_context(|| {
22 "'FromRegisterSignerAdapter' can not convert the verification key signature"
23 })?)
24 }
25 _ => None,
26 },
27 operational_certificate: match register_signer_message.operational_certificate {
28 Some(operational_certificate) => {
29 Some(operational_certificate.try_into().with_context(|| {
30 "'FromRegisterSignerAdapter' can not convert the operational certificate"
31 })?)
32 }
33 _ => None,
34 },
35 kes_evolutions: register_signer_message.kes_evolutions,
36 })
37 }
38}
39
40#[cfg(test)]
41mod tests {
42 use mithril_common::test::double::Dummy;
43
44 use super::*;
45
46 #[test]
47 fn try_adapt_signer_registration_message_to_entity() {
48 let register_signer_message = RegisterSignerMessage {
49 party_id: "one".to_string(),
50 ..RegisterSignerMessage::dummy()
51 };
52
53 let signer = FromRegisterSignerAdapter::try_adapt(register_signer_message)
54 .expect("Converting message to signer should not fail");
55
56 assert_eq!("one".to_string(), signer.party_id);
57 }
58}