github.com/winebarrel/terraform-provider-lambdazip@v0.6.1-0.20240313233639-361839f8c5c5/internal/hash/sha.go (about)

     1  package hash
     2  
     3  import (
     4  	"crypto/sha256"
     5  	"encoding/base64"
     6  	"encoding/hex"
     7  	"os"
     8  )
     9  
    10  func Base64Sha256(file string) (string, error) {
    11  	buf, err := os.ReadFile(file)
    12  
    13  	if err != nil {
    14  		return "", err
    15  	}
    16  
    17  	sha256Sum := sha256.Sum256(buf)
    18  	b64 := base64.StdEncoding.EncodeToString(sha256Sum[:])
    19  
    20  	return b64, nil
    21  }
    22  
    23  func Sha256Map(files []string) (map[string]string, error) {
    24  	m := map[string]string{}
    25  
    26  	for _, f := range files {
    27  		buf, err := os.ReadFile(f)
    28  
    29  		if err != nil {
    30  			return nil, err
    31  		}
    32  
    33  		sha256Sum := sha256.Sum256(buf)
    34  		h := hex.EncodeToString(sha256Sum[:])
    35  		m[f] = h
    36  	}
    37  
    38  	return m, nil
    39  }