diff --git a/src/config.rs b/src/config.rs index 880fd83..9be8169 100644 --- a/src/config.rs +++ b/src/config.rs @@ -58,25 +58,22 @@ impl InstanceMeasurement { pub fn with_current_mrsigner(self) -> Result { let quote = Self::generate_static_empty_quote()?; - let mrsigner_from_quote = quote.mrsigner().into(); - if self.mrsigners.is_none() { + if let Some(mrsigners) = self.mrsigners { + if mrsigners.contains(&mrsigner_from_quote) { + // already contains the mrsigner + Ok(self) + } else { + let mut mrsigners = self.mrsigners.clone().unwrap(); + mrsigners.push(mrsigner_from_quote); + Ok(self.with_mrsigners(mrsigners)) + } + } else { Ok(Self { mrsigners: Some(vec![mrsigner_from_quote]), ..self }) - } else if !self - .mrsigners - .as_ref() - .unwrap() - .contains(&mrsigner_from_quote) - { - let mut mrsigners = self.mrsigners.clone().unwrap(); - mrsigners.push(mrsigner_from_quote); - Ok(self.with_mrsigners(mrsigners)) - } else { - Ok(self) } } @@ -84,22 +81,20 @@ impl InstanceMeasurement { let quote = Self::generate_static_empty_quote()?; let mrenclave_from_quote = quote.mrenclave().into(); - if self.mrenclaves.is_none() { + if let Some(mrenclaves) = self.mrenclaves { + if mrenclaves.contains(&mrenclave_from_quote) { + // already contains the mrenclave + Ok(self) + } else { + let mut mrenclaves = self.mrenclaves.clone().unwrap(); + mrenclaves.push(mrenclave_from_quote); + Ok(self.with_mrenclaves(mrenclaves)) + } + } else { Ok(Self { mrenclaves: Some(vec![mrenclave_from_quote]), ..self }) - } else if !self - .mrenclaves - .as_ref() - .unwrap() - .contains(&mrenclave_from_quote) - { - let mut mrenclaves = self.mrenclaves.clone().unwrap(); - mrenclaves.push(mrenclave_from_quote); - Ok(self.with_mrsigners(mrenclaves)) - } else { - Ok(self) } }