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