difftreelog
fix secret encoding handling
in: trunk
2 files changed
cmds/fleet/src/host.rsdiffbeforeafterboth130 .await130 .await131 .context("failed to call remote host for decrypt")?;131 .context("failed to call remote host for decrypt")?;132 let data: SecretData = encoded.parse().map_err(|e| anyhow!("{e}"))?;132 let data: SecretData = encoded.parse().map_err(|e| anyhow!("{e}"))?;133 ensure!(!data.encrypted, "didn't decrypted secret");133 ensure!(!data.encrypted, "secret came out encrypted");134 Ok(data.data)134 Ok(data.data)135 }135 }136 pub async fn reencrypt(&self, data: SecretData, targets: Vec<String>) -> Result<SecretData> {136 pub async fn reencrypt(&self, data: SecretData, targets: Vec<String>) -> Result<SecretData> {147 .await147 .await148 .context("failed to call remote host for decrypt")?;148 .context("failed to call remote host for decrypt")?;149 let data: SecretData = encoded.parse().map_err(|e| anyhow!("{e}"))?;149 let data: SecretData = encoded.parse().map_err(|e| anyhow!("{e}"))?;150 ensure!(!data.encrypted, "didn't decrypted secret");150 ensure!(data.encrypted, "secret came out not encrypted");151 Ok(data)151 Ok(data)152 }152 }153 /// Returns path for futureproofing, as path might change i.e on conversion to CA153 /// Returns path for futureproofing, as path might change i.e on conversion to CAnixos/secrets.nixdiffbeforeafterboth5 ...5 ...6}:6}:7with lib; let7with lib; let8 inherit (lib.strings) hasPrefix stripPrefix;8 inherit (lib.strings) hasPrefix removePrefix;9 plaintextPrefix = "<PLAINTEXT>";9 plaintextPrefix = "<PLAINTEXT>";10 plaintextNewlinePrefix = "<PLAINTEXT-NL>";10 plaintextNewlinePrefix = "<PLAINTEXT-NL>";111140 hash = mkOptionDefault (builtins.hashString "sha1" config.raw);40 hash = mkOptionDefault (builtins.hashString "sha1" config.raw);41 data = mkOptionDefault (41 data = mkOptionDefault (42 if hasPrefix plaintextPrefix config.raw42 if hasPrefix plaintextPrefix config.raw43 then stripPrefix plaintextPrefix config.raw43 then removePrefix plaintextPrefix config.raw44 else if hasPrefix plaintextNewlinePrefix config.raw44 else if hasPrefix plaintextNewlinePrefix config.raw45 then stripPrefix plaintextNewlinePrefix config.raw45 then removePrefix plaintextNewlinePrefix config.raw46 else throw "secret.part.data attribute only works for public plaintext secret parts, got ${config.raw}"46 else throw "secret.part.data attribute only works for public plaintext secret parts, got ${config.raw}"47 );47 );48 path = mkOptionDefault "/run/secrets/${secretName}/${config.hash}-${partName}";48 path = mkOptionDefault "/run/secrets/${secretName}/${config.hash}-${partName}";