mirror of https://github.com/wolfSSL/wolfTPM.git
Minor fixes for the TPM Linux device interface and debug improvements
Signed-off-by: Dimitar Tomov <dimi@designfirst.ee>pull/91/head
parent
d6abe06a5d
commit
9416f1ef09
|
@ -242,6 +242,7 @@ AM_CONDITIONAL([BUILD_ADVIO], [test "x$ENABLED_ADVIO" = "xyes"])
|
|||
AM_CONDITIONAL([BUILD_ST33], [test "x$ENABLED_ST33" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_MCHP], [test "x$ENABLED_MCHP" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_INFINEON], [test "x$ENABLED_INFINEON" = "xyes"])
|
||||
AM_CONDITIONAL([BUILD_DEVTPM], [test "x$ENABLED_DEVTPM" = "xyes"])
|
||||
|
||||
|
||||
|
||||
|
@ -359,3 +360,4 @@ echo " * Infineon SLB9670 $ENABLED_INFINEON"
|
|||
echo " * STM ST33: $ENABLED_ST33"
|
||||
echo " * Microchip ATTPM20: $ENABLED_MCHP"
|
||||
echo " * I2C: $ENABLED_I2C"
|
||||
echo " * Linux kernel TPM device: $ENABLED_DEVTPM"
|
||||
|
|
|
@ -5,10 +5,10 @@
|
|||
|
||||
lib_LTLIBRARIES+= src/libwolftpm.la
|
||||
src_libwolftpm_la_SOURCES = \
|
||||
src/tpm2.c \
|
||||
src/tpm2_packet.c \
|
||||
src/tpm2_tis.c \
|
||||
src/tpm2_wrap.c \
|
||||
src/tpm2.c \
|
||||
src/tpm2_packet.c \
|
||||
src/tpm2_tis.c \
|
||||
src/tpm2_wrap.c \
|
||||
src/tpm2_linux.c
|
||||
src_libwolftpm_la_CFLAGS = -DBUILDING_WOLFTPM $(AM_CFLAGS)
|
||||
src_libwolftpm_la_CPPFLAGS = -DBUILDING_WOLFTPM $(AM_CPPFLAGS)
|
||||
|
|
|
@ -167,7 +167,11 @@ static TPM_RC TPM2_SendCommandAuth(TPM2_CTX* ctx, TPM2_Packet* packet,
|
|||
}
|
||||
|
||||
/* submit command and wait for response */
|
||||
#ifdef WOLFTPM_LINUX_DEV
|
||||
rc = (TPM_RC)TPM2_LINUX_SendCommand(ctx, cmd, cmdSz);
|
||||
#else
|
||||
rc = (TPM_RC)TPM2_TIS_SendCommand(ctx, cmd, cmdSz);
|
||||
#endif
|
||||
|
||||
/* parse response */
|
||||
rc = TPM2_Packet_Parse(rc, packet);
|
||||
|
|
|
@ -20,6 +20,7 @@
|
|||
*/
|
||||
|
||||
|
||||
#ifdef WOLFTPM_LINUX_DEV
|
||||
#include <wolftpm/tpm2_linux.h>
|
||||
#include <wolftpm/tpm2_packet.h>
|
||||
#include <wolftpm/tpm2_wrap.h> /* Needed only for WOLFTPM2_MAX_BUFFER */
|
||||
|
@ -32,7 +33,10 @@
|
|||
#include <string.h>
|
||||
|
||||
|
||||
#ifndef TPM2_LINUX_DEV
|
||||
#define TPM2_LINUX_DEV "/dev/tpm0"
|
||||
#endif
|
||||
|
||||
#define TPM2_LINUX_DEV_POLL_TIMEOUT -1 /* Infinite time for poll events */
|
||||
#define TPM2_LINUX_DEV_RSP_SIZE WOLFTPM2_MAX_BUFFER
|
||||
/* Linux kernels older than v4.20 (before December 2018) do not support
|
||||
|
@ -49,11 +53,12 @@
|
|||
int TPM2_LINUX_SendCommand(TPM2_CTX* ctx, byte* cmd, word16 cmdSz)
|
||||
{
|
||||
int rc = TPM_RC_FAILURE;
|
||||
int fd, rspSz;
|
||||
int rc_poll, nfds= 1; /* Polling single TPM dev file */
|
||||
int fd;
|
||||
int rc_poll, nfds = 1; /* Polling single TPM dev file */
|
||||
struct pollfd fds;
|
||||
size_t rspSz = 0;
|
||||
|
||||
#ifdef DEBUG_WOLFTPM /* TODO: Change to WOLFTPM_DEBUG_VERBOSE */
|
||||
#ifdef WOLFTPM_DEBUG_VERBOSE
|
||||
printf("Command size: %d\n", cmdSz);
|
||||
TPM2_PrintBin(cmd, cmdSz);
|
||||
#endif
|
||||
|
@ -79,7 +84,7 @@ int TPM2_LINUX_SendCommand(TPM2_CTX* ctx, byte* cmd, word16 cmdSz)
|
|||
#ifdef DEBUG_WOLFTPM
|
||||
else
|
||||
{
|
||||
printf("Response size is %d bytes, not enough to "
|
||||
printf("Response size is %ld bytes, not enough to "
|
||||
"hold TPM response.\n", rspSz);
|
||||
}
|
||||
}
|
||||
|
@ -92,20 +97,32 @@ int TPM2_LINUX_SendCommand(TPM2_CTX* ctx, byte* cmd, word16 cmdSz)
|
|||
#endif
|
||||
}
|
||||
}
|
||||
#ifdef DEBUG_WOLFTPM /* TODO: Change to WOLFTPM_DEBUG_TIMEOUT */
|
||||
#ifdef WOLFTPM_DEBUG_VERBOSE
|
||||
else {
|
||||
printf("Failed to get a response from fd %d, got errno %d ="
|
||||
"%s\n", fd, errno, strerror(errno));
|
||||
}
|
||||
}
|
||||
else {
|
||||
printf("Failed to send the TPM command to fd %d, got errno %d ="
|
||||
"%s\n", fd, errno, strerror(errno));
|
||||
#endif
|
||||
}
|
||||
|
||||
close(fd);
|
||||
}
|
||||
#ifdef DEBUG_WOLFTPM
|
||||
else if (fd == -1 && errno == EACCES) {
|
||||
printf("Permission denied. Use sudo or change the user group.\n");
|
||||
}
|
||||
else {
|
||||
perror("Failed to open device");
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef DEBUG_WOLFTPM /* TODO: Change to WOLFTPM_DEBUG_VERBOSE */
|
||||
#ifdef WOLFTPM_DEBUG_VERBOSE
|
||||
if (rspSz > 0) {
|
||||
printf("Response size: %d\n", rspSz);
|
||||
printf("Response size: %ld\n", rspSz);
|
||||
TPM2_PrintBin(cmd, rspSz);
|
||||
}
|
||||
#endif
|
||||
|
@ -114,3 +131,4 @@ int TPM2_LINUX_SendCommand(TPM2_CTX* ctx, byte* cmd, word16 cmdSz)
|
|||
|
||||
return rc;
|
||||
}
|
||||
#endif
|
||||
|
|
|
@ -8,6 +8,7 @@ nobase_include_HEADERS+= \
|
|||
wolftpm/tpm2_tis.h \
|
||||
wolftpm/tpm2_types.h \
|
||||
wolftpm/tpm2_wrap.h \
|
||||
wolftpm/tpm2_linux.h \
|
||||
wolftpm/version.h \
|
||||
wolftpm/visibility.h \
|
||||
wolftpm/options.h
|
||||
|
|
Loading…
Reference in New Issue