1 ######################################################################## 2 # 3 # Copyright (c) 2009-2016, Secure Endpoints Inc. 4 # All rights reserved. 5 # 6 # Redistribution and use in source and binary forms, with or without 7 # modification, are permitted provided that the following conditions 8 # are met: 9 # 10 # - Redistributions of source code must retain the above copyright 11 # notice, this list of conditions and the following disclaimer. 12 # 13 # - Redistributions in binary form must reproduce the above copyright 14 # notice, this list of conditions and the following disclaimer in 15 # the documentation and/or other materials provided with the 16 # distribution. 17 # 18 # THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS 19 # "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT 20 # LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS 21 # FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE 22 # COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, 23 # INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, 24 # BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; 25 # LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER 26 # CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT 27 # LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN 28 # ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE 29 # POSSIBILITY OF SUCH DAMAGE. 30 # 31 32 SUBDIRS=libtommath 33 34 RELDIR=lib\hcrypto 35 36 !include ../../windows/NTMakefile.w32 37 38 HCRYPTOINCLUDEDIR = $(INCDIR)\hcrypto 39 40 HEIMBASEDIR = $(SRC)\lib\base 41 42 HX509DIR = $(SRC)\lib\hx509 43 44 !ifdef INCLUDE_openssl_crypto 45 openssl_inc=-I$(INCLUDE_openssl_crypto) 46 !endif 47 48 intcflags=-DKRB5 -DASN1_LIB -I$(HCRYPTOINCLUDEDIR) -DUSE_HCRYPTO_LTM=1 \ 49 -I$(HX509DIR) $(openssl_inc) 50 51 # Do dependencies first 52 53 all:: subdirs 54 55 clean:: clean-subdirs 56 57 test:: test-subdirs 58 59 # Include files 60 61 INCFILES= \ 62 $(HCRYPTOINCLUDEDIR)\aes.h \ 63 $(HCRYPTOINCLUDEDIR)\bn.h \ 64 $(HCRYPTOINCLUDEDIR)\des.h \ 65 $(HCRYPTOINCLUDEDIR)\dh.h \ 66 $(HCRYPTOINCLUDEDIR)\dsa.h \ 67 $(HCRYPTOINCLUDEDIR)\ec.h \ 68 $(HCRYPTOINCLUDEDIR)\ecdh.h \ 69 $(HCRYPTOINCLUDEDIR)\ecdsa.h \ 70 $(HCRYPTOINCLUDEDIR)\engine.h \ 71 $(HCRYPTOINCLUDEDIR)\evp.h \ 72 $(HCRYPTOINCLUDEDIR)\evp-hcrypto.h \ 73 $(HCRYPTOINCLUDEDIR)\evp-cc.h \ 74 $(HCRYPTOINCLUDEDIR)\evp-openssl.h \ 75 $(HCRYPTOINCLUDEDIR)\evp-pkcs11.h \ 76 $(HCRYPTOINCLUDEDIR)\evp-wincng.h \ 77 $(HCRYPTOINCLUDEDIR)\evp-w32.h \ 78 $(HCRYPTOINCLUDEDIR)\hmac.h \ 79 $(HCRYPTOINCLUDEDIR)\md4.h \ 80 $(HCRYPTOINCLUDEDIR)\md5.h \ 81 $(HCRYPTOINCLUDEDIR)\pkcs12.h \ 82 $(HCRYPTOINCLUDEDIR)\rand.h \ 83 $(HCRYPTOINCLUDEDIR)\randi.h \ 84 $(HCRYPTOINCLUDEDIR)\rc2.h \ 85 $(HCRYPTOINCLUDEDIR)\rc4.h \ 86 $(HCRYPTOINCLUDEDIR)\rsa.h \ 87 $(HCRYPTOINCLUDEDIR)\sha.h \ 88 $(HCRYPTOINCLUDEDIR)\ui.h \ 89 $(HCRYPTOINCLUDEDIR)\undef.h 90 91 mkincdir: 92 !if !exist($(HCRYPTOINCLUDEDIR)) 93 $(MKDIR) $(HCRYPTOINCLUDEDIR) 94 !endif 95 96 {}.h{$(HCRYPTOINCLUDEDIR)}.h: 97 $(CP) $** $@ 98 99 all:: mkincdir 100 101 all:: $(INCFILES) 102 103 # libhcrypto 104 105 libhcrypto_OBJs = \ 106 $(OBJ)\aes.obj \ 107 $(OBJ)\bn.obj \ 108 $(OBJ)\camellia.obj \ 109 $(OBJ)\camellia-ntt.obj \ 110 $(OBJ)\common.obj \ 111 $(OBJ)\des.obj \ 112 $(OBJ)\dh.obj \ 113 $(OBJ)\dh-ltm.obj \ 114 $(OBJ)\dh-tfm.obj \ 115 $(OBJ)\dsa.obj \ 116 $(OBJ)\evp.obj \ 117 $(OBJ)\evp-hcrypto.obj \ 118 $(OBJ)\evp-cc.obj \ 119 $(OBJ)\evp-openssl.obj \ 120 $(OBJ)\evp-pkcs11.obj \ 121 $(OBJ)\evp-wincng.obj \ 122 $(OBJ)\evp-w32.obj \ 123 $(OBJ)\engine.obj \ 124 $(OBJ)\hmac.obj \ 125 $(OBJ)\md4.obj \ 126 $(OBJ)\md5.obj \ 127 $(OBJ)\pkcs5.obj \ 128 $(OBJ)\pkcs12.obj \ 129 $(OBJ)\rand-w32.obj \ 130 $(OBJ)\rand.obj \ 131 $(OBJ)\rc2.obj \ 132 $(OBJ)\rc4.obj \ 133 $(OBJ)\rijndael-alg-fst.obj \ 134 $(OBJ)\rnd_keys.obj \ 135 $(OBJ)\rsa.obj \ 136 $(OBJ)\rsa-gmp.obj \ 137 $(OBJ)\rsa-ltm.obj \ 138 $(OBJ)\rsa-tfm.obj \ 139 $(OBJ)\sha.obj \ 140 $(OBJ)\sha256.obj \ 141 $(OBJ)\sha512.obj \ 142 $(OBJ)\ui.obj \ 143 $(OBJ)\validate.obj 144 145 $(LIBHCRYPTO): $(libhcrypto_OBJs) 146 $(LIBCON) 147 148 all:: $(LIBHCRYPTO) 149 150 clean:: 151 -$(RM) $(LIBHCRYPTO) 152 153 # Tests 154 155 TESTLIB=$(OBJ)\libhctest.lib 156 157 $(TESTLIB): \ 158 $(OBJ)\des.obj \ 159 $(OBJ)\ui.obj 160 $(LIBCON) 161 162 test-binaries: \ 163 $(OBJ)\destest.exe \ 164 $(OBJ)\example_evp_cipher.exe \ 165 $(OBJ)\mdtest.exe \ 166 $(OBJ)\rc2test.exe \ 167 $(OBJ)\rctest.exe \ 168 $(OBJ)\test_bn.exe \ 169 $(OBJ)\test_bulk.exe \ 170 $(OBJ)\test_cipher.exe \ 171 $(OBJ)\test_engine_dso.exe \ 172 $(OBJ)\test_hmac.exe \ 173 $(OBJ)\test_pkcs5.exe \ 174 $(OBJ)\test_pkcs12.exe \ 175 $(OBJ)\test_rsa.exe \ 176 $(OBJ)\test_dh.exe \ 177 $(OBJ)\test_rand.exe \ 178 $(OBJ)\test_crypto.sh 179 180 $(OBJ)\destest.exe: $(OBJ)\destest.obj $(TESTLIB) $(LIBROKEN) $(LIBHEIMBASE) 181 $(EXECONLINK) 182 $(EXEPREP_NODIST) 183 184 $(OBJ)\example_evp_cipher.exe: $(OBJ)\example_evp_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 185 $(EXECONLINK) 186 $(EXEPREP_NODIST) 187 188 $(OBJ)\mdtest.exe: $(OBJ)\mdtest.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(OBJ)\sha512.obj 189 $(EXECONLINK) 190 $(EXEPREP_NODIST) 191 192 $(OBJ)\rc2test.exe: $(OBJ)\rc2test.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 193 $(EXECONLINK) 194 $(EXEPREP_NODIST) 195 196 $(OBJ)\rctest.exe: $(OBJ)\rctest.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 197 $(EXECONLINK) 198 $(EXEPREP_NODIST) 199 200 $(OBJ)\test_bn.exe: $(OBJ)\test_bn.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 201 $(EXECONLINK) 202 $(EXEPREP_NODIST) 203 204 $(OBJ)\test_bulk.exe: $(OBJ)\test_bulk.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 205 $(EXECONLINK) 206 $(EXEPREP_NODIST) 207 208 $(OBJ)\test_cipher.exe: $(OBJ)\test_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 209 $(EXECONLINK) 210 $(EXEPREP_NODIST) 211 212 $(OBJ)\test_engine_dso.exe: $(OBJ)\test_engine_dso.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 213 $(EXECONLINK) 214 $(EXEPREP_NODIST) 215 216 $(OBJ)\test_hmac.exe: $(OBJ)\test_hmac.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 217 $(EXECONLINK) 218 $(EXEPREP_NODIST) 219 220 $(OBJ)\test_pkcs5.exe: $(OBJ)\test_pkcs5.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 221 $(EXECONLINK) 222 $(EXEPREP_NODIST) 223 224 $(OBJ)\test_pkcs12.exe: $(OBJ)\test_pkcs12.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 225 $(EXECONLINK) 226 $(EXEPREP_NODIST) 227 228 $(OBJ)\test_rsa.exe: $(OBJ)\test_rsa.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 229 $(EXECONLINK) 230 $(EXEPREP_NODIST) 231 232 $(OBJ)\test_dh.exe: $(OBJ)\test_dh.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 233 $(EXECONLINK) 234 $(EXEPREP_NODIST) 235 236 $(OBJ)\test_rand.exe: $(OBJ)\test_rand.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 237 $(EXECONLINK) 238 $(EXEPREP_NODIST) 239 240 SRCDIR2=$(SRCDIR:\=\\\\) 241 242 $(OBJ)\test_crypto.sh: test_crypto.in NTMakefile 243 $(SED) -e "s,[@]srcdir[@],$(SRCDIR2),g" -e "s,[@]exeext[@],.exe,g" -e "s,\r,," < test_crypto.in > $@ || $(RM) $@ 244 245 test-run: 246 cd $(OBJ) 247 !ifdef SH 248 -$(SH) test_crypto.sh 249 !endif 250 -destest.exe 251 -mdtest.exe 252 -rc2test.exe 253 -rctest.exe 254 -test_bn.exe 255 -test_bulk.exe --provider=hcrypto 256 -test_bulk.exe --provider=w32crypto 257 -test_cipher.exe 258 -test_engine_dso.exe 259 -test_hmac.exe 260 -test_pkcs5.exe 261 -test_pkcs12.exe 262 -test_rsa.exe 263 -test_dh.exe 264 cd $(SRCDIR) 265 266 test:: $(TESTLIB) test-binaries test-run 267 268 test-exports: 269 $(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libhcrypto-exports.def 270 271 test:: test-exports 272