Skip to content

Commit 783fb79

Browse files
authored
Merge pull request #1164 from input-output-hk/damien/668/protocol-key-for-verification-key-signature
Protocol key for verification key signature
2 parents 44084a0 + 8a0bffa commit 783fb79

File tree

22 files changed

+143
-153
lines changed

22 files changed

+143
-153
lines changed

Cargo.lock

Lines changed: 4 additions & 4 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.3.69"
3+
version = "0.3.70"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/database/provider/signer_registration.rs

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -55,7 +55,9 @@ impl SignerRegistrationRecord {
5555
signer_id: other.party_id,
5656
epoch_setting_id: epoch,
5757
verification_key: other.verification_key.to_json_hex().unwrap(),
58-
verification_key_signature: other.verification_key_signature,
58+
verification_key_signature: other
59+
.verification_key_signature
60+
.map(|k| k.to_json_hex().unwrap()),
5961
operational_certificate: other
6062
.operational_certificate
6163
.map(|o| o.to_json_hex().unwrap()),
@@ -71,7 +73,9 @@ impl From<SignerRegistrationRecord> for Signer {
7173
Self {
7274
party_id: other.signer_id,
7375
verification_key: other.verification_key.try_into().unwrap(),
74-
verification_key_signature: other.verification_key_signature,
76+
verification_key_signature: other
77+
.verification_key_signature
78+
.map(|k| (k.try_into().unwrap())),
7579
operational_certificate: other
7680
.operational_certificate
7781
.map(|o| (o.try_into().unwrap())),
@@ -85,7 +89,9 @@ impl From<SignerRegistrationRecord> for SignerWithStake {
8589
Self {
8690
party_id: other.signer_id,
8791
verification_key: other.verification_key.try_into().unwrap(),
88-
verification_key_signature: other.verification_key_signature,
92+
verification_key_signature: other
93+
.verification_key_signature
94+
.map(|k| (k.try_into().unwrap())),
8995
operational_certificate: other
9096
.operational_certificate
9197
.map(|o| (o.try_into().unwrap())),

mithril-aggregator/src/message_adapters/from_register_signer.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,7 +13,10 @@ impl TryFromMessageAdapter<RegisterSignerMessage, Signer> for FromRegisterSigner
1313
Ok(Signer {
1414
party_id: register_signer_message.party_id,
1515
verification_key: register_signer_message.verification_key.try_into()?,
16-
verification_key_signature: register_signer_message.verification_key_signature,
16+
verification_key_signature: match register_signer_message.verification_key_signature {
17+
Some(verification_key_signature) => Some(verification_key_signature.try_into()?),
18+
_ => None,
19+
},
1720
operational_certificate: match register_signer_message.operational_certificate {
1821
Some(operational_certificate) => Some(operational_certificate.try_into()?),
1922
_ => None,

mithril-aggregator/src/message_adapters/to_certificate_pending_message.rs

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -29,7 +29,9 @@ impl ToCertificatePendingMessageAdapter {
2929
.map(|signer| SignerMessage {
3030
party_id: signer.party_id,
3131
verification_key: signer.verification_key.try_into().unwrap(),
32-
verification_key_signature: signer.verification_key_signature,
32+
verification_key_signature: signer
33+
.verification_key_signature
34+
.map(|k| k.try_into().unwrap()),
3335
kes_period: signer.kes_period,
3436
operational_certificate: signer
3537
.operational_certificate

mithril-aggregator/src/signer_registerer.rs

Lines changed: 4 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -5,9 +5,7 @@ use tokio::sync::RwLock;
55

66
use mithril_common::{
77
chain_observer::ChainObserver,
8-
crypto_helper::{
9-
key_decode_hex, KESPeriod, ProtocolKeyRegistration, ProtocolRegistrationError,
10-
},
8+
crypto_helper::{KESPeriod, ProtocolKeyRegistration, ProtocolRegistrationError},
119
entities::{Epoch, Signer, SignerWithStake, StakeDistribution},
1210
store::StoreError,
1311
StdResult,
@@ -224,18 +222,7 @@ impl SignerRegisterer for MithrilSignerRegisterer {
224222
"" => None,
225223
party_id => Some(party_id.to_string()),
226224
};
227-
let verification_key_signature = match &signer.verification_key_signature {
228-
Some(verification_key_signature) => Some(
229-
key_decode_hex(verification_key_signature)
230-
.map_err(SignerRegistrationError::Codec)?,
231-
),
232-
_ => None,
233-
};
234-
let operational_certificate = signer
235-
.operational_certificate
236-
.as_ref()
237-
.map(|op_cert| op_cert.to_owned().into());
238-
let kes_period = match &operational_certificate {
225+
let kes_period = match &signer.operational_certificate {
239226
Some(operational_certificate) => Some(
240227
self.chain_observer
241228
.get_current_kes_period(operational_certificate)
@@ -248,8 +235,8 @@ impl SignerRegisterer for MithrilSignerRegisterer {
248235
};
249236
let party_id_save = key_registration.register(
250237
party_id_register.clone(),
251-
operational_certificate,
252-
verification_key_signature,
238+
signer.operational_certificate.clone(),
239+
signer.verification_key_signature.clone(),
253240
kes_period,
254241
signer.verification_key.clone(),
255242
)?;

mithril-common/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-common"
3-
version = "0.2.91"
3+
version = "0.2.92"
44
authors = { workspace = true }
55
edition = { workspace = true }
66
documentation = { workspace = true }

mithril-common/src/crypto_helper/cardano/key_certification.rs

Lines changed: 17 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,12 @@
44
//! guarantees that mithril-stm will not be misused in the context of Cardano.
55
66
use crate::crypto_helper::{
7-
cardano::{OpCert, ParseError, SerDeShelleyFileFormat},
7+
cardano::{ParseError, SerDeShelleyFileFormat},
88
types::{
99
ProtocolParameters, ProtocolPartyId, ProtocolSignerVerificationKey,
1010
ProtocolSignerVerificationKeySignature, ProtocolStakeDistribution,
1111
},
12+
ProtocolOpCert,
1213
};
1314

1415
use mithril_stm::key_reg::{ClosedKeyReg, KeyReg};
@@ -143,7 +144,11 @@ impl StmInitializerWrapper {
143144
.map_err(|_| ProtocolInitializerErrorWrapper::KesUpdate(period))?;
144145
}
145146

146-
Some(kes_sk.sign(&stm_initializer.verification_key().to_bytes()))
147+
Some(
148+
kes_sk
149+
.sign(&stm_initializer.verification_key().to_bytes())
150+
.into(),
151+
)
147152
} else {
148153
println!("WARNING: Non certified signer registration by providing only a Pool Id is decommissionned and must be used for tests only!");
149154
None
@@ -162,7 +167,7 @@ impl StmInitializerWrapper {
162167

163168
/// Extract the verification key signature.
164169
pub fn verification_key_signature(&self) -> Option<ProtocolSignerVerificationKeySignature> {
165-
self.kes_signature
170+
self.kes_signature.clone()
166171
}
167172

168173
/// Extract the protocol parameters of the initializer
@@ -215,7 +220,7 @@ impl StmInitializerWrapper {
215220

216221
Ok(Self {
217222
stm_initializer,
218-
kes_signature: Some(kes_signature),
223+
kes_signature: Some(kes_signature.into()),
219224
})
220225
}
221226
}
@@ -236,7 +241,7 @@ impl KeyRegWrapper {
236241
pub fn register(
237242
&mut self,
238243
party_id: Option<ProtocolPartyId>, // TODO: Parameter should be removed once the signer certification is fully deployed
239-
opcert: Option<OpCert>, // TODO: Option should be removed once the signer certification is fully deployed
244+
opcert: Option<ProtocolOpCert>, // TODO: Option should be removed once the signer certification is fully deployed
240245
kes_sig: Option<ProtocolSignerVerificationKeySignature>, // TODO: Option should be removed once the signer certification is fully deployed
241246
kes_period: Option<KESPeriod>,
242247
pk: ProtocolSignerVerificationKey,
@@ -295,7 +300,7 @@ impl KeyRegWrapper {
295300
mod test {
296301

297302
use super::*;
298-
use crate::crypto_helper::cardano::ColdKeyGenerator;
303+
use crate::crypto_helper::{cardano::ColdKeyGenerator, OpCert};
299304

300305
use rand_chacha::ChaCha20Rng;
301306
use rand_core::SeedableRng;
@@ -356,8 +361,9 @@ mod test {
356361
)
357362
.unwrap();
358363

359-
let opcert1: OpCert = OpCert::from_file(operational_certificate_file_1)
360-
.expect("opcert deserialization should not fail");
364+
let opcert1 = OpCert::from_file(operational_certificate_file_1)
365+
.expect("opcert deserialization should not fail")
366+
.into();
361367

362368
let key_registration_1 = key_reg.register(
363369
None,
@@ -377,8 +383,9 @@ mod test {
377383
)
378384
.unwrap();
379385

380-
let opcert2: OpCert = OpCert::from_file(operational_certificate_file_2)
381-
.expect("opcert deserialization should not fail");
386+
let opcert2 = OpCert::from_file(operational_certificate_file_2)
387+
.expect("opcert deserialization should not fail")
388+
.into();
382389

383390
let key_registration_2 = key_reg.register(
384391
None,

mithril-common/src/crypto_helper/tests_setup.rs

Lines changed: 4 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -85,23 +85,18 @@ fn setup_signer_with_stake(
8585
SignerWithStake::new(
8686
party_id.to_owned(),
8787
protocol_initializer.verification_key().into(),
88-
protocol_initializer
89-
.verification_key_signature()
90-
.as_ref()
91-
.map(|verification_key_signature| {
92-
key_encode_hex(verification_key_signature)
93-
.expect("key_encode_hex of verification_key_signature should not fail")
94-
}),
88+
protocol_initializer.verification_key_signature(),
9589
operational_certificate,
9690
kes_period,
9791
stake,
9892
)
9993
}
10094

101-
fn decode_op_cert_in_dir(dir: Option<PathBuf>) -> Option<OpCert> {
95+
fn decode_op_cert_in_dir(dir: Option<PathBuf>) -> Option<ProtocolOpCert> {
10296
dir.as_ref().map(|dir| {
10397
OpCert::from_file(dir.join("opcert.cert"))
10498
.expect("operational certificate decoding should not fail")
99+
.into()
105100
})
106101
}
107102

@@ -128,7 +123,7 @@ pub fn setup_signers_from_stake_distribution(
128123
party_id,
129124
*stake,
130125
&protocol_initializer,
131-
operational_certificate.as_ref().map(|o| o.clone().into()),
126+
operational_certificate.clone(),
132127
kes_period,
133128
);
134129

mithril-common/src/crypto_helper/types/alias.rs

Lines changed: 0 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -11,7 +11,6 @@ use mithril_stm::{
1111

1212
use blake2::{digest::consts::U32, Blake2b};
1313
use ed25519_dalek;
14-
use kes_summed_ed25519::kes::Sum6KesSig;
1514

1615
/// A protocol version
1716
pub type ProtocolVersion<'a> = &'a str;
@@ -49,9 +48,6 @@ pub type ProtocolKeyRegistration = KeyRegWrapper;
4948
/// Alias of a wrapper of [MithrilStm:ClosedKeyReg](struct@mithril_stm::key_reg::KeyReg).
5049
pub type ProtocolClosedKeyRegistration = ClosedKeyReg<D>;
5150

52-
/// Alias of [KES:Sum6KesSig](https://github.com/input-output-hk/kes/blob/master/src/kes.rs).
53-
pub type ProtocolSignerVerificationKeySignature = Sum6KesSig;
54-
5551
/// Alias of [MithrilStm:StmAggrVerificationKey](struct@mithril_stm::stm::StmAggrVerificationKey).
5652
pub type ProtocolAggregateVerificationKey = StmAggrVerificationKey<D>;
5753

0 commit comments

Comments
 (0)