Blame view

buildroot/buildroot-2016.08.1/package/tegrarcm/0001-Don-t-assume-cryptopp-is-system-wide-installed.patch 3.65 KB
6b13f685e   김민수   BSP 최초 추가
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
  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