xref: /aosp_15_r20/external/arm-trusted-firmware/include/tools_share/firmware_encrypted.h (revision 54fd6939e177f8ff529b10183254802c76df6d08)
1*54fd6939SJiyong Park /*
2*54fd6939SJiyong Park  * Copyright (c) 2020, Linaro Limited. All rights reserved.
3*54fd6939SJiyong Park  * Author: Sumit Garg <[email protected]>
4*54fd6939SJiyong Park  *
5*54fd6939SJiyong Park  * SPDX-License-Identifier: BSD-3-Clause
6*54fd6939SJiyong Park  */
7*54fd6939SJiyong Park 
8*54fd6939SJiyong Park #ifndef FIRMWARE_ENCRYPTED_H
9*54fd6939SJiyong Park #define FIRMWARE_ENCRYPTED_H
10*54fd6939SJiyong Park 
11*54fd6939SJiyong Park #include <stdint.h>
12*54fd6939SJiyong Park 
13*54fd6939SJiyong Park /* This is used as a signature to validate the encryption header */
14*54fd6939SJiyong Park #define ENC_HEADER_MAGIC		0xAA640001U
15*54fd6939SJiyong Park 
16*54fd6939SJiyong Park /* Firmware encryption status flag mask */
17*54fd6939SJiyong Park #define FW_ENC_STATUS_FLAG_MASK		0x1
18*54fd6939SJiyong Park 
19*54fd6939SJiyong Park /*
20*54fd6939SJiyong Park  * SSK: Secret Symmetric Key
21*54fd6939SJiyong Park  * BSSK: Binding Secret Symmetric Key
22*54fd6939SJiyong Park  */
23*54fd6939SJiyong Park enum fw_enc_status_t {
24*54fd6939SJiyong Park 	FW_ENC_WITH_SSK = 0,
25*54fd6939SJiyong Park 	FW_ENC_WITH_BSSK = 1,
26*54fd6939SJiyong Park };
27*54fd6939SJiyong Park 
28*54fd6939SJiyong Park #define ENC_MAX_IV_SIZE			16U
29*54fd6939SJiyong Park #define ENC_MAX_TAG_SIZE		16U
30*54fd6939SJiyong Park #define ENC_MAX_KEY_SIZE		32U
31*54fd6939SJiyong Park 
32*54fd6939SJiyong Park struct fw_enc_hdr {
33*54fd6939SJiyong Park 	uint32_t magic;
34*54fd6939SJiyong Park 	uint16_t dec_algo;
35*54fd6939SJiyong Park 	uint16_t flags;
36*54fd6939SJiyong Park 	uint16_t iv_len;
37*54fd6939SJiyong Park 	uint16_t tag_len;
38*54fd6939SJiyong Park 	uint8_t iv[ENC_MAX_IV_SIZE];
39*54fd6939SJiyong Park 	uint8_t tag[ENC_MAX_TAG_SIZE];
40*54fd6939SJiyong Park };
41*54fd6939SJiyong Park 
42*54fd6939SJiyong Park #endif /* FIRMWARE_ENCRYPTED_H */
43