Introduction
The manifest of an OVF package is a text file with the extension
.mf and the same base name as the .ovf descriptor, beside it. It lists the digest
of each file of the package, so that a consumer can check that nothing changed. The DMTF's Open
Virtualization Format specification (DSP0243 2.1.1, clause 5.1, read in full for this page) defines it.
The extension is also used by other things, notably Java's META-INF/MANIFEST.MF, which is a
different format; the explorer takes a .mf file for an OVF manifest only if every line has
the form below.
Structure
The grammar, in the specification's ABNF (rules separated by | are choices; characters are
case-sensitive; blanks allowed between elements):
manifest_file = *( file_digest )
file_digest = algorithm "(" file_name ")" "=" sp digest nl
algorithm = "SHA1" | "SHA256"
digest = *( hex-digit ) ; hex-digit = "0" … "9" | "a" … "f"
sp = %x20
nl = %x0A
SHA256(package.ovf)= 9902cc5ec4f4a00cabbff7b60d039263587ab430d5fbdbc5cd5e8707391c90a4
SHA256(vmdisk.vmdk)= aab66c4d70e17cec2236a651a3fc618cafc5ec6424122904dc0b9c286fce40c2
Rules
- Packages written to this version of the specification shall use SHA256; SHA1 is also allowed by the grammar.
- The file shall have the extension
.mfand the same base name as the.ovf, and be a sibling of it. - It shall contain a digest for every distinct file in the descriptor's References element, and for no other file. The manifest and the certificate are never listed in References, so the digest of the descriptor itself is listed (the example above does) but the manifest is not.
- The file name in each entry matches the
ovf:hrefof its File element; for a file split into chunks, the chunk file names (href.000000000, …) are used and there is an entry for each chunk, and there may also be an entry for the whole file, which is verified too. - A consumer should verify the digests by computing them and comparing; a digest has 40 hexadecimal digits for SHA1 and 64 for SHA256.
- The manifest can be signed: the certificate holds the signed digest of the manifest.
The viewer lists the digests and reports lines that are not of the form, a digest of the wrong length, a line ending in CR LF, and a file listed twice. It does not compute the digests.
Not described
Known, not yet covered
- Viewer: the digests are shown but not verified against the package's files (that needs the files, which a manifest opened alone does not have, and a hash of each one).
Links
Software
- OVF Tool – VMware's command-line tool that makes and checks OVF and OVA packages (Windows, macOS, Linux)
Reference
- Open Virtualization Format – the DMTF's page for DSP0243