Skip to content

Commit

Permalink
regression: add case 1041 for fTPM
Browse files Browse the repository at this point in the history
Add regression case 1041 to test if the system has a fTPM TA and if so
check that it has been probed.

Signed-off-by: Jens Wiklander <[email protected]>
Reviewed-by: Jerome Forissier <[email protected]>
  • Loading branch information
jenswi-linaro committed Dec 17, 2024
1 parent d5278b6 commit 42244c5
Show file tree
Hide file tree
Showing 2 changed files with 57 additions and 0 deletions.
26 changes: 26 additions & 0 deletions host/xtest/ftpm_ta.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
/* SPDX-License-Identifier: BSD-2-Clause */
/*
* Copyright (c) 2024 Linaro Limited
*
* The copyright in this software is being made available under the BSD License,
* included below. This software may be subject to other third party and
* contributor rights, including patent rights, and no such rights are granted
* under this license.
*
* Copyright (c) 2018 Microsoft Corporation
*
* All rights reserved.
*/

#ifndef FTPM_TA_H
#define FTPM_TA_H

/* This UUID is generated with uuidgen */
#define TA_FTPM_UUID { 0xBC50D971, 0xD4C9, 0x42C4, \
{0x82, 0xCB, 0x34, 0x3F, 0xB7, 0xF3, 0x78, 0x96}}

/* The TAFs ID implemented in this TA */
#define TA_FTPM_SUBMIT_COMMAND (0)
#define TA_FTPM_EMULATE_PPI (1)

#endif /*FTPM_TA_H*/
31 changes: 31 additions & 0 deletions host/xtest/regression_1000.c
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <sys/stat.h>
#include <sys/types.h>
#include <ta_arm_bti.h>
#include <ta_concurrent.h>
Expand All @@ -41,6 +42,7 @@
#include <utee_defines.h>
#include <util.h>

#include "ftpm_ta.h"
#include "xtest_helpers.h"
#include "xtest_test.h"
#include "xtest_uuid_helpers.h"
Expand Down Expand Up @@ -3361,3 +3363,32 @@ static void xtest_tee_test_1040(ADBG_Case_t *c)
}
ADBG_CASE_DEFINE(regression, 1040, xtest_tee_test_1040,
"Test panic in concurrent open/invoke/close session");

static void xtest_tee_test_1041(ADBG_Case_t *c)
{
const char fname[] = "/dev/tpm0";
TEE_Result res = TEEC_SUCCESS;
TEEC_Session sess = { };
uint32_t ret_orig = 0;
struct stat sb = { };

res = xtest_teec_open_session(&sess, &(const TEEC_UUID)TA_FTPM_UUID,
NULL, &ret_orig);
if (res == TEEC_ERROR_ITEM_NOT_FOUND) {
Do_ADBG_Log("skip test, fTPM TA not present");
return;
}
if (res != TEEC_ERROR_BUSY && ADBG_EXPECT_TEEC_SUCCESS(c, res))
TEEC_CloseSession(&sess);

if (!ADBG_EXPECT_COMPARE_SIGNED(c, stat(fname, &sb), ==, 0)) {
Do_ADBG_Log("stat(\"%s\"): %s", fname, strerror(errno));
if (res != TEEC_ERROR_BUSY)
Do_ADBG_Log("Perhaps fTPM hasn't finished probing");
return;
}

if (!ADBG_EXPECT_TRUE(c, S_ISCHR(sb.st_mode)))
Do_ADBG_Log("Expected \"%s\" to be a character device", fname);
}
ADBG_CASE_DEFINE(regression, 1041, xtest_tee_test_1041, "Test fTPM sanity");

0 comments on commit 42244c5

Please sign in to comment.