1######################################################################## 2# 3# Copyright (c) 2009, 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 36intcflags=-DKRB5 -DASN1_LIB -I$(HCRYPTOINCLUDEDIR) -DUSE_HCRYPTO_LTM=1 37 38!include ../../windows/NTMakefile.w32 39 40# Do dependencies first 41 42all:: subdirs 43 44clean:: clean-subdirs 45 46test:: test-subdirs 47 48# Include files 49 50HCRYPTOINCLUDEDIR=$(INCDIR)\hcrypto 51 52INCFILES= \ 53 $(HCRYPTOINCLUDEDIR)\aes.h \ 54 $(HCRYPTOINCLUDEDIR)\bn.h \ 55 $(HCRYPTOINCLUDEDIR)\des.h \ 56 $(HCRYPTOINCLUDEDIR)\dh.h \ 57 $(HCRYPTOINCLUDEDIR)\dsa.h \ 58 $(HCRYPTOINCLUDEDIR)\ec.h \ 59 $(HCRYPTOINCLUDEDIR)\ecdh.h \ 60 $(HCRYPTOINCLUDEDIR)\ecdsa.h \ 61 $(HCRYPTOINCLUDEDIR)\engine.h \ 62 $(HCRYPTOINCLUDEDIR)\evp.h \ 63 $(HCRYPTOINCLUDEDIR)\evp-hcrypto.h \ 64 $(HCRYPTOINCLUDEDIR)\evp-cc.h \ 65 $(HCRYPTOINCLUDEDIR)\hmac.h \ 66 $(HCRYPTOINCLUDEDIR)\md2.h \ 67 $(HCRYPTOINCLUDEDIR)\md4.h \ 68 $(HCRYPTOINCLUDEDIR)\md5.h \ 69 $(HCRYPTOINCLUDEDIR)\pkcs12.h \ 70 $(HCRYPTOINCLUDEDIR)\rand.h \ 71 $(HCRYPTOINCLUDEDIR)\randi.h \ 72 $(HCRYPTOINCLUDEDIR)\rc2.h \ 73 $(HCRYPTOINCLUDEDIR)\rc4.h \ 74 $(HCRYPTOINCLUDEDIR)\rsa.h \ 75 $(HCRYPTOINCLUDEDIR)\sha.h \ 76 $(HCRYPTOINCLUDEDIR)\ui.h 77 78mkincdir: 79!if !exist($(HCRYPTOINCLUDEDIR)) 80 $(MKDIR) $(HCRYPTOINCLUDEDIR) 81!endif 82 83{}.h{$(HCRYPTOINCLUDEDIR)}.h: 84 $(CP) $** $@ 85 86all:: mkincdir 87 88all:: $(INCFILES) 89 90# libhcrypto 91 92libhcrypto_OBJs = \ 93 $(OBJ)\aes.obj \ 94 $(OBJ)\bn.obj \ 95 $(OBJ)\camellia.obj \ 96 $(OBJ)\camellia-ntt.obj \ 97 $(OBJ)\common.obj \ 98 $(OBJ)\des.obj \ 99 $(OBJ)\dh.obj \ 100 $(OBJ)\dh-ltm.obj \ 101 $(OBJ)\dh-tfm.obj \ 102 $(OBJ)\dsa.obj \ 103 $(OBJ)\evp.obj \ 104 $(OBJ)\evp-hcrypto.obj \ 105 $(OBJ)\evp-cc.obj \ 106 $(OBJ)\engine.obj \ 107 $(OBJ)\hmac.obj \ 108 $(OBJ)\md2.obj \ 109 $(OBJ)\md4.obj \ 110 $(OBJ)\md5.obj \ 111 $(OBJ)\pkcs5.obj \ 112 $(OBJ)\pkcs12.obj \ 113 $(OBJ)\rand-w32.obj \ 114 $(OBJ)\rand.obj \ 115 $(OBJ)\rc2.obj \ 116 $(OBJ)\rc4.obj \ 117 $(OBJ)\rijndael-alg-fst.obj \ 118 $(OBJ)\rnd_keys.obj \ 119 $(OBJ)\rsa.obj \ 120 $(OBJ)\rsa-gmp.obj \ 121 $(OBJ)\rsa-ltm.obj \ 122 $(OBJ)\rsa-tfm.obj \ 123 $(OBJ)\sha.obj \ 124 $(OBJ)\sha256.obj \ 125 $(OBJ)\sha512.obj \ 126 $(OBJ)\ui.obj \ 127 $(OBJ)\validate.obj 128 129$(LIBHCRYPTO): $(libhcrypto_OBJs) 130 $(LIBCON) 131 132all:: $(LIBHCRYPTO) 133 134clean:: 135 -$(RM) $(LIBHCRYPTO) 136 137# Tests 138 139TESTLIB=$(OBJ)\libhctest.lib 140 141$(TESTLIB): \ 142 $(OBJ)\des.obj \ 143 $(OBJ)\ui.obj 144 $(LIBCON) 145 146test-binaries: \ 147 $(OBJ)\destest.exe \ 148 $(OBJ)\example_evp_cipher.exe \ 149 $(OBJ)\mdtest.exe \ 150 $(OBJ)\rc2test.exe \ 151 $(OBJ)\rctest.exe \ 152 $(OBJ)\test_bn.exe \ 153 $(OBJ)\test_cipher.exe \ 154 $(OBJ)\test_engine_dso.exe \ 155 $(OBJ)\test_hmac.exe \ 156 $(OBJ)\test_pkcs5.exe \ 157 $(OBJ)\test_pkcs12.exe \ 158 $(OBJ)\test_rsa.exe \ 159 $(OBJ)\test_dh.exe \ 160 $(OBJ)\test_rand.exe \ 161 $(OBJ)\test_crypto.sh 162 163$(OBJ)\destest.exe: $(OBJ)\destest.obj $(TESTLIB) $(LIBROKEN) 164 $(EXECONLINK) 165 $(EXEPREP_NODIST) 166 167$(OBJ)\example_evp_cipher.exe: $(OBJ)\example_evp_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) 168 $(EXECONLINK) 169 $(EXEPREP_NODIST) 170 171$(OBJ)\mdtest.exe: $(OBJ)\mdtest.obj $(LIBHEIMDAL) $(LIBROKEN) $(OBJ)\sha512.obj 172 $(EXECONLINK) 173 $(EXEPREP_NODIST) 174 175$(OBJ)\rc2test.exe: $(OBJ)\rc2test.obj $(LIBHEIMDAL) $(LIBROKEN) 176 $(EXECONLINK) 177 $(EXEPREP_NODIST) 178 179$(OBJ)\rctest.exe: $(OBJ)\rctest.obj $(LIBHEIMDAL) $(LIBROKEN) 180 $(EXECONLINK) 181 $(EXEPREP_NODIST) 182 183$(OBJ)\test_bn.exe: $(OBJ)\test_bn.obj $(LIBHEIMDAL) $(LIBROKEN) 184 $(EXECONLINK) 185 $(EXEPREP_NODIST) 186 187$(OBJ)\test_cipher.exe: $(OBJ)\test_cipher.obj $(TESTLIB) $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS) 188 $(EXECONLINK) 189 $(EXEPREP_NODIST) 190 191$(OBJ)\test_engine_dso.exe: $(OBJ)\test_engine_dso.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS) 192 $(EXECONLINK) 193 $(EXEPREP_NODIST) 194 195$(OBJ)\test_hmac.exe: $(OBJ)\test_hmac.obj $(LIBHEIMDAL) $(LIBROKEN) 196 $(EXECONLINK) 197 $(EXEPREP_NODIST) 198 199$(OBJ)\test_pkcs5.exe: $(OBJ)\test_pkcs5.obj $(LIBHEIMDAL) $(LIBROKEN) 200 $(EXECONLINK) 201 $(EXEPREP_NODIST) 202 203$(OBJ)\test_pkcs12.exe: $(OBJ)\test_pkcs12.obj $(LIBHEIMDAL) $(LIBROKEN) 204 $(EXECONLINK) 205 $(EXEPREP_NODIST) 206 207$(OBJ)\test_rsa.exe: $(OBJ)\test_rsa.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS) 208 $(EXECONLINK) 209 $(EXEPREP_NODIST) 210 211$(OBJ)\test_dh.exe: $(OBJ)\test_dh.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS) 212 $(EXECONLINK) 213 $(EXEPREP_NODIST) 214 215$(OBJ)\test_rand.exe: $(OBJ)\test_rand.obj $(LIBHEIMDAL) $(LIBROKEN) $(LIBVERS) 216 $(EXECONLINK) 217 $(EXEPREP_NODIST) 218 219SRCDIR2=$(SRCDIR:\=\\\\) 220 221$(OBJ)\test_crypto.sh: test_crypto.in NTMakefile 222 $(SED) -e "s,[@]srcdir[@],$(SRCDIR2),g" -e "s,[@]exeext[@],.exe,g" -e "s,\r,," < test_crypto.in > $@ || $(RM) $@ 223 224test-run: 225 cd $(OBJ) 226!ifdef SH 227 $(SH) test_crypto.sh 228!endif 229 destest.exe 230 mdtest.exe 231 rc2test.exe 232 rctest.exe 233 test_bn.exe 234 test_cipher.exe 235 test_engine_dso.exe 236 test_hmac.exe 237 test_pkcs5.exe 238 test_pkcs12.exe 239 test_rsa.exe 240 test_dh.exe 241 cd $(SRCDIR) 242 243test:: $(TESTLIB) test-binaries test-run 244 245test-exports: 246 $(PERL) ..\..\cf\w32-check-exported-symbols.pl --vs version-script.map --def libhcrypto-exports.def 247 248test:: test-exports 249