4
4
//! messages and turn them into [Certificate]. To do so, it registers
5
5
//! single signatures and deal with the multi_signer for aggregate signature
6
6
//! creation.
7
- use std:: sync:: Arc ;
8
7
9
8
use async_trait:: async_trait;
10
9
use chrono:: Utc ;
11
- use mithril_common:: certificate_chain:: CertificateVerifier ;
12
- use mithril_common:: crypto_helper:: { key_encode_hex, ProtocolGenesisVerifier , PROTOCOL_VERSION } ;
13
- use mithril_common:: entities:: {
14
- Certificate , CertificateMetadata , Epoch , ProtocolMessage , SignedEntityType , SingleSignatures ,
10
+ use mithril_common:: {
11
+ certificate_chain:: CertificateVerifier ,
12
+ crypto_helper:: { ProtocolGenesisVerifier , PROTOCOL_VERSION } ,
13
+ entities:: {
14
+ Certificate , CertificateMetadata , CertificateSignature , Epoch , ProtocolMessage ,
15
+ SignedEntityType , SingleSignatures ,
16
+ } ,
17
+ StdResult ,
15
18
} ;
16
- use mithril_common:: StdResult ;
17
19
use slog:: Logger ;
18
20
use slog_scope:: { debug, error, info, warn} ;
21
+ use std:: sync:: Arc ;
19
22
use thiserror:: Error ;
20
23
use tokio:: sync:: RwLock ;
21
24
22
- use crate :: database:: provider:: {
23
- CertificateRepository , OpenMessageRecord , OpenMessageRepository ,
24
- OpenMessageWithSingleSignaturesRecord , SingleSignatureRepository ,
25
+ use crate :: {
26
+ database:: provider:: {
27
+ CertificateRepository , OpenMessageRecord , OpenMessageRepository ,
28
+ OpenMessageWithSingleSignaturesRecord , SingleSignatureRepository ,
29
+ } ,
30
+ entities:: OpenMessage ,
31
+ MultiSigner ,
25
32
} ;
26
- use crate :: entities:: OpenMessage ;
27
- use crate :: MultiSigner ;
28
33
29
34
#[ cfg( test) ]
30
35
use mockall:: automock;
@@ -289,16 +294,17 @@ impl CertifierService for MithrilCertifierService {
289
294
}
290
295
291
296
let multi_signer = self . multi_signer . write ( ) . await ;
292
- let signature = multi_signer. create_multi_signature ( & open_message) . await ?;
293
-
294
- if signature. is_some ( ) {
295
- info ! ( "CertifierService::create_certificate: multi-signature created for open message {signed_entity_type:?}" ) ;
296
- } else {
297
- debug ! ( "CertifierService::create_certificate: No multi-signature could be created for open message {signed_entity_type:?}" ) ;
297
+ let multi_signature = match multi_signer. create_multi_signature ( & open_message) . await ? {
298
+ None => {
299
+ debug ! ( "CertifierService::create_certificate: No multi-signature could be created for open message {signed_entity_type:?}" ) ;
300
+ return Ok ( None ) ;
301
+ }
302
+ Some ( signature) => {
303
+ info ! ( "CertifierService::create_certificate: multi-signature created for open message {signed_entity_type:?}" ) ;
304
+ signature
305
+ }
306
+ } ;
298
307
299
- return Ok ( None ) ;
300
- }
301
- let signature = signature. unwrap ( ) ;
302
308
let signer_ids = open_message. get_signers_id ( ) ;
303
309
let signers = multi_signer
304
310
. get_signers_with_stake ( )
@@ -322,7 +328,6 @@ impl CertifierService for MithrilCertifierService {
322
328
sealed_at,
323
329
signers,
324
330
) ;
325
- let multi_signature = key_encode_hex ( signature) . map_err ( CertifierServiceError :: Codec ) ?;
326
331
let parent_certificate_hash = self
327
332
. certificate_repository
328
333
. get_master_certificate_for_epoch ( open_message. epoch )
@@ -339,8 +344,7 @@ impl CertifierService for MithrilCertifierService {
339
344
multi_signer
340
345
. compute_stake_distribution_aggregate_verification_key ( )
341
346
. await ?,
342
- multi_signature,
343
- "" . to_string ( ) ,
347
+ CertificateSignature :: MultiSignature ( multi_signature) ,
344
348
) ;
345
349
346
350
self . certificate_verifier
0 commit comments