From c346404d6214a33df7db90e6463bb4d4e12d13ae Mon Sep 17 00:00:00 2001 From: Daniel Date: Mon, 11 Jul 2022 17:02:46 +0200 Subject: [PATCH] Add signature to existing file by default and remove other jess sigs --- filesig/helpers.go | 23 ++++++++++++++++++----- 1 file changed, 18 insertions(+), 5 deletions(-) diff --git a/filesig/helpers.go b/filesig/helpers.go index 188ff21..0037a9c 100644 --- a/filesig/helpers.go +++ b/filesig/helpers.go @@ -51,14 +51,27 @@ func SignFile(dataFilePath, signatureFilePath string, metaData map[string]string return nil, fmt.Errorf("failed to sign file: %w", err) } - // Make signature section for saving to disk. - signatureSection, err := MakeSigFileSection(signature) - if err != nil { - return nil, fmt.Errorf("failed to format signature for file: %w", err) + sigFileData, err := ioutil.ReadFile(signatureFilePath) + var newSigFileData []byte + switch { + case err == nil: + // Add signature to existing file. + newSigFileData, err = AddToSigFile(signature, sigFileData, true) + if err != nil { + return nil, fmt.Errorf("failed to add signature to file: %w", err) + } + case os.IsNotExist(err): + // Make signature section for saving to disk. + newSigFileData, err = MakeSigFileSection(signature) + if err != nil { + return nil, fmt.Errorf("failed to format signature for file: %w", err) + } + default: + return nil, fmt.Errorf("failed to open existing signature file: %w", err) } // Write the signature to file. - if err := ioutil.WriteFile(signatureFilePath, signatureSection, 0o0644); err != nil { //nolint:gosec + if err := ioutil.WriteFile(signatureFilePath, newSigFileData, 0o0644); err != nil { //nolint:gosec return nil, fmt.Errorf("failed to write signature to file: %w", err) }