Module: Omnizip::Formats::Xar::Constants
- Defined in:
- lib/omnizip/formats/xar/constants.rb
Overview
XAR format constants
XAR (eXtensible ARchive) format is used primarily on macOS for software distribution (pkg files, etc.)
Format structure:
- Header (28 bytes)
- Compressed TOC (Table of Contents, XML)
- TOC Checksum
- Heap (file data)
Constant Summary collapse
- MAGIC =
XAR magic number: "xar!" in big-endian
0x78617221- MAGIC_BYTES =
"xar!".b
- HEADER_SIZE =
Header size (bytes)
28- HEADER_SIZE_EX =
Extended header size (with custom checksum name)
28 + 36
- XAR_VERSION =
Format version
1- CKSUM_NONE =
Checksum algorithms
0- CKSUM_SHA1 =
1- CKSUM_MD5 =
2- CKSUM_OTHER =
Custom checksum (name in header)
3- CHECKSUM_NAMES =
Checksum names mapping
{ CKSUM_NONE => "none", CKSUM_SHA1 => "sha1", CKSUM_MD5 => "md5", }.freeze
- CHECKSUM_ALGORITHMS =
{ "none" => CKSUM_NONE, "sha1" => CKSUM_SHA1, "md5" => CKSUM_MD5, "sha224" => CKSUM_OTHER, "sha256" => CKSUM_OTHER, "sha384" => CKSUM_OTHER, "sha512" => CKSUM_OTHER, }.freeze
- CHECKSUM_SIZES =
Checksum sizes (bytes)
{ "md5" => 16, "sha1" => 20, "sha224" => 28, "sha256" => 32, "sha384" => 48, "sha512" => 64, }.freeze
- COMPRESSION_NONE =
Compression types (used in TOC XML)
"none"- COMPRESSION_GZIP =
"gzip"- COMPRESSION_BZIP2 =
"bzip2"- COMPRESSION_LZMA =
"lzma"- COMPRESSION_XZ =
"xz"- COMPRESSION_MIME_TYPES =
Compression MIME types (as appear in TOC)
{ COMPRESSION_NONE => "application/octet-stream", COMPRESSION_GZIP => "application/x-gzip", COMPRESSION_BZIP2 => "application/x-bzip2", COMPRESSION_LZMA => "application/x-lzma", COMPRESSION_XZ => "application/x-xz", }.freeze
- MIME_TYPE_TO_COMPRESSION =
{ "application/octet-stream" => COMPRESSION_NONE, "application/x-gzip" => COMPRESSION_GZIP, "application/x-bzip2" => COMPRESSION_BZIP2, "application/x-lzma" => COMPRESSION_LZMA, "application/x-xz" => COMPRESSION_XZ, }.freeze
- TYPE_FILE =
File types (in TOC XML)
"file"- TYPE_DIRECTORY =
"directory"- TYPE_SYMLINK =
"symlink"- TYPE_HARDLINK =
"hardlink"- TYPE_FIFO =
"fifo"- TYPE_BLOCK =
"block"- TYPE_CHAR =
"character"- TYPE_SOCKET =
"socket"- HEADER_MAGIC_OFFSET =
Header field offsets
0- HEADER_SIZE_OFFSET =
4- HEADER_VERSION_OFFSET =
6- HEADER_TOC_COMPRESSED_OFFSET =
8- HEADER_TOC_UNCOMPRESSED_OFFSET =
16- HEADER_CKSUM_ALG_OFFSET =
24- DEFAULT_COMPRESSION =
Default options for XAR archives
COMPRESSION_GZIP- DEFAULT_TOC_CHECKSUM =
"sha1"- DEFAULT_FILE_CHECKSUM =
"sha1"- DEFAULT_COMPRESSION_LEVEL =
6- TOC_XML_DECLARATION =
TOC XML namespaces
'<?xml version="1.0" encoding="UTF-8"?>'- MAX_PATH_LENGTH =
Maximum path length
1024