Skip to content

Commit

Permalink
fix: update sha generation logic
Browse files Browse the repository at this point in the history
Signed-off-by: Anish Ramasekar <anish.ramasekar@gmail.com>
  • Loading branch information
aramase committed Oct 25, 2024
1 parent b94492d commit 2a05a17
Showing 1 changed file with 17 additions and 18 deletions.
35 changes: 17 additions & 18 deletions pkg/util/secretutil/secret.go
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,6 @@ import (
"crypto/x509"
"encoding/pem"
"fmt"
"io"
"os"
"sort"
"strings"
Expand Down Expand Up @@ -217,23 +216,23 @@ func GetSecretData(secretObjData []*secretsstorev1.SecretObjectData, secretType

// GetSHAFromSecret gets SHA for the secret data
func GetSHAFromSecret(data map[string][]byte) (string, error) {
var values []string
for k, v := range data {
values = append(values, k+"="+string(v))
}
// sort the values to always obtain a deterministic SHA for
// same content in different order
sort.Strings(values)
return generateSHA(strings.Join(values, ";"))
}
h := sha256.New()

keys := make([]string, 0, len(data))
for k := range data {
keys = append(keys, k)
}
sort.Strings(keys)

// generateSHA generates SHA from string
func generateSHA(data string) (string, error) {
hasher := sha256.New()
_, err := io.WriteString(hasher, data)
if err != nil {
return "", err
for _, k := range keys {
b := sha256.Sum256([]byte(k))
if _, err := h.Write(b[:]); err != nil {
return "", err
}
if _, err := h.Write(data[k]); err != nil {
return "", err
}
}
sha := hasher.Sum(nil)
return fmt.Sprintf("%x", sha), nil

return fmt.Sprintf("%x", h.Sum(nil)), nil
}

0 comments on commit 2a05a17

Please sign in to comment.