1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93
|
#include <assert.h>
#include <stdlib.h>
#include "Tpm.h"
/* from Global.h */
extern BYTE s_indexOrderlyRam[RAM_INDEX_SPACE];
int main(void)
{
PERSISTENT_DATA pd;
/* Check size of ppList that expands with new commands */
/* was 14 when COMPRESSED_LISTS was enabled */
#define PD_PP_LIST_EXP_SIZE 17
if (sizeof(pd.ppList) != PD_PP_LIST_EXP_SIZE) {
fprintf(stderr,
"sizeof(PERSISTENT_DATA.ppList) does not have expected size "
"of %u bytes but %zu bytes\n",
PD_PP_LIST_EXP_SIZE, sizeof(pd.ppList));
return EXIT_FAILURE;
}
/* Check size of auditCommands that expands with new commands */
/* was 14 when COMPRESSED_LISTS was enabled */
#define PD_AUDIT_COMMANDS_EXP_SIZE 17
if (sizeof(pd.auditCommands) != PD_AUDIT_COMMANDS_EXP_SIZE) {
fprintf(stderr,
"sizeof(PERSISTENT_DATA.auditCommands) does not have expected size "
"of %u bytes but %zu bytes\n",
PD_AUDIT_COMMANDS_EXP_SIZE, sizeof(pd.auditCommands));
return EXIT_FAILURE;
}
/* ensure that the NVRAM offset of NV_USER_DYNAMIC is at the expected
location so that there's enough memory for re-constructing NVRAM
indices etc. into the NVRAM */
#define NV_INDEX_RAM_DATA_EXP_OFFSET 5120
if (NV_INDEX_RAM_DATA != NV_INDEX_RAM_DATA_EXP_OFFSET) {
/* If this ever changes due to growth of the preceding data
* structure, we need to adjust the total NVRAM memory size
* for the architecture where this changed (or have all
* architectures use the same offset.
*/
fprintf(stderr,
"NV_INDEX_RAM_DATA not at expected offset %u but at %u\n",
NV_INDEX_RAM_DATA_EXP_OFFSET, (unsigned int)NV_INDEX_RAM_DATA);
return EXIT_FAILURE;
}
#define NV_USER_DYNAMIC_EXP_OFFSET (5120 + 512)
if (NV_USER_DYNAMIC != NV_USER_DYNAMIC_EXP_OFFSET) {
fprintf(stderr,
"NV_USER_DYNAMIC not at expected offset %u but at %u\n",
NV_USER_DYNAMIC_EXP_OFFSET, (unsigned int)NV_USER_DYNAMIC);
return EXIT_FAILURE;
}
/*
* OBJECTs are directly written into NVRAM. We have to make sure that the
* size of the OBJECT is the same on all architectures so that a full
* NVRAM fits on all architectures
*/
#if RSA_4096
# error Unsupported RSA key size
#elif RSA_3072
# define OBJECT_EXP_SIZE 2608
#elif RSA_2048
# define OBJECT_EXP_SIZE 1896
#endif
if (sizeof(OBJECT) != OBJECT_EXP_SIZE) {
fprintf(stderr, "sizeof(OBJECT) does not have expected size of %u bytes"
"but %zu bytes\n", OBJECT_EXP_SIZE, sizeof(OBJECT));
fprintf(stderr, "sizeof(TPMT_PUBLIC) is now %zu bytes;"
"was 356/484 bytes for 2048/3072 bit RSA keys\n", sizeof(TPMT_PUBLIC));
fprintf(stderr, "sizeof(TPMT_SENSITIVE) is now %zu bytes;"
"was 776/1096 bytes for 2048/3072 bit RSA keys\n", sizeof(TPMT_SENSITIVE));
fprintf(stderr, "sizeof(privateExponent_t) is now %zu bytes;"
"was 608/864 bytes for 2048/3072 bit RSA keys\n", sizeof(privateExponent_t));
return EXIT_FAILURE;
}
/* Same for NV_INDEX */
#define NV_INDEX_EXP_SIZE 148
if (sizeof(NV_INDEX) != NV_INDEX_EXP_SIZE) {
fprintf(stderr,
"sizeof(NV_INDEX) does not have expected size of %u bytes"
"but %zu bytes\n", NV_INDEX_EXP_SIZE, sizeof(NV_INDEX));
return EXIT_FAILURE;
}
return EXIT_SUCCESS;
}
|