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 32SUBDIRS=libtommath 33 34RELDIR=lib\hcrypto 35 36!include ../../windows/NTMakefile.w32 37 38HCRYPTOINCLUDEDIR = $(INCDIR)\hcrypto 39 40HEIMBASEDIR = $(SRC)\lib\base 41 42HX509DIR = $(SRC)\lib\hx509 43 44!ifdef INCLUDE_openssl_crypto 45openssl_inc=-I$(INCLUDE_openssl_crypto) 46!endif 47 48intcflags=-DKRB5 -DASN1_LIB -I$(HCRYPTOINCLUDEDIR) -DUSE_HCRYPTO_LTM=1 \ 49 -I$(HX509DIR) $(openssl_inc) 50 51# Do dependencies first 52 53all:: subdirs 54 55clean:: clean-subdirs 56 57test:: test-subdirs 58 59# Include files 60 61INCFILES= \ 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 91mkincdir: 92!if !exist($(HCRYPTOINCLUDEDIR)) 93 $(MKDIR) $(HCRYPTOINCLUDEDIR) 94!endif 95 96{}.h{$(HCRYPTOINCLUDEDIR)}.h: 97 $(CP) $** $@ 98 99all:: mkincdir 100 101all:: $(INCFILES) 102 103# libhcrypto 104 105libhcrypto_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 148all:: $(LIBHCRYPTO) 149 150clean:: 151 -$(RM) $(LIBHCRYPTO) 152 153# Tests 154 155TESTLIB=$(OBJ)\libhctest.lib 156 157$(TESTLIB): \ 158 $(OBJ)\des.obj \ 159 $(OBJ)\ui.obj 160 $(LIBCON) 161 162test-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 240SRCDIR2=$(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 245test-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 266test:: $(TESTLIB) test-binaries test-run 267 268test-exports: 269 $(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libhcrypto-exports.def 270 271test:: test-exports 272