From ab51b9cf32f0bf83776617d8c81113eb51285d8c Mon Sep 17 00:00:00 2001 From: folex <0xdxdy@gmail.com> Date: Wed, 22 Feb 2023 18:41:49 +0700 Subject: [PATCH] fix(keypairs): load persisted keypair in a backward-compatible way (#1481) * fix(keypair): load remote_peer_id to deal_creator, generate deal_id on the fly * chore(lints): fix clippy --- crates/builtins-deployer/src/builtins_deployer.rs | 2 +- crates/key-manager/src/persistence.rs | 9 ++++++++- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/crates/builtins-deployer/src/builtins_deployer.rs b/crates/builtins-deployer/src/builtins_deployer.rs index 7fd2bdb133..5cfdb7b68c 100644 --- a/crates/builtins-deployer/src/builtins_deployer.rs +++ b/crates/builtins-deployer/src/builtins_deployer.rs @@ -185,7 +185,7 @@ impl BuiltinsDeployer { let result = self .send_particle(script, hashmap! {"name".to_string() => json!(name)}) - .wrap_err(format!("remove_service call failed, service {}", name))?; + .wrap_err(format!("remove_service call failed, service {name}"))?; assert_ok(result, "remove_service call failed") } diff --git a/crates/key-manager/src/persistence.rs b/crates/key-manager/src/persistence.rs index ef45c50747..8f6d718210 100644 --- a/crates/key-manager/src/persistence.rs +++ b/crates/key-manager/src/persistence.rs @@ -21,6 +21,7 @@ use crate::error::KeyManagerError::{ CannotExtractRSASecretKey, CreateKeypairsDir, DeserializePersistedKeypair, ReadPersistedKeypair, SerializePersistedKeypair, WriteErrorPersistedKeypair, }; +use crate::KeyManager; use fluence_keypair::KeyPair; use fluence_libp2p::peerid_serializer; use libp2p::PeerId; @@ -30,9 +31,11 @@ use std::path::Path; #[derive(Serialize, Deserialize, Debug, Clone)] pub struct PersistedKeypair { #[serde(with = "peerid_serializer")] + #[serde(alias = "remote_peer_id")] pub deal_creator: PeerId, pub private_key_bytes: Vec, pub key_format: String, + #[serde(default)] pub deal_id: String, } @@ -100,12 +103,16 @@ pub fn load_persisted_keypairs( err, path: file.to_path_buf(), })?; - let keypair = + let mut keypair: PersistedKeypair = toml::from_slice(bytes.as_slice()).map_err(|err| DeserializePersistedKeypair { err, path: file.to_path_buf(), })?; + if keypair.deal_id.is_empty() { + keypair.deal_id = KeyManager::generate_deal_id(keypair.deal_creator); + } + Ok(keypair) }) .collect()