func getRepoDigest()

in builder/digest_docker.go [76:97]


func getRepoDigest(jsonContent string, reference *image.Reference) string {
	prefix := reference.Repository + "@"
	// If the reference is in DockerHub library image format (eg, nginx:latest, library/node:16), we have to remove "/library" fix - otherwise
	// we'll fail to query the digest, since image names aren't prefixed with "library/"
	if reference.Registry == DockerHubRegistry && !strings.HasPrefix(reference.Reference, DockerHubRegistry) {
		if strings.HasPrefix(prefix, "library/") {
			prefix = prefix[8:]
		}
	} else if len(reference.Registry) > 0 {
		prefix = reference.Registry + "/" + prefix
	}
	var digestList []string
	if err := json.Unmarshal([]byte(jsonContent), &digestList); err != nil {
		log.Printf("Error deserializing %s to json, error: %v\n", jsonContent, err)
	}
	for _, digest := range digestList {
		if strings.HasPrefix(digest, prefix) {
			return digest[len(prefix):]
		}
	}
	return ""
}