From e56e6482b37401ba1eb0a0f722e40f6499b3b96e Mon Sep 17 00:00:00 2001 From: Ta-Ching Chen Date: Fri, 22 Sep 2017 14:27:42 -0500 Subject: [PATCH] Fix missing checksum from CLI uploads (issue #342) (#343) Archive upload from the CLI wasn't filling in the checksum field, causing validation to fail. --- fission/function.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/fission/function.go b/fission/function.go index d3ab5a2d..34489c58 100644 --- a/fission/function.go +++ b/fission/function.go @@ -18,7 +18,10 @@ package main import ( "context" + "crypto/sha256" + "encoding/hex" "fmt" + "io" "io/ioutil" "os" "strings" @@ -62,6 +65,22 @@ func createArchive(client *client.Client, fileName string) *fission.Archive { archive.Type = fission.ArchiveTypeUrl archive.URL = archiveUrl + + f, err := os.Open(fileName) + if err != nil { + checkErr(err, fmt.Sprintf("find file %v", fileName)) + } + defer f.Close() + + h := sha256.New() + if _, err := io.Copy(h, f); err != nil { + checkErr(err, fmt.Sprintf("calculate checksum for file %v", fileName)) + } + + archive.Checksum = fission.Checksum{ + Type: fission.ChecksumTypeSHA256, + Sum: hex.EncodeToString(h.Sum(nil)), + } } return &archive }