Update create_update_message

This commit is contained in:
Sosthene 2024-12-17 23:53:35 +01:00
parent cc8d64f6ce
commit 76ce2c0672

View File

@ -1303,13 +1303,13 @@ pub fn create_update_message(
let mut all_members: HashMap<Member, HashSet<String>> = HashMap::new(); let mut all_members: HashMap<Member, HashSet<String>> = HashMap::new();
let shared_secrets = lock_shared_secrets()?; let shared_secrets = lock_shared_secrets()?;
for (name, role) in roles { for (name, role) in &roles {
let fields: Vec<String> = role let fields: Vec<String> = role
.validation_rules .validation_rules
.iter() .iter()
.flat_map(|rule| rule.fields.clone()) .flat_map(|rule| rule.fields.clone())
.collect(); .collect();
for member in role.members { for member in &role.members {
// Check that we have a shared_secret with all members // Check that we have a shared_secret with all members
if let Some(no_secret_address) = member.get_addresses().iter() if let Some(no_secret_address) = member.get_addresses().iter()
.find(|a| shared_secrets.get_secret_for_address(a.as_str().try_into().unwrap()).is_none()) .find(|a| shared_secrets.get_secret_for_address(a.as_str().try_into().unwrap()).is_none())
@ -1330,15 +1330,10 @@ pub fn create_update_message(
let sender: Member = local_device let sender: Member = local_device
.to_member(); .to_member();
// To allow the recipient to identify the pcd that contains only encrypted values, we compute the merkle tree of the encrypted pcd
// we then put the root in the payload of the prd update
let encrypted_pcd_hash = update_state.encrypted_pcd.hash_all_fields(OutPoint::null())?;
let encrypted_pcd_merkle_root = <Value as Pcd>::create_merkle_tree(&Value::Object(encrypted_pcd_hash))?.root().unwrap();
let full_prd = Prd::new_update( let full_prd = Prd::new_update(
outpoint, outpoint,
serde_json::to_string(&sender)?, serde_json::to_string(&sender)?,
serialize(&encrypted_pcd_merkle_root).to_lower_hex_string(), roles,
update_state.keys.clone(), update_state.keys.clone(),
update_state.pcd_commitment.clone(), update_state.pcd_commitment.clone(),
); );
@ -1368,14 +1363,7 @@ pub fn create_update_message(
return Err(ApiError::new("Empty ciphers list".to_owned())); return Err(ApiError::new("Empty ciphers list".to_owned()));
} }
let updated_process = UpdatedProcess {
commitment_tx: outpoint,
current_process: process.clone(),
..Default::default()
};
Ok(ApiReturn { Ok(ApiReturn {
updated_process: Some(updated_process),
ciphers_to_send: ciphers, ciphers_to_send: ciphers,
..Default::default() ..Default::default()
}) })