Skip to content

Commit d6991b1

Browse files
committed
Add signed message to entities::SingleSignatures in common
Else we would need to change signatures of multiple methods in the signer in order to pass it to the `RegisterSignnatureMessage`. It will also be usefull in aggregator to handle signature buffer on the service side (since most services use entities instead of messages).
1 parent eb4270c commit d6991b1

File tree

4 files changed

+25
-5
lines changed

4 files changed

+25
-5
lines changed

mithril-aggregator/src/database/record/single_signature.rs

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,7 @@ impl TryFrom<SingleSignatureRecord> for SingleSignatures {
5454
party_id: value.signer_id,
5555
won_indexes: value.lottery_indexes,
5656
signature: value.signature.try_into()?,
57+
signed_message: None,
5758
};
5859

5960
Ok(signatures)

mithril-aggregator/src/message_adapters/from_register_signature.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -22,6 +22,7 @@ impl TryFromMessageAdapter<RegisterSignatureMessage, SingleSignatures>
2222
"'FromRegisterSingleSignatureAdapter' can not convert the single signature"
2323
})?,
2424
won_indexes: register_single_signature_message.won_indexes,
25+
signed_message: register_single_signature_message.signed_message,
2526
};
2627

2728
Ok(signatures)
@@ -34,9 +35,16 @@ mod tests {
3435

3536
#[test]
3637
fn test_simple_message() {
37-
let message = RegisterSignatureMessage::dummy();
38-
let signatures = FromRegisterSingleSignatureAdapter::try_adapt(message).unwrap();
38+
let signatures = FromRegisterSingleSignatureAdapter::try_adapt(RegisterSignatureMessage {
39+
signed_message: Some("signed_message".to_string()),
40+
..RegisterSignatureMessage::dummy()
41+
})
42+
.unwrap();
3943

4044
assert_eq!("party_id".to_string(), signatures.party_id);
45+
assert_eq!(
46+
Some("signed_message".to_string()),
47+
signatures.signed_message
48+
);
4149
}
4250
}

mithril-common/src/entities/single_signatures.rs

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,13 @@ pub struct SingleSignatures {
2020
/// The indexes of the won lotteries that lead to the single signatures
2121
#[serde(rename = "indexes")]
2222
pub won_indexes: Vec<LotteryIndex>,
23+
24+
/// Message that is signed by the signer
25+
///
26+
/// Used to buffer the signature for later if the Aggregator has yet to create an open message
27+
/// for the signed entity type.
28+
#[serde(skip_serializing_if = "Option::is_none")]
29+
pub signed_message: Option<String>,
2330
}
2431

2532
impl SingleSignatures {
@@ -33,6 +40,7 @@ impl SingleSignatures {
3340
party_id,
3441
signature,
3542
won_indexes,
43+
signed_message: None,
3644
}
3745
}
3846

mithril-signer/src/message_adapters/to_register_signature_message.rs

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,7 @@ impl TryToMessageAdapter<(SignedEntityType, SingleSignatures), RegisterSignature
1818
"'ToRegisterSignatureMessageAdapter' can not convert the single signature"
1919
})?,
2020
won_indexes: single_signature.won_indexes,
21-
signed_message: None,
21+
signed_message: single_signature.signed_message,
2222
};
2323

2424
Ok(message)
@@ -33,13 +33,16 @@ mod tests {
3333

3434
#[test]
3535
fn adapt_ok() {
36-
let single_signature = fake_data::single_signatures([1, 3].to_vec());
3736
let message: RegisterSignatureMessage = ToRegisterSignatureMessageAdapter::try_adapt((
3837
SignedEntityType::dummy(),
39-
single_signature,
38+
SingleSignatures {
39+
signed_message: Some("signed_message".to_string()),
40+
..fake_data::single_signatures([1, 3].to_vec())
41+
},
4042
))
4143
.unwrap();
4244

4345
assert_eq!("party_id".to_string(), message.party_id);
46+
assert_eq!(Some("signed_message".to_string()), message.signed_message);
4447
}
4548
}

0 commit comments

Comments
 (0)