Commit db67e70b by ying-jeanne Committed by GitHub

use sha256 checksum instead of md5 (#30018)

* use sha256 checksum instead of md5

* Chore: Rewrite ldap login test to standard library (#29998)

* Chore: Rewrite ldap login test to standard library

* Preserve original ldap enabled setting after test

* Chore: Rewrite models alert test to standard library (#30021)

* Chore: Rewrite models dashboard acl test to standard library (#30022)

* Chore: Rewrite models dashboards test to standard library (#30023)

* Chore: Rewrite login auth test to standard library (#29985)

* Chore: Rewrite login auth test to standard library

* Use assert.Empty when empty string expected

* Chore: Rewrite brute force login protection test to standard library (#29986)

* Update pkg/cmd/grafana-cli/services/api_client.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Update pkg/cmd/grafana-cli/services/api_client.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* use sha256 checksum instead of md5

* Update pkg/cmd/grafana-cli/services/api_client.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* Update pkg/cmd/grafana-cli/services/api_client.go

Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>

* grafana-cli: Remove MD5

Signed-off-by: Arve Knudsen <arve.knudsen@gmail.com>

Co-authored-by: Emil Hessman <emil@hessman.se>
Co-authored-by: Arve Knudsen <arve.knudsen@gmail.com>
parent 1b535581
...@@ -97,7 +97,7 @@ func InstallPlugin(pluginName, version string, c utils.CommandLine, client utils ...@@ -97,7 +97,7 @@ func InstallPlugin(pluginName, version string, c utils.CommandLine, client utils
// Plugins which are downloaded just as sourcecode zipball from github do not have checksum // Plugins which are downloaded just as sourcecode zipball from github do not have checksum
if v.Arch != nil { if v.Arch != nil {
checksum = v.Arch[osAndArchString()].Md5 checksum = v.Arch[osAndArchString()].SHA256
} }
} }
......
...@@ -108,7 +108,7 @@ func TestInstallPluginCommand(t *testing.T) { ...@@ -108,7 +108,7 @@ func TestInstallPluginCommand(t *testing.T) {
Version: "1.0.0", Version: "1.0.0",
Arch: map[string]models.ArchMeta{ Arch: map[string]models.ArchMeta{
fmt.Sprintf("%s-%s", runtime.GOOS, runtime.GOARCH): { fmt.Sprintf("%s-%s", runtime.GOOS, runtime.GOARCH): {
Md5: "test", SHA256: "test",
}, },
}, },
}, },
...@@ -252,7 +252,7 @@ func makePluginWithVersions(versions ...versionArg) *models.Plugin { ...@@ -252,7 +252,7 @@ func makePluginWithVersions(versions ...versionArg) *models.Plugin {
ver.Arch = map[string]models.ArchMeta{} ver.Arch = map[string]models.ArchMeta{}
for _, arch := range version.Arch { for _, arch := range version.Arch {
ver.Arch[arch] = models.ArchMeta{ ver.Arch[arch] = models.ArchMeta{
Md5: fmt.Sprintf("md5_%s", arch), SHA256: fmt.Sprintf("sha256_%s", arch),
} }
} }
} }
......
...@@ -33,12 +33,12 @@ type Version struct { ...@@ -33,12 +33,12 @@ type Version struct {
Commit string `json:"commit"` Commit string `json:"commit"`
URL string `json:"url"` URL string `json:"url"`
Version string `json:"version"` Version string `json:"version"`
// os-arch to md5 checksum to check when downloading the file // Arch contains architecture metadata.
Arch map[string]ArchMeta `json:"arch"` Arch map[string]ArchMeta `json:"arch"`
} }
type ArchMeta struct { type ArchMeta struct {
Md5 string `json:"md5"` SHA256 string `json:"sha256"`
} }
type PluginRepo struct { type PluginRepo struct {
......
...@@ -2,7 +2,7 @@ package services ...@@ -2,7 +2,7 @@ package services
import ( import (
"bufio" "bufio"
"crypto/md5" "crypto/sha256"
"encoding/json" "encoding/json"
"errors" "errors"
"fmt" "fmt"
...@@ -101,15 +101,15 @@ func (client *GrafanaComClient) DownloadFile(pluginName string, tmpFile *os.File ...@@ -101,15 +101,15 @@ func (client *GrafanaComClient) DownloadFile(pluginName string, tmpFile *os.File
}() }()
w := bufio.NewWriter(tmpFile) w := bufio.NewWriter(tmpFile)
h := md5.New() h := sha256.New()
if _, err = io.Copy(w, io.TeeReader(bodyReader, h)); err != nil { if _, err = io.Copy(w, io.TeeReader(bodyReader, h)); err != nil {
return errutil.Wrap("Failed to compute MD5 checksum", err) return errutil.Wrap("failed to compute SHA256 checksum", err)
} }
if err := w.Flush(); err != nil { if err := w.Flush(); err != nil {
return fmt.Errorf("failed to write to %q: %w", tmpFile.Name(), err) return fmt.Errorf("failed to write to %q: %w", tmpFile.Name(), err)
} }
if len(checksum) > 0 && checksum != fmt.Sprintf("%x", h.Sum(nil)) { if len(checksum) > 0 && checksum != fmt.Sprintf("%x", h.Sum(nil)) {
return fmt.Errorf("expected MD5 checksum does not match the downloaded archive - please contact security@grafana.com") return fmt.Errorf("expected SHA256 checksum does not match the downloaded archive - please contact security@grafana.com")
} }
return nil return nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment