// 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;
}
