From 90e73ac811fb00abab4d03b28b3988f907bc31f8 Mon Sep 17 00:00:00 2001 From: Victor Lyuboslavsky Date: Wed, 17 Jan 2024 12:56:42 -0600 Subject: [PATCH] Add sanity check that secret was actually saved before deleting secret file. (#16168) Add sanity check that secret was actually saved before deleting secret file, per Sharon's request. #13832 --- orbit/cmd/orbit/orbit.go | 26 +++++++++++++++++++++----- 1 file changed, 21 insertions(+), 5 deletions(-) diff --git a/orbit/cmd/orbit/orbit.go b/orbit/cmd/orbit/orbit.go index 76f1979f5e..0852c8ab4f 100644 --- a/orbit/cmd/orbit/orbit.go +++ b/orbit/cmd/orbit/orbit.go @@ -100,7 +100,7 @@ func main() { }, &cli.StringFlag{ Name: "enroll-secret-path", - Usage: "Path to file containing enroll secret", + Usage: "Path to file containing enroll secret. On macOS and Windows, this file will be deleted and secret will be stored in the system keystore", EnvVars: []string{"ORBIT_ENROLL_SECRET_PATH"}, }, &cli.StringFlag{ @@ -297,16 +297,32 @@ func main() { if err = keystore.AddSecret(secret); err != nil { log.Warn().Err(err).Msgf("failed to add enroll secret to %v", keystore.Name()) } else { - log.Info().Msgf("added enroll secret to keystore: %v", keystore.Name()) - deleteSecretPathIfExists(enrollSecretPath) + // Sanity check that the secret was added to the keystore. + checkSecret, err := keystore.GetSecret() + if err != nil { + log.Warn().Err(err).Msgf("failed to check that enroll secret was saved in %v", keystore.Name()) + } else if checkSecret != secret { + log.Warn().Msgf("enroll secret was not saved correctly in %v", keystore.Name()) + } else { + log.Info().Msgf("added enroll secret to keystore: %v", keystore.Name()) + deleteSecretPathIfExists(enrollSecretPath) + } } } else if secretFromKeystore != secret { // Keystore secret found, but needs to be updated. if err = keystore.UpdateSecret(secret); err != nil { log.Warn().Err(err).Msgf("failed to update enroll secret in %v", keystore.Name()) } else { - log.Info().Msgf("updated enroll secret in keystore: %v", keystore.Name()) - deleteSecretPathIfExists(enrollSecretPath) + // Sanity check that the secret was updated in the keystore. + checkSecret, err := keystore.GetSecret() + if err != nil { + log.Warn().Err(err).Msgf("failed to check that enroll secret was updated in %v", keystore.Name()) + } else if checkSecret != secret { + log.Warn().Msgf("enroll secret was not updated correctly in %v", keystore.Name()) + } else { + log.Info().Msgf("updated enroll secret in keystore: %v", keystore.Name()) + deleteSecretPathIfExists(enrollSecretPath) + } } } else { // Keystore secret found, and it matches the secret from the file.