From 83f5c16f12410fbb3671d577e66a43145c5ea9d1 Mon Sep 17 00:00:00 2001 From: Chris Engel Date: Fri, 19 Feb 2016 10:08:31 -0600 Subject: TrustedBoot-Add log manager functions to allow passing in external log buffer Change-Id: I33b8680fb89072311bb23730bfc1901e4ded9e21 RTC: 125289 ForwardPort: yes Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/22003 Reviewed-by: Timothy R. Block Reviewed-by: Stephen M. Cprek Reviewed-by: Daniel M. Crowell Reviewed-on: http://ralgit01.raleigh.ibm.com/gerrit1/24669 Tested-by: Jenkins Server Tested-by: FSP CI Jenkins Reviewed-by: Christopher J. Engel --- src/usr/secureboot/trusted/test/tpmLogMgrTest.H | 204 ++++++++++++++++++++++ src/usr/secureboot/trusted/test/trustedbootTest.H | 9 - 2 files changed, 204 insertions(+), 9 deletions(-) (limited to 'src/usr/secureboot/trusted/test') diff --git a/src/usr/secureboot/trusted/test/tpmLogMgrTest.H b/src/usr/secureboot/trusted/test/tpmLogMgrTest.H index 537ada4b0..cf61de420 100755 --- a/src/usr/secureboot/trusted/test/tpmLogMgrTest.H +++ b/src/usr/secureboot/trusted/test/tpmLogMgrTest.H @@ -360,6 +360,210 @@ class TPMLogMgrTest: public CxxTest::TestSuite } while (0); } + + + /** + * @brief TPM Log calcLogSize tests + */ + void testTpmLogCalcLogSize ( void ) + { + TRACFCOMP( g_trac_trustedboot, "testTpmLogCalcLogSize - Start" ); + + do { + // Initialize logMgr + TpmLogMgr logMgr; + getTestLogMgr(&logMgr); + + size_t firstEventSize = TpmLogMgr_getLogSize(&logMgr); + + // No events beyond initial one + if ((TpmLogMgr_calcLogSize(&logMgr) != + TpmLogMgr_getLogSize(&logMgr))) + { + TS_FAIL( "testTpmLogCalcLogSize - " + "Invalid first event calc LS(%d) CS(%d)", + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_calcLogSize(&logMgr)); + break; + } + + // Add an event to log + TCG_PCR_EVENT2 eventLog = addTestLogEvent(logMgr, + "CalcLog11"); + if (TpmLogMgr_calcLogSize(&logMgr) != + TpmLogMgr_getLogSize(&logMgr) || + ((firstEventSize + + TCG_PCR_EVENT2_marshalSize(&eventLog)) + != TpmLogMgr_getLogSize(&logMgr)) ) + { + TS_FAIL( "testTpmLogCalcLogSize - " + "Invalid second event calc LS(%d) CS(%d)", + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_calcLogSize(&logMgr)); + break; + } + + // Add more events to log + for (int idx = 0; idx < 10; idx ++) + { + eventLog = addTestLogEvent(logMgr, + "CalcLog3434"); + if (TpmLogMgr_calcLogSize(&logMgr) != + TpmLogMgr_getLogSize(&logMgr)) + { + TS_FAIL( "testTpmLogCalcLogSize - IDX (%d) " + "Invalid additional event calc LS(%d) CS(%d)", + idx, + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_calcLogSize(&logMgr)); + break; + } + } + } + while (0); + } + + /** + * @brief TPM Log initializeUsingExistingLog tests + */ + void testTpmLogInitExisting ( void ) + { + TRACFCOMP( g_trac_trustedboot, "testTpmLogInitExisting - Start" ); + errlHndl_t err = NULL; + TCG_PCR_EVENT2 eventLog; + + do { + // Initialize logMgr + TpmLogMgr logMgr; + getTestLogMgr(&logMgr); + // Create a logMgr clone + TpmLogMgr cloneMgr; + + err = TpmLogMgr_initializeUsingExistingLog(&cloneMgr, + TpmLogMgr_getLogStartPtr(&logMgr), + logMgr.logMaxSize); + + // No events beyond initial one + if (NULL != err || + TpmLogMgr_getLogSize(&logMgr) != + TpmLogMgr_getLogSize(&cloneMgr)) + { + TS_FAIL( "testTpmLogInitExisting - " + "test fail on initial init " + "err(%d) LMS(%d) CLS(%d)", + (NULL == err) ? 0 : 1, + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_getLogSize(&cloneMgr)); + break; + } + + + // Add more events to log + for (int idx = 0; idx < 10; idx ++) + { + eventLog = addTestLogEvent(logMgr, + "CalcLog3434"); + } + + err = TpmLogMgr_initializeUsingExistingLog(&cloneMgr, + TpmLogMgr_getLogStartPtr(&logMgr), + logMgr.logMaxSize); + + if (NULL != err || + TpmLogMgr_getLogSize(&logMgr) != + TpmLogMgr_getLogSize(&cloneMgr)) + { + TS_FAIL( "testTpmLogInitExisting - " + "test fail on multiple log init " + "err(%d) LMS(%d) CLS(%d)", + (NULL == err) ? 0 : 1, + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_getLogSize(&cloneMgr)); + break; + } + + // Now try adding an event to the clone logMgr + eventLog = addTestLogEvent(cloneMgr, "Clone123 23434"); + if (TpmLogMgr_getLogSize(&logMgr) == + TpmLogMgr_getLogSize(&cloneMgr)) + { + TS_FAIL( "testTpmLogInitExisting - " + "test fail on addlog to clone" + "LMS(%d) CLS(%d)", + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_getLogSize(&cloneMgr)); + break; + } + } + while (0); + TRACFCOMP( g_trac_trustedboot, "testTpmLogInitExisting - End" ); + } + + /** + * @brief TPM Log initializeUsingExistingLog failing tests + */ + void testTpmLogInitExistingFails ( void ) + { + TRACFCOMP( g_trac_trustedboot, + "testTpmLogInitExistingFails - Start" ); + errlHndl_t err = NULL; + + do { + // Initialize logMgr + TpmLogMgr logMgr; + getTestLogMgr(&logMgr); + // Create a logMgr clone + TpmLogMgr cloneMgr; + uint8_t logBuffer[256]; + + // Zero'd buffer without initial header entry + memset(logBuffer,0, sizeof(logBuffer)); + err = TpmLogMgr_initializeUsingExistingLog(&cloneMgr, + logBuffer, + sizeof(logBuffer)); + + if (NULL == err) + { + TS_FAIL( "testTpmLogInitExistingFails - " + "test fail on initial init " + "err(%d) LMS(%d) CLS(%d)", + (NULL == err) ? 0 : 1, + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_getLogSize(&cloneMgr)); + break; + } + else + { + delete err; + err = NULL; + } + + + // Buffer too small + err = TpmLogMgr_initializeUsingExistingLog(&cloneMgr, + TpmLogMgr_getLogStartPtr(&logMgr), + 10); + if (NULL == err) + { + TS_FAIL( "testTpmLogInitExistingFails - " + "test fail on initial init buff too small" + "err(%d) LMS(%d) CLS(%d)", + (NULL == err) ? 0 : 1, + TpmLogMgr_getLogSize(&logMgr), + TpmLogMgr_getLogSize(&cloneMgr)); + break; + } + else + { + delete err; + err = NULL; + } + } + while (0); + TRACFCOMP( g_trac_trustedboot, + "testTpmLogInitExistingFails - End" ); + } + }; #endif diff --git a/src/usr/secureboot/trusted/test/trustedbootTest.H b/src/usr/secureboot/trusted/test/trustedbootTest.H index 5fad75145..12f7a9de0 100755 --- a/src/usr/secureboot/trusted/test/trustedbootTest.H +++ b/src/usr/secureboot/trusted/test/trustedbootTest.H @@ -44,15 +44,6 @@ #include "../base/trustedboot_base.H" #include "../base/tpmLogMgr.H" -extern trace_desc_t* g_trac_trustedboot; - -// Easy macro replace for unit testing -//#define TRACUCOMP(args...) TRACFCOMP(args) -#define TRACUCOMP(args...) -//#define TRACUBIN(args...) TRACFBIN(args) -#define TRACUBIN(args...) - - using namespace TRUSTEDBOOT; -- cgit v1.2.3