Skip to content

Commit

Permalink
Merge pull request #134 from xaptum/zanebeckwith/use-tpm2-tss
Browse files Browse the repository at this point in the history
Use `tpm2-software/tpm2-tss` rather than `xaptum-tpm`
  • Loading branch information
zanebeckwith authored Jul 28, 2020
2 parents 15fb9ab + d9b1ef7 commit a63fd5c
Show file tree
Hide file tree
Showing 17 changed files with 591 additions and 236 deletions.
18 changes: 11 additions & 7 deletions .travis.yml
Original file line number Diff line number Diff line change
Expand Up @@ -16,12 +16,14 @@ language: c

compiler: gcc

dist: bionic

env:
global:
- INSTALL_PREFIX=${TRAVIS_BUILD_DIR}/usr
- CMAKE_PREFIX_PATH=${INSTALL_PREFIX}
- AMCL_DIR=${TRAVIS_BUILD_DIR}/amcl/install
- XAPTUM_TPM_DIR=${TRAVIS_BUILD_DIR}/xaptum-tpm/
- TPM2_TSS_DIR=${TRAVIS_BUILD_DIR}/tpm2-tss/
- IBM_TPM_DIR=${TRAVIS_BUILD_DIR}/ibm-tpm-simulator
- ECDAA_CURVES=FP256BN,BN254,BN254CX,BLS383
- ECDAA_BUILD_DIR=${TRAVIS_BUILD_DIR}/build
Expand All @@ -30,9 +32,13 @@ env:
- SHARED_LIBS=ON
- OUT_EXT_REPLACE=OFF

before_install:
- sudo apt-get -y --no-install-recommends install autoconf-archive libgcrypt11-dev
- pip install --user cpp-coveralls

before_script:
- .travis/install-amcl.sh ${AMCL_DIR} ${INSTALL_PREFIX} ${ECDAA_CURVES}
- .travis/install-xaptum-tpm.sh ${XAPTUM_TPM_DIR} ${INSTALL_PREFIX}
- .travis/install-tpm2-tss.sh ${TPM2_TSS_DIR} ${INSTALL_PREFIX}
- .travis/install-ibm-tpm2.sh ${IBM_TPM_DIR}
- mkdir -p ${ECDAA_BUILD_DIR}
- pushd ${ECDAA_BUILD_DIR}
Expand Down Expand Up @@ -62,8 +68,6 @@ matrix:
- TYPE=DEBUG_WITH_COVERAGE
- BUILD_TYPE=DebugWithCoverage
- OUT_EXT_REPLACE=ON
before_install:
- pip install --user cpp-coveralls
after_success:
- coveralls --exclude examples --exclude amcl
- name: "DevDebug build"
Expand All @@ -90,10 +94,10 @@ matrix:
- cppcheck
before_script:
- .travis/install-amcl.sh ${AMCL_DIR} ${INSTALL_PREFIX} ${ECDAA_CURVES}
- .travis/install-xaptum-tpm.sh ${XAPTUM_TPM_DIR} ${INSTALL_PREFIX}
- .travis/install-tpm2-tss.sh ${TPM2_TSS_DIR} ${INSTALL_PREFIX}
- mkdir -p ${ECDAA_BUILD_DIR}
- pushd ${ECDAA_BUILD_DIR}
- cmake .. -DCMAKE_BUILD_TYPE=Release -DXAPTUMTPM_LOCAL_DIR=${XAPTUM_TPM_DIR} -DCMAKE_INSTALL_PREFIX=${ECDAA_INSTALL_DIR} -DECDAA_CURVES=FP256BN
- cmake .. -DCMAKE_BUILD_TYPE=Release -DXAPTUMTPM_LOCAL_DIR=${TPM2_TSS_DIR} -DCMAKE_INSTALL_PREFIX=${ECDAA_INSTALL_DIR} -DECDAA_CURVES=FP256BN
- popd
script:
- pushd ${ECDAA_BUILD_DIR}
Expand Down Expand Up @@ -123,7 +127,7 @@ matrix:
- TYPE=SCAN_BUILD
before_script:
- .travis/install-amcl.sh ${AMCL_DIR} ${INSTALL_PREFIX} ${ECDAA_CURVES}
- .travis/install-xaptum-tpm.sh ${XAPTUM_TPM_DIR} ${INSTALL_PREFIX}
- .travis/install-tpm2-tss.sh ${TPM2_TSS_DIR} ${INSTALL_PREFIX}
script:
- .travis/run-scanbuild.sh ${TRAVIS_BUILD_DIR} ${ECDAA_BUILD_DIR}
- name: "Sanitizers, gcc"
Expand Down
19 changes: 11 additions & 8 deletions .travis/install-xaptum-tpm.sh → .travis/install-tpm2-tss.sh
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
#!/bin/bash
# Copyright 2017-2018 Xaptum, Inc.
# Copyright 2020 Xaptum, Inc.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
Expand All @@ -22,16 +22,19 @@ if [[ $# -ne 2 ]]; then
exit 1
fi

repo_url=https://github.com/tpm2-software/tpm2-tss
tag=2.3.3
source_dir="$(my_expand_path $1)"
install_dir="$(my_expand_path $2)"

rm -rf "${source_dir}"
git clone https://github.com/xaptum/xaptum-tpm "${source_dir}"
git clone -b $tag "${repo_url}" "${source_dir}"

pushd "${source_dir}"
mkdir -p build
pushd build
cmake .. -DCMAKE_INSTALL_PREFIX=${install_dir} -DBUILD_SHARED_LIBS=On -DBUILD_TESTING=On
cmake --build .
cmake --build . --target install
popd

./bootstrap
./configure --prefix=${install_dir} --disable-esapi --disable-doxygen-doc --enable-fapi=no --enable-tcti-partial-reads=no
make -j $(nproc)
make install

popd
10 changes: 9 additions & 1 deletion CMakeLists.txt
Original file line number Diff line number Diff line change
Expand Up @@ -57,7 +57,7 @@ set(ECDAA_SOVERSION ${PROJECT_VERSION_MAJOR})

find_package(AMCL 4.7.0 REQUIRED QUIET)
if(ECDAA_TPM_SUPPORT)
find_package(xaptum-tpm 0.5.0 REQUIRED QUIET)
find_package(TSS2 REQUIRED QUIET)
endif()

add_compile_options(-std=c99 -Wall -Wextra -Wno-missing-field-initializers)
Expand Down Expand Up @@ -177,3 +177,11 @@ install(FILES
${CMAKE_CURRENT_BINARY_DIR}/ecdaa-config-version.cmake
DESTINATION ${INSTALL_CONFIGDIR}
)

if(ECDAA_TPM_SUPPORT)
install(FILES
${CMAKE_CURRENT_LIST_DIR}/cmake/FindTSS2.cmake
${CMAKE_CURRENT_LIST_DIR}/cmake/LibFindMacros.cmake
DESTINATION ${INSTALL_CONFIGDIR}
)
endif()
102 changes: 102 additions & 0 deletions cmake/FindTSS2.cmake
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
include(LibFindMacros)

# Use pkg-config to get hints about paths
libfind_pkg_check_modules(libtss2_PKGCONF libtss2-sys)

###############################################################################
# Find the include dirs
###############################################################################
find_path(libtss2_INCLUDE_DIR
NAMES tss2/
PATHS ${libtss2_sys_PKGCONF_INCLUDE_DIRS}
)

###############################################################################
# TSS2-Sys Library
###############################################################################
find_library(libtss2_sys_LIBRARY
NAMES tss2-sys
PATHS ${libtss2_PKGCONFIG_LIBRARY_DIRS}
)

set(libtss2_sys_PROCESS_INCLUDES libtss2_INCLUDE_DIR)
set(libtss2_sys_PROCESS_LIBS libtss2_sys_LIBRARY)

libfind_process(libtss2_sys)

if (libtss2_sys_FOUND)
if (NOT TARGET tss2::sys)

add_library(tss2::sys UNKNOWN IMPORTED)

set_target_properties(tss2::sys PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${libtss2_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${libtss2_sys_LIBRARY}"
)

endif ()
endif ()

###############################################################################
# TSS2-TCTI-Device Library
###############################################################################
find_library(libtss2_tcti_device_LIBRARY
NAMES tss2-tcti-device
PATHS ${libtss2_PKGCONFIG_LIBRARY_DIRS}
)

set(libtss2_tcti_device_PROCESS_INCLUDES libtss2_INCLUDE_DIR)
set(libtss2_tcti_device_PROCESS_LIBS libtss2_tcti_device_LIBRARY)

libfind_process(libtss2_tcti_device)

if (libtss2_tcti_device_FOUND)
if (NOT TARGET tss2::tcti_device)

add_library(tss2::tcti_device UNKNOWN IMPORTED)

set_target_properties(tss2::tcti_device PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${libtss2_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${libtss2_tcti_device_LIBRARY}"
)

endif ()
endif ()

###############################################################################
# TSS2-TCTI-MSSIM Library
###############################################################################
find_library(libtss2_tcti_mssim_LIBRARY
NAMES tss2-tcti-mssim
PATHS ${libtss2_PKGCONFIG_LIBRARY_DIRS}
)

set(libtss2_tcti_mssim_PROCESS_INCLUDES libtss2_INCLUDE_DIR)
set(libtss2_tcti_mssim_PROCESS_LIBS libtss2_tcti_mssim_LIBRARY)

libfind_process(libtss2_tcti_mssim)

if (libtss2_tcti_mssim_FOUND)
if (NOT TARGET tss2::tcti_mssim)

add_library(tss2::tcti_mssim UNKNOWN IMPORTED)

set_target_properties(tss2::tcti_mssim PROPERTIES
INTERFACE_INCLUDE_DIRECTORIES "${libtss2_INCLUDE_DIR}"
IMPORTED_LINK_INTERFACE_LANGUAGES "C"
IMPORTED_LOCATION "${libtss2_tcti_mssim_LIBRARY}"
)

endif ()
endif ()

###############################################################################
# Indicate package was found
###############################################################################
if (libtss2_sys_FOUND AND libtss2_tcti_device_FOUND AND libtss2_tcti_mssim_FOUND)
set(TSS2_FOUND TRUE)
else()
set(TSS2_FOUND FALSE)
endif()
Loading

0 comments on commit a63fd5c

Please sign in to comment.