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)\md2.h \ 80 $(HCRYPTOINCLUDEDIR)\md4.h \ 81 $(HCRYPTOINCLUDEDIR)\md5.h \ 82 $(HCRYPTOINCLUDEDIR)\pkcs12.h \ 83 $(HCRYPTOINCLUDEDIR)\rand.h \ 84 $(HCRYPTOINCLUDEDIR)\randi.h \ 85 $(HCRYPTOINCLUDEDIR)\rc2.h \ 86 $(HCRYPTOINCLUDEDIR)\rc4.h \ 87 $(HCRYPTOINCLUDEDIR)\rsa.h \ 88 $(HCRYPTOINCLUDEDIR)\sha.h \ 89 $(HCRYPTOINCLUDEDIR)\ui.h \ 90 $(HCRYPTOINCLUDEDIR)\undef.h 91 92mkincdir: 93!if !exist($(HCRYPTOINCLUDEDIR)) 94 $(MKDIR) $(HCRYPTOINCLUDEDIR) 95!endif 96 97{}.h{$(HCRYPTOINCLUDEDIR)}.h: 98 $(CP) $** $@ 99 100all:: mkincdir 101 102all:: $(INCFILES) 103 104# libhcrypto 105 106libhcrypto_OBJs = \ 107 $(OBJ)\aes.obj \ 108 $(OBJ)\bn.obj \ 109 $(OBJ)\camellia.obj \ 110 $(OBJ)\camellia-ntt.obj \ 111 $(OBJ)\common.obj \ 112 $(OBJ)\des.obj \ 113 $(OBJ)\dh.obj \ 114 $(OBJ)\dh-ltm.obj \ 115 $(OBJ)\dh-tfm.obj \ 116 $(OBJ)\dsa.obj \ 117 $(OBJ)\evp.obj \ 118 $(OBJ)\evp-hcrypto.obj \ 119 $(OBJ)\evp-cc.obj \ 120 $(OBJ)\evp-openssl.obj \ 121 $(OBJ)\evp-pkcs11.obj \ 122 $(OBJ)\evp-wincng.obj \ 123 $(OBJ)\evp-w32.obj \ 124 $(OBJ)\engine.obj \ 125 $(OBJ)\hmac.obj \ 126 $(OBJ)\md2.obj \ 127 $(OBJ)\md4.obj \ 128 $(OBJ)\md5.obj \ 129 $(OBJ)\pkcs5.obj \ 130 $(OBJ)\pkcs12.obj \ 131 $(OBJ)\rand-w32.obj \ 132 $(OBJ)\rand.obj \ 133 $(OBJ)\rc2.obj \ 134 $(OBJ)\rc4.obj \ 135 $(OBJ)\rijndael-alg-fst.obj \ 136 $(OBJ)\rnd_keys.obj \ 137 $(OBJ)\rsa.obj \ 138 $(OBJ)\rsa-gmp.obj \ 139 $(OBJ)\rsa-ltm.obj \ 140 $(OBJ)\rsa-tfm.obj \ 141 $(OBJ)\sha.obj \ 142 $(OBJ)\sha256.obj \ 143 $(OBJ)\sha512.obj \ 144 $(OBJ)\ui.obj \ 145 $(OBJ)\validate.obj 146 147$(LIBHCRYPTO): $(libhcrypto_OBJs) 148 $(LIBCON) 149 150all:: $(LIBHCRYPTO) 151 152clean:: 153 -$(RM) $(LIBHCRYPTO) 154 155# Tests 156 157TESTLIB=$(OBJ)\libhctest.lib 158 159$(TESTLIB): \ 160 $(OBJ)\des.obj \ 161 $(OBJ)\ui.obj 162 $(LIBCON) 163 164test-binaries: \ 165 $(OBJ)\destest.exe \ 166 $(OBJ)\example_evp_cipher.exe \ 167 $(OBJ)\mdtest.exe \ 168 $(OBJ)\rc2test.exe \ 169 $(OBJ)\rctest.exe \ 170 $(OBJ)\test_bn.exe \ 171 $(OBJ)\test_bulk.exe \ 172 $(OBJ)\test_cipher.exe \ 173 $(OBJ)\test_engine_dso.exe \ 174 $(OBJ)\test_hmac.exe \ 175 $(OBJ)\test_pkcs5.exe \ 176 $(OBJ)\test_pkcs12.exe \ 177 $(OBJ)\test_rsa.exe \ 178 $(OBJ)\test_dh.exe \ 179 $(OBJ)\test_rand.exe \ 180 $(OBJ)\test_crypto.sh 181 182$(OBJ)\destest.exe: $(OBJ)\destest.obj $(TESTLIB) $(LIBROKEN) $(LIBHEIMBASE) 183 $(EXECONLINK) 184 $(EXEPREP_NODIST) 185 186$(OBJ)\example_evp_cipher.exe: $(OBJ)\example_evp_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 187 $(EXECONLINK) 188 $(EXEPREP_NODIST) 189 190$(OBJ)\mdtest.exe: $(OBJ)\mdtest.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(OBJ)\sha512.obj 191 $(EXECONLINK) 192 $(EXEPREP_NODIST) 193 194$(OBJ)\rc2test.exe: $(OBJ)\rc2test.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 195 $(EXECONLINK) 196 $(EXEPREP_NODIST) 197 198$(OBJ)\rctest.exe: $(OBJ)\rctest.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 199 $(EXECONLINK) 200 $(EXEPREP_NODIST) 201 202$(OBJ)\test_bn.exe: $(OBJ)\test_bn.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 203 $(EXECONLINK) 204 $(EXEPREP_NODIST) 205 206$(OBJ)\test_bulk.exe: $(OBJ)\test_bulk.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 207 $(EXECONLINK) 208 $(EXEPREP_NODIST) 209 210$(OBJ)\test_cipher.exe: $(OBJ)\test_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 211 $(EXECONLINK) 212 $(EXEPREP_NODIST) 213 214$(OBJ)\test_engine_dso.exe: $(OBJ)\test_engine_dso.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 215 $(EXECONLINK) 216 $(EXEPREP_NODIST) 217 218$(OBJ)\test_hmac.exe: $(OBJ)\test_hmac.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 219 $(EXECONLINK) 220 $(EXEPREP_NODIST) 221 222$(OBJ)\test_pkcs5.exe: $(OBJ)\test_pkcs5.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 223 $(EXECONLINK) 224 $(EXEPREP_NODIST) 225 226$(OBJ)\test_pkcs12.exe: $(OBJ)\test_pkcs12.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) 227 $(EXECONLINK) 228 $(EXEPREP_NODIST) 229 230$(OBJ)\test_rsa.exe: $(OBJ)\test_rsa.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 231 $(EXECONLINK) 232 $(EXEPREP_NODIST) 233 234$(OBJ)\test_dh.exe: $(OBJ)\test_dh.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 235 $(EXECONLINK) 236 $(EXEPREP_NODIST) 237 238$(OBJ)\test_rand.exe: $(OBJ)\test_rand.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBHEIMBASE) $(LIBVERS) 239 $(EXECONLINK) 240 $(EXEPREP_NODIST) 241 242SRCDIR2=$(SRCDIR:\=\\\\) 243 244$(OBJ)\test_crypto.sh: test_crypto.in NTMakefile 245 $(SED) -e "s,[@]srcdir[@],$(SRCDIR2),g" -e "s,[@]exeext[@],.exe,g" -e "s,\r,," < test_crypto.in > $@ || $(RM) $@ 246 247test-run: 248 cd $(OBJ) 249!ifdef SH 250 -$(SH) test_crypto.sh 251!endif 252 -destest.exe 253 -mdtest.exe 254 -rc2test.exe 255 -rctest.exe 256 -test_bn.exe 257 -test_bulk.exe --provider=hcrypto 258 -test_bulk.exe --provider=w32crypto 259 -test_cipher.exe 260 -test_engine_dso.exe 261 -test_hmac.exe 262 -test_pkcs5.exe 263 -test_pkcs12.exe 264 -test_rsa.exe 265 -test_dh.exe 266 cd $(SRCDIR) 267 268test:: $(TESTLIB) test-binaries test-run 269 270test-exports: 271 $(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libhcrypto-exports.def 272 273test:: test-exports 274