| From 5ea6b3859ebe16ff47856b58262b14463e119c13 Mon Sep 17 00:00:00 2001 |
| From: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Date: Tue, 19 Apr 2016 22:14:42 +0200 |
| Subject: [PATCH] Don't assume cryptopp is system-wide installed |
| |
| The current build system adds "-isystem /usr/include/$(CRYPTOLIB)" to |
| AM_CPPFLAGS, but this is wrong because cryptopp might not be installed |
| in this location. Instead, the build system should simply include |
| <cryptopp/...> or <crypto++/...> and rely on the compiler include |
| path. |
| |
| The tricky part is that it can be <cryptopp/...> or <crypto++/...>. To |
| solve this, we use a solution similar to the one used in |
| https://github.com/bingmann/crypto-speedtest/blob/master/m4/cryptopp.m4 |
| and |
| https://github.com/bingmann/crypto-speedtest/blob/master/src/speedtest_cryptopp.cpp: |
| the configure script fills in a variable called |
| CRYPTOLIB_HEADER_PREFIX, and we use that in the C++ code to include |
| the right header file. |
| |
| It is worth mentioning that doing #include |
| <CRYPTOLIB_HEADER_PREFIX/foobar.h> doesn't work, and we have to use an |
| intermediate #define'd constant to overcome this C preprocessor |
| limitation. |
| |
| Signed-off-by: Thomas Petazzoni <thomas.petazzoni@free-electrons.com> |
| Submitted upstream at https://github.com/NVIDIA/tegrarcm/pull/2 |
| --- |
| configure.ac | 1 + |
| src/Makefile.am | 2 +- |
| src/aes-cmac.cpp | 28 +++++++++++++++++----------- |
| 3 files changed, 19 insertions(+), 12 deletions(-) |
| |
| diff --git a/configure.ac b/configure.ac |
| index 943654f..620e158 100644 |
| --- a/configure.ac |
| +++ b/configure.ac |
| @@ -33,6 +33,7 @@ AC_LINK_IFELSE( |
| [AC_MSG_ERROR([libcrypto++/libcryptopp is not installed.])])] |
| ) |
| AC_SUBST(CRYPTOLIB) |
| +AC_DEFINE_UNQUOTED([CRYPTOLIB_HEADER_PREFIX], [$CRYPTOLIB], [Location of cryptolib header]) |
| LDFLAGS=$SAVED_LDFLAGS |
| AC_LANG(C) |
| |
| diff --git a/src/Makefile.am b/src/Makefile.am |
| index 3dad0e6..35a606f 100644 |
| --- a/src/Makefile.am |
| +++ b/src/Makefile.am |
| @@ -1,5 +1,5 @@ |
| AM_CFLAGS = -Wall -std=c99 |
| -AM_CPPFLAGS = -isystem /usr/include/$(CRYPTOLIB) $(LIBUSB_CFLAGS) |
| +AM_CPPFLAGS = $(LIBUSB_CFLAGS) |
| |
| bin_PROGRAMS = tegrarcm |
| tegrarcm_SOURCES = \ |
| diff --git a/src/aes-cmac.cpp b/src/aes-cmac.cpp |
| index 24c89f8..da8be5a 100644 |
| --- a/src/aes-cmac.cpp |
| +++ b/src/aes-cmac.cpp |
| @@ -26,6 +26,9 @@ |
| * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE |
| * OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. |
| */ |
| + |
| +#include "config.h" |
| + |
| #include <iostream> |
| using std::cout; |
| using std::cerr; |
| @@ -40,26 +43,29 @@ using std::string; |
| #include <cstdlib> |
| using std::exit; |
| |
| -#include "cryptlib.h" |
| -using CryptoPP::Exception; |
| +#define CRYPTOPP_INCLUDE_CRYPTLIB <CRYPTOLIB_HEADER_PREFIX/cryptlib.h> |
| +#define CRYPTOPP_INCLUDE_CMAC <CRYPTOLIB_HEADER_PREFIX/cmac.h> |
| +#define CRYPTOPP_INCLUDE_AES <CRYPTOLIB_HEADER_PREFIX/aes.h> |
| +#define CRYPTOPP_INCLUDE_HEX <CRYPTOLIB_HEADER_PREFIX/hex.h> |
| +#define CRYPTOPP_INCLUDE_FILTERS <CRYPTOLIB_HEADER_PREFIX/filters.h> |
| +#define CRYPTOPP_INCLUDE_SECBLOCK <CRYPTOLIB_HEADER_PREFIX/secblock.h> |
| |
| -#include "cmac.h" |
| -using CryptoPP::CMAC; |
| +#include CRYPTOPP_INCLUDE_CRYPTLIB |
| +#include CRYPTOPP_INCLUDE_CMAC |
| +#include CRYPTOPP_INCLUDE_AES |
| +#include CRYPTOPP_INCLUDE_HEX |
| +#include CRYPTOPP_INCLUDE_FILTERS |
| +#include CRYPTOPP_INCLUDE_SECBLOCK |
| |
| -#include "aes.h" |
| +using CryptoPP::Exception; |
| +using CryptoPP::CMAC; |
| using CryptoPP::AES; |
| - |
| -#include "hex.h" |
| using CryptoPP::HexEncoder; |
| using CryptoPP::HexDecoder; |
| - |
| -#include "filters.h" |
| using CryptoPP::StringSink; |
| using CryptoPP::StringSource; |
| using CryptoPP::HashFilter; |
| using CryptoPP::HashVerificationFilter; |
| - |
| -#include "secblock.h" |
| using CryptoPP::SecByteBlock; |
| |
| extern "C" int cmac_hash(const unsigned char *msg, int len, unsigned char *cmac_buf) |
| -- |
| 2.6.4 |
| |