⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 luks.c

📁 最新的busybox源码
💻 C
字号:
/* * volume_id - reads filesystem label and uuid * * Copyright (C) 2005 W. Michael Petullo <mike@flyn.org> * *	This library is free software; you can redistribute it and/or *	modify it under the terms of the GNU Lesser General Public *	License as published by the Free Software Foundation; either *	version 2.1 of the License, or (at your option) any later version. * *	This library is distributed in the hope that it will be useful, *	but WITHOUT ANY WARRANTY; without even the implied warranty of *	MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU *	Lesser General Public License for more details. * *	You should have received a copy of the GNU Lesser General Public *	License along with this library; if not, write to the Free Software *	Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */#include "volume_id_internal.h"#define LUKS_MAGIC_L             6#define UUID_STRING_L           40#define LUKS_CIPHERNAME_L       32#define LUKS_CIPHERMODE_L       32#define LUKS_HASHSPEC_L         32#define LUKS_DIGESTSIZE         20#define LUKS_SALTSIZE           32#define LUKS_NUMKEYS             8static const uint8_t LUKS_MAGIC[] = { 'L','U','K','S', 0xba, 0xbe };struct luks_phdr {	uint8_t		magic[LUKS_MAGIC_L];	uint16_t	version;	uint8_t		cipherName[LUKS_CIPHERNAME_L];	uint8_t		cipherMode[LUKS_CIPHERMODE_L];	uint8_t		hashSpec[LUKS_HASHSPEC_L];	uint32_t	payloadOffset;	uint32_t	keyBytes;	uint8_t		mkDigest[LUKS_DIGESTSIZE];	uint8_t		mkDigestSalt[LUKS_SALTSIZE];	uint32_t	mkDigestIterations;	uint8_t		uuid[UUID_STRING_L];	struct {		uint32_t	active;		uint32_t	passwordIterations;		uint8_t		passwordSalt[LUKS_SALTSIZE];		uint32_t	keyMaterialOffset;		uint32_t	stripes;	} keyblock[LUKS_NUMKEYS];};enum {	EXPECTED_SIZE_luks_phdr = 0		+ 1 * LUKS_MAGIC_L		+ 2		+ 1 * LUKS_CIPHERNAME_L		+ 1 * LUKS_CIPHERMODE_L		+ 1 * LUKS_HASHSPEC_L		+ 4		+ 4		+ 1 * LUKS_DIGESTSIZE		+ 1 * LUKS_SALTSIZE		+ 4		+ 1 * UUID_STRING_L		+ LUKS_NUMKEYS * (0		  + 4		  + 4		  + 1 * LUKS_SALTSIZE		  + 4		  + 4		  )};struct BUG_bad_size_luks_phdr {	char BUG_bad_size_luks_phdr[		sizeof(struct luks_phdr) == EXPECTED_SIZE_luks_phdr ?		1 : -1];};int volume_id_probe_luks(struct volume_id *id, uint64_t off){	struct luks_phdr *header;	header = volume_id_get_buffer(id, off, sizeof(*header));	if (header == NULL)		return -1;	if (memcmp(header->magic, LUKS_MAGIC, LUKS_MAGIC_L))		return -1;//	volume_id_set_usage(id, VOLUME_ID_CRYPTO);	volume_id_set_uuid(id, header->uuid, UUID_DCE_STRING);//	id->type = "crypto_LUKS";	return 0;}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -