go.mondoo.com/cnquery@v0.0.0-20231005093811-59568235f6ea/providers/os/resources/discovery/docker_engine/platform.go (about)

     1  // Copyright (c) Mondoo, Inc.
     2  // SPDX-License-Identifier: BUSL-1.1
     3  
     4  package docker_engine
     5  
     6  import (
     7  	"github.com/google/go-containerregistry/pkg/v1/tarball"
     8  	"go.mondoo.com/cnquery/providers/os/fsutil"
     9  	"go.mondoo.com/cnquery/providers/os/id/containerid"
    10  )
    11  
    12  func platformID(filename string) (string, error) {
    13  	var identifier string
    14  	// try to determine if the tar is a container image
    15  	img, iErr := tarball.ImageFromPath(filename, nil)
    16  	if iErr == nil {
    17  		hash, err := img.Digest()
    18  		if err != nil {
    19  			return "", err
    20  		}
    21  		identifier = containerid.MondooContainerImageID(hash.String())
    22  	} else {
    23  		hash, err := fsutil.LocalFileSha256(filename)
    24  		if err != nil {
    25  			return "", err
    26  		}
    27  		identifier = "//platformid.api.mondoo.app/runtime/tar/hash/" + hash
    28  	}
    29  	return identifier, nil
    30  }