Skip to content

Commit 9857317

Browse files
author
Damien LACHAUME / PALO-IT
committed
Implement ProtocolKey for Genesis Verification Key
1 parent 070aa26 commit 9857317

File tree

5 files changed

+20
-18
lines changed

5 files changed

+20
-18
lines changed

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-common/src/crypto_helper/genesis.rs

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -64,8 +64,7 @@ impl ProtocolGenesisSigner {
6464
&self,
6565
expanded_secret_key: &ExpandedSecretKey,
6666
) -> ProtocolGenesisVerificationKey {
67-
let verification_key: ProtocolGenesisVerificationKey = expanded_secret_key.into();
68-
verification_key
67+
ProtocolGenesisVerificationKey::new(expanded_secret_key.into())
6968
}
7069

7170
/// Create a ProtocolGenesisVerifier
@@ -111,7 +110,7 @@ impl ProtocolGenesisVerifier {
111110

112111
/// ProtocolGenesisVerifier to ProtocolGenesisVerificationKey
113112
pub fn to_verification_key(&self) -> ProtocolGenesisVerificationKey {
114-
self.verification_key
113+
self.verification_key.clone()
115114
}
116115

117116
/// Verifies the signature of a message

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

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -51,9 +51,6 @@ pub type ProtocolClosedKeyRegistration = ClosedKeyReg<D>;
5151
/// Alias of [MithrilStm:StmAggrVerificationKey](struct@mithril_stm::stm::StmAggrVerificationKey).
5252
pub type ProtocolAggregateVerificationKey = StmAggrVerificationKey<D>;
5353

54-
/// Alias of [Ed25519:PublicKey](https://docs.rs/ed25519-dalek/latest/ed25519_dalek/struct.PublicKey.html).
55-
pub type ProtocolGenesisVerificationKey = ed25519_dalek::PublicKey;
56-
5754
/// Alias of [Ed25519:SecretKey](https://docs.rs/ed25519-dalek/latest/ed25519_dalek/struct.SecretKey.html).
5855
pub type ProtocolGenesisSecretKey = ed25519_dalek::SecretKey;
5956

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

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,9 @@ pub type ProtocolGenesisSignature = ProtocolKey<ed25519_dalek::Signature>;
2626
/// Wrapper of [OpCert] to add serialization utilities.
2727
pub type ProtocolOpCert = ProtocolKey<OpCert>;
2828

29+
/// Alias of [Ed25519:PublicKey](https://docs.rs/ed25519-dalek/latest/ed25519_dalek/struct.PublicKey.html).
30+
pub type ProtocolGenesisVerificationKey = ProtocolKey<ed25519_dalek::PublicKey>;
31+
2932
impl ProtocolGenesisSignature {
3033
/// Create an instance from a bytes hex representation
3134
pub fn from_bytes_hex(hex_string: &str) -> StdResult<Self> {
@@ -70,6 +73,6 @@ impl ProtocolKeyCodec<ed25519_dalek::Signature> for ed25519_dalek::Signature {
7073
}
7174

7275
impl_codec_and_type_conversions_for_protocol_key!(
73-
json_hex_codec => StmVerificationKeyPoP, Sum6KesSig, StmSig, StmAggrSig<D>, OpCert
76+
json_hex_codec => StmVerificationKeyPoP, Sum6KesSig, StmSig, StmAggrSig<D>, OpCert, ed25519_dalek::PublicKey
7477
);
7578
impl_codec_and_type_conversions_for_protocol_key!(no_default_codec => ed25519_dalek::Signature);

0 commit comments

Comments
 (0)