github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/pkg/scanners/azure/functions/guid.go (about) 1 package functions 2 3 import ( 4 "crypto/sha256" 5 "strings" 6 7 "github.com/google/uuid" 8 ) 9 10 func Guid(args ...interface{}) interface{} { 11 12 if len(args) == 0 { 13 return "" 14 } 15 16 hashParts := make([]string, len(args)) 17 for i, str := range args { 18 hashParts[i] = str.(string) 19 } 20 21 guid, err := generateSeededGUID(hashParts...) 22 if err != nil { 23 return "" 24 } 25 26 return guid.String() 27 } 28 29 func generateSeededGUID(seedParts ...string) (uuid.UUID, error) { 30 var id uuid.UUID 31 32 stringToHash := strings.Join(seedParts, "") 33 34 hsha2 := sha256.Sum256([]byte(stringToHash)) 35 36 copy(id[:], hsha2[:16]) 37 id[6] = (id[6] & 0x0f) | 0x40 // Version 4 38 id[8] = (id[8] & 0x3f) | 0x80 // Variant is 10 39 return id, nil 40 } 41 42 func NewGuid(args ...interface{}) interface{} { 43 return uuid.NewString() 44 }