// +build windows package image import ( "crypto/sha512" "fmt" "github.com/docker/distribution/digest" "github.com/docker/docker/layer" ) // RootFS describes images root filesystem // This is currently a placeholder that only supports layers. In the future // this can be made into a interface that supports different implementations. type RootFS struct { Type string `json:"type"` DiffIDs []layer.DiffID `json:"diff_ids,omitempty"` BaseLayer string `json:"base_layer,omitempty"` } // BaseLayerID returns the 64 byte hex ID for the baselayer name. func (r *RootFS) BaseLayerID() string { baseID := sha512.Sum384([]byte(r.BaseLayer)) return fmt.Sprintf("%x", baseID[:32]) } // ChainID returns the ChainID for the top layer in RootFS. func (r *RootFS) ChainID() layer.ChainID { baseDiffID := digest.FromBytes([]byte(r.BaseLayerID())) return layer.CreateChainID(append([]layer.DiffID{layer.DiffID(baseDiffID)}, r.DiffIDs...)) } // NewRootFS returns empty RootFS struct func NewRootFS() *RootFS { return &RootFS{Type: "layers+base"} }