Skip to content

Commit fdc5b3b

Browse files
authored
Merge pull request #1167 from input-output-hk/damien/668/protocol-key-for-genesis-keys
Protocol key for genesis keys
2 parents 070aa26 + 41487cd commit fdc5b3b

File tree

19 files changed

+85
-91
lines changed

19 files changed

+85
-91
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.3.71"
3+
version = "0.3.72"
44
description = "A Mithril Aggregator server"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-aggregator/src/commands/genesis_command.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,8 @@
1-
use anyhow::{anyhow, Context};
1+
use anyhow::Context;
22
use clap::{Parser, Subcommand};
33
use config::{builder::DefaultState, ConfigBuilder};
44
use mithril_common::{
5-
crypto_helper::{key_decode_hex, ProtocolGenesisSigner},
5+
crypto_helper::{ProtocolGenesisSecretKey, ProtocolGenesisSigner},
66
entities::HexEncodedGenesisSecretKey,
77
StdResult,
88
};
@@ -175,8 +175,8 @@ impl BootstrapGenesisSubCommand {
175175
let genesis_tools = GenesisTools::from_dependencies(dependencies)
176176
.await
177177
.with_context(|| "genesis-tools: initialization error")?;
178-
let genesis_secret_key = key_decode_hex(&self.genesis_secret_key)
179-
.map_err(|e| anyhow!(e).context("json hex decode of genesis secret key failure"))?;
178+
let genesis_secret_key = ProtocolGenesisSecretKey::from_json_hex(&self.genesis_secret_key)
179+
.with_context(|| "json hex decode of genesis secret key failure")?;
180180
let genesis_signer = ProtocolGenesisSigner::from_secret_key(genesis_secret_key);
181181
genesis_tools
182182
.bootstrap_test_genesis_certificate(genesis_signer)

mithril-aggregator/src/configuration.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use config::{ConfigError, Map, Source, Value, ValueKind};
2-
use mithril_common::crypto_helper::{key_encode_hex, ProtocolGenesisSigner};
2+
use mithril_common::crypto_helper::ProtocolGenesisSigner;
33
use mithril_common::era::adapters::EraReaderAdapterType;
44
use serde::{Deserialize, Serialize};
55
use std::path::PathBuf;
@@ -143,7 +143,7 @@ impl Configuration {
143143
db_directory: PathBuf::new(),
144144
snapshot_directory: PathBuf::new(),
145145
data_stores_directory: PathBuf::from(":memory:"),
146-
genesis_verification_key: key_encode_hex(genesis_verification_key).unwrap(),
146+
genesis_verification_key: genesis_verification_key.to_json_hex().unwrap(),
147147
reset_digests_cache: false,
148148
disable_digests_cache: false,
149149
store_retention_limit: None,

mithril-aggregator/src/dependency_injection/builder.rs

Lines changed: 12 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,9 @@ use mithril_common::{
44
api_version::APIVersionProvider,
55
certificate_chain::{CertificateVerifier, MithrilCertificateVerifier},
66
chain_observer::{CardanoCliChainObserver, CardanoCliRunner, ChainObserver, FakeObserver},
7-
crypto_helper::{key_decode_hex, ProtocolGenesisSigner, ProtocolGenesisVerifier},
7+
crypto_helper::{
8+
ProtocolGenesisSigner, ProtocolGenesisVerificationKey, ProtocolGenesisVerifier,
9+
},
810
database::{ApplicationNodeType, DatabaseVersionChecker},
911
digesters::{
1012
cache::{ImmutableFileDigestCacheProvider, JsonImmutableFileDigestCacheProviderBuilder},
@@ -617,14 +619,15 @@ impl DependenciesBuilder {
617619
async fn build_genesis_verifier(&mut self) -> Result<Arc<ProtocolGenesisVerifier>> {
618620
let genesis_verifier: ProtocolGenesisVerifier = match self.configuration.environment {
619621
ExecutionEnvironment::Production => ProtocolGenesisVerifier::from_verification_key(
620-
key_decode_hex(&self.configuration.genesis_verification_key).map_err(|e| {
621-
DependenciesBuilderError::Initialization {
622-
message: format!(
623-
"Could not decode hex key to build genesis verifier: '{}' Error: {e}.",
624-
self.configuration.genesis_verification_key
625-
),
626-
error: None,
627-
}
622+
ProtocolGenesisVerificationKey::from_json_hex(
623+
&self.configuration.genesis_verification_key,
624+
)
625+
.map_err(|e| DependenciesBuilderError::Initialization {
626+
message: format!(
627+
"Could not decode hex key to build genesis verifier: '{}'",
628+
self.configuration.genesis_verification_key
629+
),
630+
error: Some(e),
628631
})?,
629632
),
630633
_ => ProtocolGenesisSigner::create_deterministic_genesis_signer()

mithril-aggregator/src/signer_registerer.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -236,9 +236,9 @@ impl SignerRegisterer for MithrilSignerRegisterer {
236236
let party_id_save = key_registration.register(
237237
party_id_register.clone(),
238238
signer.operational_certificate.clone(),
239-
signer.verification_key_signature.clone(),
239+
signer.verification_key_signature,
240240
kes_period,
241-
signer.verification_key.clone(),
241+
signer.verification_key,
242242
)?;
243243
let mut signer_save = SignerWithStake::from_signer(
244244
signer.to_owned(),

mithril-aggregator/src/tools/genesis.rs

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use anyhow::anyhow;
1+
use anyhow::{anyhow, Context};
22
use std::{fs::File, io::prelude::*, io::Write, path::Path, sync::Arc};
33
use tokio::sync::RwLock;
44

@@ -139,8 +139,10 @@ impl GenesisTools {
139139
let mut genesis_secret_key_serialized = String::new();
140140
genesis_secret_key_file.read_to_string(&mut genesis_secret_key_serialized)?;
141141

142-
let genesis_secret_key = key_decode_hex(genesis_secret_key_serialized.trim())
143-
.map_err(|e| anyhow!(e).context("Genesis secret key decode error"))?;
142+
let genesis_secret_key = genesis_secret_key_serialized
143+
.trim()
144+
.try_into()
145+
.with_context(|| "Genesis secret key decode error")?;
144146
let genesis_signer = ProtocolGenesisSigner::from_secret_key(genesis_secret_key);
145147

146148
let mut to_sign_payload_file = File::open(to_sign_payload_path).unwrap();

mithril-client/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-client"
3-
version = "0.3.32"
3+
version = "0.3.33"
44
description = "A Mithril Client"
55
authors = { workspace = true }
66
edition = { workspace = true }

mithril-client/src/services/mithril_stake_distribution.rs

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use thiserror::Error;
99
use mithril_common::{
1010
certificate_chain::CertificateVerifier,
1111
crypto_helper::{
12-
key_decode_hex, key_encode_hex, ProtocolAggregateVerificationKey, ProtocolGenesisVerifier,
12+
key_encode_hex, ProtocolAggregateVerificationKey, ProtocolGenesisVerificationKey,
13+
ProtocolGenesisVerifier,
1314
},
1415
entities::{MithrilStakeDistribution, ProtocolMessagePartKey},
1516
messages::MithrilStakeDistributionListItemMessage,
@@ -141,11 +142,12 @@ impl MithrilStakeDistributionService for AppMithrilStakeDistributionService {
141142
)
142143
})?;
143144

144-
let genesis_verification_key = key_decode_hex(genesis_verification_key).map_err(|e| {
145-
MithrilStakeDistributionServiceError::InvalidParameters(anyhow!(e).context(format!(
146-
"Invalid genesis verification key '{genesis_verification_key}'"
147-
)))
148-
})?;
145+
let genesis_verification_key =
146+
ProtocolGenesisVerificationKey::from_json_hex(genesis_verification_key)
147+
.with_context(|| {
148+
format!("Invalid genesis verification key '{genesis_verification_key}'")
149+
})
150+
.map_err(MithrilStakeDistributionServiceError::InvalidParameters)?;
149151
self.certificate_verifier
150152
.verify_certificate_chain(
151153
certificate.clone(),
@@ -309,7 +311,7 @@ mod tests {
309311
.download(
310312
"hash-123",
311313
&dirpath,
312-
&key_encode_hex(genesis_verification_key).unwrap(),
314+
&genesis_verification_key.to_json_hex().unwrap(),
313315
)
314316
.await
315317
.unwrap();
@@ -362,7 +364,7 @@ mod tests {
362364
.download(
363365
"hash-123",
364366
&dirpath,
365-
&key_encode_hex(genesis_verification_key).unwrap(),
367+
&genesis_verification_key.to_json_hex().unwrap(),
366368
)
367369
.await
368370
.unwrap_err();

mithril-client/src/services/snapshot.rs

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,4 @@
1-
use anyhow::{anyhow, Context};
1+
use anyhow::Context;
22
use async_trait::async_trait;
33
use futures::Future;
44
use indicatif::{MultiProgress, ProgressBar, ProgressDrawTarget, ProgressState, ProgressStyle};
@@ -15,7 +15,7 @@ use tokio::{select, time::sleep};
1515

1616
use mithril_common::{
1717
certificate_chain::CertificateVerifier,
18-
crypto_helper::{key_decode_hex, ProtocolGenesisVerifier},
18+
crypto_helper::{ProtocolGenesisVerificationKey, ProtocolGenesisVerifier},
1919
digesters::ImmutableDigester,
2020
entities::{Certificate, ProtocolMessagePartKey, SignedEntity, Snapshot},
2121
messages::{SnapshotListItemMessage, SnapshotMessage},
@@ -127,11 +127,12 @@ impl MithrilClientSnapshotService {
127127
genesis_verification_key: &str,
128128
certificate: &Certificate,
129129
) -> StdResult<()> {
130-
let genesis_verification_key = key_decode_hex(genesis_verification_key).map_err(|e| {
131-
SnapshotServiceError::InvalidParameters(anyhow!(e).context(format!(
132-
"Invalid genesis verification key '{genesis_verification_key}'"
133-
)))
134-
})?;
130+
let genesis_verification_key =
131+
ProtocolGenesisVerificationKey::from_json_hex(genesis_verification_key)
132+
.with_context(|| {
133+
format!("Invalid genesis verification key '{genesis_verification_key}'")
134+
})
135+
.map_err(SnapshotServiceError::InvalidParameters)?;
135136
let genesis_verifier =
136137
ProtocolGenesisVerifier::from_verification_key(genesis_verification_key);
137138

@@ -302,7 +303,7 @@ mod tests {
302303
use config::{builder::DefaultState, ConfigBuilder};
303304
use flate2::{write::GzEncoder, Compression};
304305
use mithril_common::{
305-
crypto_helper::{key_encode_hex, tests_setup::setup_genesis},
306+
crypto_helper::tests_setup::setup_genesis,
306307
digesters::DumbImmutableDigester,
307308
messages::{
308309
CertificateMessage, FromMessageAdapter, SnapshotListItemMessage, SnapshotListMessage,
@@ -548,7 +549,7 @@ mod tests {
548549
.download(
549550
&snapshot,
550551
&test_path,
551-
&key_encode_hex(genesis_verification_key).unwrap(),
552+
&genesis_verification_key.to_json_hex().unwrap(),
552553
ProgressDrawTarget::hidden(),
553554
)
554555
.await
@@ -588,7 +589,7 @@ mod tests {
588589
.download(
589590
&snapshot,
590591
&test_path,
591-
&key_encode_hex(genesis_verification_key).unwrap(),
592+
&genesis_verification_key.to_json_hex().unwrap(),
592593
ProgressDrawTarget::hidden(),
593594
)
594595
.await
@@ -634,7 +635,7 @@ mod tests {
634635
.download(
635636
&signed_entity,
636637
&test_path,
637-
&key_encode_hex(genesis_verification_key).unwrap(),
638+
&genesis_verification_key.to_json_hex().unwrap(),
638639
ProgressDrawTarget::hidden(),
639640
)
640641
.await
@@ -682,7 +683,7 @@ mod tests {
682683
.download(
683684
&snapshot,
684685
&test_path,
685-
&key_encode_hex(genesis_verification_key).unwrap(),
686+
&genesis_verification_key.to_json_hex().unwrap(),
686687
ProgressDrawTarget::hidden(),
687688
)
688689
.await

0 commit comments

Comments
 (0)