Skip to content

Commit b9230e9

Browse files
author
Clément TURMEL
authored
Merge pull request #2437 from input-output-hk/ensemble/2427/Implement_signer_publisher_abstraction
refactor: move SignaturePublisher to a dedicated module
2 parents f8f036c + b96b34e commit b9230e9

35 files changed

+280
-268
lines changed

Cargo.lock

Lines changed: 3 additions & 3 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

mithril-aggregator/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "mithril-aggregator"
3-
version = "0.7.41"
3+
version = "0.7.42"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

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

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use chrono::{DateTime, Utc};
22

33
use mithril_common::entities::{
4-
HexEncodedSingleSignature, LotteryIndex, SignedEntityTypeDiscriminants, SingleSignatures,
4+
HexEncodedSingleSignature, LotteryIndex, SignedEntityTypeDiscriminants, SingleSignature,
55
};
66
use mithril_common::{StdError, StdResult};
77
use mithril_persistence::sqlite::{HydrationError, Projection, SqLiteEntity};
@@ -27,8 +27,8 @@ pub struct BufferedSingleSignatureRecord {
2727
}
2828

2929
impl BufferedSingleSignatureRecord {
30-
pub(crate) fn try_from_single_signatures(
31-
other: &SingleSignatures,
30+
pub(crate) fn try_from_single_signature(
31+
other: &SingleSignature,
3232
signed_entity_id: SignedEntityTypeDiscriminants,
3333
) -> StdResult<Self> {
3434
let record = BufferedSingleSignatureRecord {
@@ -50,10 +50,10 @@ impl BufferedSingleSignatureRecord {
5050
discriminant: SignedEntityTypeDiscriminants,
5151
) -> Self {
5252
// Note: due to the unique constraint on the signature column, we want to make sure that
53-
// the signatures are different for party_id/discriminant pairs.
54-
// We can't just reuse fake_data::single_signatures as they are static.
55-
Self::try_from_single_signatures(
56-
&SingleSignatures::fake(party_id.into(), discriminant.to_string()),
53+
// the signature are different for party_id/discriminant pairs.
54+
// We can't just reuse fake_data::single_signature as they are static.
55+
Self::try_from_single_signature(
56+
&SingleSignature::fake(party_id.into(), discriminant.to_string()),
5757
discriminant,
5858
)
5959
.unwrap()
@@ -77,18 +77,18 @@ impl BufferedSingleSignatureRecord {
7777
}
7878
}
7979

80-
impl TryFrom<BufferedSingleSignatureRecord> for SingleSignatures {
80+
impl TryFrom<BufferedSingleSignatureRecord> for SingleSignature {
8181
type Error = StdError;
8282

8383
fn try_from(value: BufferedSingleSignatureRecord) -> Result<Self, Self::Error> {
84-
let signatures = SingleSignatures {
84+
let signature = SingleSignature {
8585
party_id: value.party_id,
8686
won_indexes: value.lottery_indexes,
8787
signature: value.signature.try_into()?,
8888
authentication_status: Default::default(),
8989
};
9090

91-
Ok(signatures)
91+
Ok(signature)
9292
}
9393
}
9494

@@ -181,9 +181,9 @@ mod tests {
181181
use super::*;
182182

183183
#[test]
184-
fn test_convert_single_signatures() {
185-
let single_signature = fake_data::single_signatures(vec![1, 3, 4, 6, 7, 9]);
186-
let single_signature_record = BufferedSingleSignatureRecord::try_from_single_signatures(
184+
fn test_convert_single_signature() {
185+
let single_signature = fake_data::single_signature(vec![1, 3, 4, 6, 7, 9]);
186+
let single_signature_record = BufferedSingleSignatureRecord::try_from_single_signature(
187187
&single_signature,
188188
CardanoTransactions,
189189
)

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

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use chrono::{DateTime, Utc};
22
use sqlite::Row;
33
use uuid::Uuid;
44

5-
use mithril_common::entities::{Epoch, ProtocolMessage, SignedEntityType, SingleSignatures};
5+
use mithril_common::entities::{Epoch, ProtocolMessage, SignedEntityType, SingleSignature};
66
use mithril_persistence::sqlite::{HydrationError, Projection, SqLiteEntity};
77

88
use crate::database::record::OpenMessageRecord;
@@ -29,7 +29,7 @@ pub struct OpenMessageWithSingleSignaturesRecord {
2929
pub is_expired: bool,
3030

3131
/// associated single signatures
32-
pub single_signatures: Vec<SingleSignatures>,
32+
pub single_signatures: Vec<SingleSignature>,
3333

3434
/// Message creation datetime, it is set by the database.
3535
pub created_at: DateTime<Utc>,
@@ -59,7 +59,7 @@ impl SqLiteEntity for OpenMessageWithSingleSignaturesRecord {
5959
Self: Sized,
6060
{
6161
let single_signatures = &row.read::<&str, _>(9);
62-
let single_signatures: Vec<SingleSignatures> = serde_json::from_str(single_signatures)
62+
let single_signatures: Vec<SingleSignature> = serde_json::from_str(single_signatures)
6363
.map_err(|e| {
6464
HydrationError::InvalidData(format!(
6565
"Could not parse single signatures JSON: '{single_signatures}'. Error: {e}"

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

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use chrono::{DateTime, Utc};
22
use uuid::Uuid;
33

4-
use mithril_common::entities::{Epoch, HexEncodedSingleSignature, LotteryIndex, SingleSignatures};
4+
use mithril_common::entities::{Epoch, HexEncodedSingleSignature, LotteryIndex, SingleSignature};
55
use mithril_common::{StdError, StdResult};
66
use mithril_persistence::sqlite::{HydrationError, Projection, SqLiteEntity};
77

@@ -28,8 +28,8 @@ pub struct SingleSignatureRecord {
2828
}
2929

3030
impl SingleSignatureRecord {
31-
pub(crate) fn try_from_single_signatures(
32-
other: &SingleSignatures,
31+
pub(crate) fn try_from_single_signature(
32+
other: &SingleSignature,
3333
open_message_id: &Uuid,
3434
registration_epoch_settings_id: Epoch,
3535
) -> StdResult<Self> {
@@ -46,18 +46,18 @@ impl SingleSignatureRecord {
4646
}
4747
}
4848

49-
impl TryFrom<SingleSignatureRecord> for SingleSignatures {
49+
impl TryFrom<SingleSignatureRecord> for SingleSignature {
5050
type Error = StdError;
5151

5252
fn try_from(value: SingleSignatureRecord) -> Result<Self, Self::Error> {
53-
let signatures = SingleSignatures {
53+
let signature = SingleSignature {
5454
party_id: value.signer_id,
5555
won_indexes: value.lottery_indexes,
5656
signature: value.signature.try_into()?,
5757
authentication_status: Default::default(),
5858
};
5959

60-
Ok(signatures)
60+
Ok(signature)
6161
}
6262
}
6363

@@ -138,10 +138,10 @@ mod tests {
138138
use super::*;
139139

140140
#[test]
141-
fn test_convert_single_signatures() {
142-
let single_signature = fake_data::single_signatures(vec![1, 3, 4, 6, 7, 9]);
141+
fn test_convert_single_signature() {
142+
let single_signature = fake_data::single_signature(vec![1, 3, 4, 6, 7, 9]);
143143
let open_message_id = Uuid::parse_str("193d1442-e89b-43cf-9519-04d8db9a12ff").unwrap();
144-
let single_signature_record = SingleSignatureRecord::try_from_single_signatures(
144+
let single_signature_record = SingleSignatureRecord::try_from_single_signature(
145145
&single_signature,
146146
&open_message_id,
147147
Epoch(1),

mithril-aggregator/src/database/repository/buffered_single_signature_repository.rs

Lines changed: 12 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use anyhow::Context;
22
use async_trait::async_trait;
33
use std::sync::Arc;
44

5-
use mithril_common::entities::{SignedEntityTypeDiscriminants, SingleSignatures};
5+
use mithril_common::entities::{SignedEntityTypeDiscriminants, SingleSignature};
66
use mithril_common::{StdError, StdResult};
77
use mithril_persistence::sqlite::{ConnectionExtensions, SqliteConnection};
88

@@ -60,13 +60,13 @@ impl BufferedSingleSignatureStore for BufferedSingleSignatureRepository {
6060
async fn buffer_signature(
6161
&self,
6262
signed_entity_type_discriminant: SignedEntityTypeDiscriminants,
63-
signature: &SingleSignatures,
63+
signature: &SingleSignature,
6464
) -> StdResult<()> {
65-
let record = BufferedSingleSignatureRecord::try_from_single_signatures(
65+
let record = BufferedSingleSignatureRecord::try_from_single_signature(
6666
signature,
6767
signed_entity_type_discriminant,
6868
)
69-
.with_context(|| "Failed to convert SingleSignatures to BufferedSingleSignatureRecord")?;
69+
.with_context(|| "Failed to convert SingleSignature to BufferedSingleSignatureRecord")?;
7070

7171
self.connection
7272
.fetch_first(InsertOrReplaceBufferedSingleSignatureRecordQuery::one(
@@ -79,14 +79,14 @@ impl BufferedSingleSignatureStore for BufferedSingleSignatureRepository {
7979
async fn get_buffered_signatures(
8080
&self,
8181
signed_entity_type_discriminant: SignedEntityTypeDiscriminants,
82-
) -> StdResult<Vec<SingleSignatures>> {
82+
) -> StdResult<Vec<SingleSignature>> {
8383
self.get_by_discriminant(signed_entity_type_discriminant)
8484
}
8585

8686
async fn remove_buffered_signatures(
8787
&self,
8888
signed_entity_type_discriminant: SignedEntityTypeDiscriminants,
89-
single_signatures: Vec<SingleSignatures>,
89+
single_signatures: Vec<SingleSignature>,
9090
) -> StdResult<()> {
9191
let signatures_party_ids = single_signatures.into_iter().map(|s| s.party_id).collect();
9292
self.connection.fetch_first(
@@ -186,7 +186,7 @@ mod tests {
186186
store
187187
.buffer_signature(
188188
CardanoTransactions,
189-
&SingleSignatures::new(
189+
&SingleSignature::new(
190190
"party1",
191191
fake_keys::single_signature()[0].try_into().unwrap(),
192192
vec![1],
@@ -197,7 +197,7 @@ mod tests {
197197
store
198198
.buffer_signature(
199199
CardanoTransactions,
200-
&SingleSignatures::new(
200+
&SingleSignature::new(
201201
"party2",
202202
fake_keys::single_signature()[1].try_into().unwrap(),
203203
vec![2],
@@ -212,12 +212,12 @@ mod tests {
212212
.unwrap();
213213
assert_eq!(
214214
vec![
215-
SingleSignatures::new(
215+
SingleSignature::new(
216216
"party2",
217217
fake_keys::single_signature()[1].try_into().unwrap(),
218218
vec![2],
219219
),
220-
SingleSignatures::new(
220+
SingleSignature::new(
221221
"party1",
222222
fake_keys::single_signature()[0].try_into().unwrap(),
223223
vec![1],
@@ -231,7 +231,7 @@ mod tests {
231231
store
232232
.buffer_signature(
233233
MithrilStakeDistribution,
234-
&SingleSignatures::new(
234+
&SingleSignature::new(
235235
"party3",
236236
fake_keys::single_signature()[2].try_into().unwrap(),
237237
vec![3],
@@ -245,7 +245,7 @@ mod tests {
245245
.await
246246
.unwrap();
247247
assert_eq!(
248-
vec![SingleSignatures::new(
248+
vec![SingleSignature::new(
249249
"party3",
250250
fake_keys::single_signature()[2].try_into().unwrap(),
251251
vec![3],

mithril-aggregator/src/database/repository/single_signature_repository.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use std::sync::Arc;
22

3-
use mithril_common::entities::SingleSignatures;
3+
use mithril_common::entities::SingleSignature;
44
use mithril_common::StdResult;
55
use mithril_persistence::sqlite::{ConnectionExtensions, SqliteConnection};
66

@@ -21,10 +21,10 @@ impl SingleSignatureRepository {
2121
/// Create a new Single Signature in database
2222
pub async fn create_single_signature(
2323
&self,
24-
single_signature: &SingleSignatures,
24+
single_signature: &SingleSignature,
2525
open_message: &OpenMessageRecord,
2626
) -> StdResult<SingleSignatureRecord> {
27-
let single_signature = SingleSignatureRecord::try_from_single_signatures(
27+
let single_signature = SingleSignatureRecord::try_from_single_signature(
2828
single_signature,
2929
&open_message.open_message_id,
3030
open_message.epoch.offset_to_signer_retrieval_epoch()?,

mithril-aggregator/src/entities/open_message.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use chrono::{DateTime, Utc};
22

33
use mithril_common::entities::{
4-
Epoch, PartyId, ProtocolMessage, SignedEntityType, SingleSignatures,
4+
Epoch, PartyId, ProtocolMessage, SignedEntityType, SingleSignature,
55
};
66

77
use crate::database::record::{OpenMessageRecord, OpenMessageWithSingleSignaturesRecord};
@@ -29,7 +29,7 @@ pub struct OpenMessage {
2929
pub is_expired: bool,
3030

3131
/// associated single signatures
32-
pub single_signatures: Vec<SingleSignatures>,
32+
pub single_signatures: Vec<SingleSignature>,
3333

3434
/// Message creation datetime
3535
pub created_at: DateTime<Utc>,
@@ -63,8 +63,8 @@ impl OpenMessage {
6363
is_certified: false,
6464
is_expired: false,
6565
single_signatures: vec![
66-
fake_data::single_signatures(vec![1, 4, 5]),
67-
fake_data::single_signatures(vec![2, 3, 8]),
66+
fake_data::single_signature(vec![1, 4, 5]),
67+
fake_data::single_signature(vec![2, 3, 8]),
6868
],
6969
created_at: Utc::now(),
7070
expires_at: None,
@@ -156,15 +156,15 @@ mod test {
156156
is_expired: false,
157157
created_at,
158158
expires_at: None,
159-
single_signatures: vec![fake_data::single_signatures(vec![1, 4, 5])],
159+
single_signatures: vec![fake_data::single_signature(vec![1, 4, 5])],
160160
};
161161
let expected = OpenMessage {
162162
epoch: Epoch(1),
163163
signed_entity_type: SignedEntityType::dummy(),
164164
protocol_message: ProtocolMessage::default(),
165165
is_certified: false,
166166
is_expired: false,
167-
single_signatures: vec![fake_data::single_signatures(vec![1, 4, 5])],
167+
single_signatures: vec![fake_data::single_signature(vec![1, 4, 5])],
168168
created_at,
169169
expires_at: None,
170170
};

mithril-aggregator/src/http_server/routes/signatures_routes.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ mod handlers {
5858
let signed_entity_type = message.signed_entity_type.clone();
5959
let signed_message = message.signed_message.clone();
6060

61-
let mut signatures = match FromRegisterSingleSignatureAdapter::try_adapt(message) {
61+
let mut single_signature = match FromRegisterSingleSignatureAdapter::try_adapt(message) {
6262
Ok(signature) => signature,
6363
Err(err) => {
6464
warn!(logger,"register_signatures::payload decoding error"; "error" => ?err);
@@ -72,12 +72,12 @@ mod handlers {
7272

7373
unwrap_to_internal_server_error!(
7474
single_signer_authenticator
75-
.authenticate(&mut signatures, &signed_message)
75+
.authenticate(&mut single_signature, &signed_message)
7676
.await,
7777
logger => "single_signer_authenticator::error"
7878
);
7979

80-
if !signatures.is_authenticated() {
80+
if !single_signature.is_authenticated() {
8181
debug!(logger, "register_signatures::unauthenticated_signature");
8282
return Ok(reply::bad_request(
8383
"Could not authenticate signature".to_string(),
@@ -86,7 +86,7 @@ mod handlers {
8686
}
8787

8888
match certifier_service
89-
.register_single_signature(&signed_entity_type, &signatures)
89+
.register_single_signature(&signed_entity_type, &single_signature)
9090
.await
9191
{
9292
Err(err) => match err.downcast_ref::<CertifierServiceError>() {

0 commit comments

Comments
 (0)