mirror of
				https://github.com/smaeul/u-boot.git
				synced 2025-11-04 05:50:17 +00:00 
			
		
		
		
	After some header file cleanups to add missing include files, remove common.h from all files in the lib directory. This primarily means just dropping the line but in a few cases we need to add in other header files now. Reviewed-by: Simon Glass <sjg@chromium.org> Signed-off-by: Tom Rini <trini@konsulko.com>
		
			
				
	
	
		
			41 lines
		
	
	
		
			945 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			41 lines
		
	
	
		
			945 B
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0+
 | 
						|
/*
 | 
						|
 * Copyright (c) 2019, softathome
 | 
						|
 */
 | 
						|
 | 
						|
#ifndef USE_HOSTCC
 | 
						|
#include <malloc.h>
 | 
						|
#endif
 | 
						|
#include <image.h>
 | 
						|
#include <uboot_aes.h>
 | 
						|
 | 
						|
int image_aes_decrypt(struct image_cipher_info *info,
 | 
						|
		      const void *cipher, size_t cipher_len,
 | 
						|
		      void **data, size_t *size)
 | 
						|
{
 | 
						|
#ifndef USE_HOSTCC
 | 
						|
	unsigned char key_exp[AES256_EXPAND_KEY_LENGTH];
 | 
						|
	unsigned int aes_blocks, key_len = info->cipher->key_len;
 | 
						|
 | 
						|
	*data = malloc(cipher_len);
 | 
						|
	if (!*data) {
 | 
						|
		printf("Can't allocate memory to decrypt\n");
 | 
						|
		return -ENOMEM;
 | 
						|
	}
 | 
						|
	*size = info->size_unciphered;
 | 
						|
 | 
						|
	memcpy(&key_exp[0], info->key, key_len);
 | 
						|
 | 
						|
	/* First we expand the key. */
 | 
						|
	aes_expand_key((u8 *)info->key, key_len, key_exp);
 | 
						|
 | 
						|
	/* Calculate the number of AES blocks to encrypt. */
 | 
						|
	aes_blocks = DIV_ROUND_UP(cipher_len, AES_BLOCK_LENGTH);
 | 
						|
 | 
						|
	aes_cbc_decrypt_blocks(key_len, key_exp, (u8 *)info->iv,
 | 
						|
			       (u8 *)cipher, *data, aes_blocks);
 | 
						|
#endif
 | 
						|
 | 
						|
	return 0;
 | 
						|
}
 |