Documentation ¶
Index ¶
- Constants
- Variables
- func GetType(t byte) (string, error)
- func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, offset uint64, ...) error
- func ZstdWriterWithLevel(dest io.Writer, level int) (*zstd.Encoder, error)
- type FileMetadata
- type TOC
- type TarSplitData
- type ZstdChunkedFooterData
Constants ¶
View Source
const ( ChunkTypeData = "" ChunkTypeZeros = "zeros" )
View Source
const ( TypeReg = "reg" TypeChunk = "chunk" TypeLink = "hardlink" TypeChar = "char" TypeBlock = "block" TypeDir = "dir" TypeFifo = "fifo" TypeSymlink = "symlink" )
View Source
const ( ManifestChecksumKey = "io.github.containers.zstd-chunked.manifest-checksum" ManifestInfoKey = "io.github.containers.zstd-chunked.manifest-position" TarSplitInfoKey = "io.github.containers.zstd-chunked.tarsplit-position" TarSplitChecksumKey = "io.github.containers.zstd-chunked.tarsplit-checksum" // Deprecated: Use the TOC.TarSplitDigest field instead, this annotation is no longer read nor written. // ManifestTypeCRFS is a manifest file compatible with the CRFS TOC file. ManifestTypeCRFS = 1 // Newer versions of the image format might increase this value, so reject // any version that is not supported. FooterSizeSupported = 64 )
Variables ¶
View Source
var TarTypes = map[byte]string{ tar.TypeReg: TypeReg, tar.TypeRegA: TypeReg, tar.TypeLink: TypeLink, tar.TypeChar: TypeChar, tar.TypeBlock: TypeBlock, tar.TypeDir: TypeDir, tar.TypeFifo: TypeFifo, tar.TypeSymlink: TypeSymlink, }
View Source
var (
ZstdChunkedFrameMagic = []byte{0x47, 0x4e, 0x55, 0x6c, 0x49, 0x6e, 0x55, 0x78}
)
Functions ¶
func WriteZstdChunkedManifest ¶
func WriteZstdChunkedManifest(dest io.Writer, outMetadata map[string]string, offset uint64, tarSplitData *TarSplitData, metadata []FileMetadata, level int) error
Types ¶
type FileMetadata ¶
type FileMetadata struct { Type string `json:"type"` Name string `json:"name"` Linkname string `json:"linkName,omitempty"` Mode int64 `json:"mode,omitempty"` Size int64 `json:"size,omitempty"` UID int `json:"uid,omitempty"` GID int `json:"gid,omitempty"` ModTime *time.Time `json:"modtime,omitempty"` AccessTime *time.Time `json:"accesstime,omitempty"` ChangeTime *time.Time `json:"changetime,omitempty"` Devmajor int64 `json:"devMajor,omitempty"` Devminor int64 `json:"devMinor,omitempty"` Xattrs map[string]string `json:"xattrs,omitempty"` Digest string `json:"digest,omitempty"` Offset int64 `json:"offset,omitempty"` EndOffset int64 `json:"endOffset,omitempty"` ChunkSize int64 `json:"chunkSize,omitempty"` ChunkOffset int64 `json:"chunkOffset,omitempty"` ChunkDigest string `json:"chunkDigest,omitempty"` ChunkType string `json:"chunkType,omitempty"` }
type TOC ¶
type TOC struct { Version int `json:"version"` Entries []FileMetadata `json:"entries"` TarSplitDigest digest.Digest `json:"tarSplitDigest,omitempty"` }
type TarSplitData ¶ added in v1.47.0
type ZstdChunkedFooterData ¶ added in v1.50.0
type ZstdChunkedFooterData struct {}
ZstdChunkedFooterData contains all the data stored in the zstd:chunked footer. This footer exists to make the blobs self-describing, our implementation never reads it: Partial pull security hinges on the TOC digest, and that exists as a layer annotation; so we are relying on the layer annotations anyway, and doing so means we can avoid a round-trip to fetch this binary footer.
Click to show internal directories.
Click to hide internal directories.