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