mirror of
				https://github.com/torvalds/linux.git
				synced 2025-11-04 02:30:34 +02:00 
			
		
		
		
	Rationale: Reduces attack surface on kernel devs opening the links for MITM as HTTPS traffic is much harder to manipulate. Signed-off-by: Alexander A. Klimov <grandmaster@al2klimov.de> Signed-off-by: Andrew Morton <akpm@linux-foundation.org> Acked-by: Coly Li <colyli@suse.de> [crc64.c] Link: http://lkml.kernel.org/r/20200726112154.16510-1-grandmaster@al2klimov.de Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
		
			
				
	
	
		
			62 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			62 lines
		
	
	
	
		
			1.4 KiB
		
	
	
	
		
			C
		
	
	
	
	
	
/*
 | 
						|
 * Definitions for handling the .xz file format
 | 
						|
 *
 | 
						|
 * Author: Lasse Collin <lasse.collin@tukaani.org>
 | 
						|
 *
 | 
						|
 * This file has been put into the public domain.
 | 
						|
 * You can do whatever you want with this file.
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef XZ_STREAM_H
 | 
						|
#define XZ_STREAM_H
 | 
						|
 | 
						|
#if defined(__KERNEL__) && !XZ_INTERNAL_CRC32
 | 
						|
#	include <linux/crc32.h>
 | 
						|
#	undef crc32
 | 
						|
#	define xz_crc32(buf, size, crc) \
 | 
						|
		(~crc32_le(~(uint32_t)(crc), buf, size))
 | 
						|
#endif
 | 
						|
 | 
						|
/*
 | 
						|
 * See the .xz file format specification at
 | 
						|
 * https://tukaani.org/xz/xz-file-format.txt
 | 
						|
 * to understand the container format.
 | 
						|
 */
 | 
						|
 | 
						|
#define STREAM_HEADER_SIZE 12
 | 
						|
 | 
						|
#define HEADER_MAGIC "\3757zXZ"
 | 
						|
#define HEADER_MAGIC_SIZE 6
 | 
						|
 | 
						|
#define FOOTER_MAGIC "YZ"
 | 
						|
#define FOOTER_MAGIC_SIZE 2
 | 
						|
 | 
						|
/*
 | 
						|
 * Variable-length integer can hold a 63-bit unsigned integer or a special
 | 
						|
 * value indicating that the value is unknown.
 | 
						|
 *
 | 
						|
 * Experimental: vli_type can be defined to uint32_t to save a few bytes
 | 
						|
 * in code size (no effect on speed). Doing so limits the uncompressed and
 | 
						|
 * compressed size of the file to less than 256 MiB and may also weaken
 | 
						|
 * error detection slightly.
 | 
						|
 */
 | 
						|
typedef uint64_t vli_type;
 | 
						|
 | 
						|
#define VLI_MAX ((vli_type)-1 / 2)
 | 
						|
#define VLI_UNKNOWN ((vli_type)-1)
 | 
						|
 | 
						|
/* Maximum encoded size of a VLI */
 | 
						|
#define VLI_BYTES_MAX (sizeof(vli_type) * 8 / 7)
 | 
						|
 | 
						|
/* Integrity Check types */
 | 
						|
enum xz_check {
 | 
						|
	XZ_CHECK_NONE = 0,
 | 
						|
	XZ_CHECK_CRC32 = 1,
 | 
						|
	XZ_CHECK_CRC64 = 4,
 | 
						|
	XZ_CHECK_SHA256 = 10
 | 
						|
};
 | 
						|
 | 
						|
/* Maximum possible Check ID */
 | 
						|
#define XZ_CHECK_MAX 15
 | 
						|
 | 
						|
#endif
 |