Siew Chin Lim | 2492d59 | 2021-03-01 20:04:11 +0800 | [diff] [blame] | 1 | /* SPDX-License-Identifier: GPL-2.0 |
| 2 | * |
| 3 | * Copyright (C) 2020 Intel Corporation <www.intel.com> |
| 4 | * |
| 5 | */ |
| 6 | |
| 7 | #ifndef _SECURE_VAB_H_ |
| 8 | #define _SECURE_VAB_H_ |
| 9 | |
| 10 | #include <linux/sizes.h> |
| 11 | #include <linux/stddef.h> |
| 12 | #include <u-boot/sha512.h> |
| 13 | |
| 14 | #define VAB_DATA_SZ 64 |
| 15 | |
| 16 | #define SDM_CERT_MAGIC_NUM 0x25D04E7F |
| 17 | #define FCS_HPS_VAB_MAGIC_NUM 0xD0564142 |
| 18 | |
| 19 | #define MAX_CERT_SIZE (SZ_4K) |
| 20 | |
| 21 | /* |
| 22 | * struct fcs_hps_vab_certificate_data |
| 23 | * @vab_cert_magic_num: VAB Certificate Magic Word (0xD0564142) |
| 24 | * @flags: TBD |
| 25 | * @fcs_data: Data words being certificate signed. |
| 26 | * @cert_sign_keychain: Certificate Signing Keychain |
| 27 | */ |
| 28 | struct fcs_hps_vab_certificate_data { |
| 29 | u32 vab_cert_magic_num; /* offset 0x10 */ |
| 30 | u32 flags; |
| 31 | u8 rsvd0_1[8]; |
| 32 | u8 fcs_sha384[SHA384_SUM_LEN]; /* offset 0x20 */ |
| 33 | }; |
| 34 | |
| 35 | /* |
| 36 | * struct fcs_hps_vab_certificate_header |
| 37 | * @cert_magic_num: Certificate Magic Word (0x25D04E7F) |
| 38 | * @cert_data_sz: size of this certificate header (0x80) |
| 39 | * Includes magic number all the way to the certificate |
| 40 | * signing keychain (excludes cert. signing keychain) |
| 41 | * @cert_ver: Certificate Version |
| 42 | * @cert_type: Certificate Type |
| 43 | * @data: VAB HPS Image Certificate data |
| 44 | */ |
| 45 | struct fcs_hps_vab_certificate_header { |
| 46 | u32 cert_magic_num; /* offset 0 */ |
| 47 | u32 cert_data_sz; |
| 48 | u32 cert_ver; |
| 49 | u32 cert_type; |
| 50 | struct fcs_hps_vab_certificate_data d; /* offset 0x10 */ |
| 51 | /* keychain starts at offset 0x50 */ |
| 52 | }; |
| 53 | |
| 54 | #define VAB_CERT_HEADER_SIZE sizeof(struct fcs_hps_vab_certificate_header) |
| 55 | #define VAB_CERT_MAGIC_OFFSET offsetof \ |
| 56 | (struct fcs_hps_vab_certificate_header, d) |
| 57 | #define VAB_CERT_FIT_SHA384_OFFSET offsetof \ |
| 58 | (struct fcs_hps_vab_certificate_data, \ |
| 59 | fcs_sha384[0]) |
| 60 | |
| 61 | int socfpga_vendor_authentication(void **p_image, size_t *p_size); |
| 62 | |
| 63 | #endif /* _SECURE_VAB_H_ */ |