Skip to content

Commit

Permalink
test rc get random
Browse files Browse the repository at this point in the history
Signed-off-by: Juergen Repp <[email protected]>
  • Loading branch information
JuergenReppSIT committed Jan 17, 2025
1 parent 33384e5 commit 537c650
Show file tree
Hide file tree
Showing 3 changed files with 44 additions and 5 deletions.
2 changes: 1 addition & 1 deletion .ci/docker.run
Original file line number Diff line number Diff line change
Expand Up @@ -94,7 +94,7 @@ fi
if [ "$SCANBUILD" == "yes" ]; then
scan-build --status-bugs make -j
elif [ "$CC" == "clang" ]; then
make -j distcheck
make -j distcheck V=1
else
make -j check
fi
Expand Down
2 changes: 1 addition & 1 deletion src/tss2-esys/api/Esys_GetRandom.c
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,6 @@
#ifdef HAVE_CONFIG_H
#include "config.h" // IWYU pragma: keep
#endif

#include <inttypes.h> // for PRIx32, PRIx16, int32_t
#include <stdlib.h> // for NULL, calloc

Expand Down Expand Up @@ -254,6 +253,7 @@ Esys_GetRandom_Finish(
}
/* This block handle the resubmission of TPM commands given a certain set of
* TPM response codes. */
LOG_ERROR("XXX Test return code %x", r);
if (r == TPM2_RC_RETRY || r == TPM2_RC_TESTING || r == TPM2_RC_YIELDED) {
LOG_DEBUG("TPM returned RETRY, TESTING or YIELDED, which triggers a "
"resubmission: %" PRIx32, r);
Expand Down
45 changes: 42 additions & 3 deletions test/integration/esys-cp-hash.int.c
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,9 @@
#include "config.h" // IWYU pragma: keep
#endif

#include <stdio.h>
#include <string.h>

#include <stdlib.h> // for free, NULL, EXIT_FAILURE, EXIT_SUCCESS

#include "tss2_common.h" // for BYTE, TSS2_RC
Expand All @@ -19,6 +22,38 @@

#define base_rc(r) ((r) & ~TSS2_RC_LAYER_MASK)


int is_ubuntu_2204() {
FILE *file = fopen("/etc/os-release", "r");
if (!file) {
perror("Failed to open /etc/os-release");
return 0; // Could not determine OS
}

char line[256];
int is_ubuntu = 0;
int is_2204 = 0;

while (fgets(line, sizeof(line), file)) {
// Check for "Ubuntu"
if (strstr(line, "ID=ubuntu")) {
is_ubuntu = 1;
}
// Check for "22.04"
if (strstr(line, "VERSION_ID=\"22.04\"")) {
is_2204 = 1;
}
// If both conditions are met, break early
if (is_ubuntu && is_2204) {
break;
}
}

fclose(file);
return is_ubuntu && is_2204; // Return 1 if both conditions are true, 0 otherwise
}


/** Test the ESYS function Esys_GetRandom.
*
* Tested ESYS commands:
Expand Down Expand Up @@ -98,7 +133,9 @@ test_esyscp_hash(ESYS_CONTEXT * esys_context)
free(cp_hash);

r = Esys_GetRandom_Finish(esys_context, &randomBytes);
while (r == TSS2_ESYS_RC_TRY_AGAIN) {
LOG_ERROR("XXX Test return code2 %x", r);
while (base_rc(r) == TSS2_BASE_RC_TRY_AGAIN) {
// while (r == TSS2_ESYS_RC_TRY_AGAIN) {
r = Esys_GetRandom_Finish(esys_context, &randomBytes);
}
if (r != TPM2_RC_SUCCESS) {
Expand Down Expand Up @@ -154,8 +191,10 @@ test_esyscp_hash(ESYS_CONTEXT * esys_context)
if (r != TPM2_RC_SUCCESS) {
LOG_ERROR("FlushContext FAILED! Response Code : 0x%x", r);
}

return EXIT_SUCCESS;
if (is_ubuntu_2204())
return EXIT_FAILURE;
else
return EXIT_SUCCESS;

error_cleansession:
r = Esys_FlushContext(esys_context, session);
Expand Down

0 comments on commit 537c650

Please sign in to comment.