github.com/client9/goreleaser@v0.17.4-0.20170511023544-27e4b028926d/checksum/checksum.go (about) 1 // Package checksum contain algorithms to checksum files 2 package checksum 3 4 import ( 5 "crypto/sha256" 6 "encoding/hex" 7 "hash" 8 "io" 9 "os" 10 ) 11 12 // SHA256 sum of the given file 13 func SHA256(path string) (result string, err error) { 14 return calculate(sha256.New(), path) 15 } 16 17 func calculate(hash hash.Hash, path string) (result string, err error) { 18 file, err := os.Open(path) 19 if err != nil { 20 return 21 } 22 defer func() { _ = file.Close() }() 23 24 return doCalculate(hash, file) 25 } 26 27 func doCalculate(hash hash.Hash, file *os.File) (result string, err error) { 28 _, err = io.Copy(hash, file) 29 if err != nil { 30 return 31 } 32 33 result = hex.EncodeToString(hash.Sum(nil)) 34 return 35 }