123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273 |
- # MAKEFILE for MS Windows (nmake + Windows SDK)
- #
- # BEWARE: variables OBJECTS, TOBJECTS, HEADERS, VERSION /updatemakes.sh
- ### USAGE:
- # Open a command prompt with WinSDK variables set and start:
- #
- # nmake -f makefile.msvc all
- # test.exe
- # nmake -f makefile.msvc PREFIX=c:\devel\libtom install
- #
- #Or:
- #
- # nmake -f makefile.msvc CFLAGS= EXTRALIBS=c:\path\to\libtommath\tommath.lib all
- #
- #The following can be overridden from command line e.g. make -f makefile.msvc CC=gcc ARFLAGS=rcs
- PREFIX = c:\devel
- CFLAGS = / /DUSE_LTM / /I../
- EXTRALIBS /libtommath/
- #Compilation
- LTC_CFLAGS /nologo //headers/ /Itests/ /D_CRT_SECURE_NO_WARNINGS / /DLTC_SOURCE /
- LTC_LDFLAGS
- VERSION=1.18.2
- #Libraries
- LIBMAIN_S
- #List
- OBJECTS=src/ciphers/aes/aes.obj src/ciphers/aes/aes_enc.obj /ciphers//ciphers/
- src/ciphers/camellia.obj /ciphers//ciphers//ciphers//ciphers/
- src/ciphers/kseed.obj /ciphers//ciphers//ciphers//ciphers/
- src/ciphers/rc6.obj /ciphers//safer.obj src//safer//ciphers/
- src/ciphers/twofish/twofish.obj src/ciphers/xtea.obj src/encauth/ccm/ccm_add_aad.obj
- src/encauth/ccm/ccm_add_nonce.obj src/encauth/ccm/ccm_done.obj /encauth//ccm_init.obj \
- src//ccm//encauth//ccm_process.obj src//ccm/
- src/encauth/ccm/ccm_test.obj src/encauth/chachapoly/chacha20poly1305_add_aad.obj
- src/encauth/chachapoly/chacha20poly1305_decrypt.obj src/encauth/chachapoly/chacha20poly1305_done.obj
- src/encauth/chachapoly/chacha20poly1305_encrypt.obj src/encauth/chachapoly/chacha20poly1305_init.obj
- src/encauth/chachapoly/chacha20poly1305_memory.obj src/encauth/chachapoly/chacha20poly1305_setiv.obj
- src/encauth/chachapoly/chacha20poly1305_setiv_rfc7905.obj \
- src/encauth/chachapoly/chacha20poly1305_test.obj /encauth//eax_addheader.obj \
- src//eax//encauth//eax_decrypt_verify_memory.obj src//eax/
- src/encauth/eax/eax_encrypt.obj src/encauth/eax/eax_encrypt_authenticate_memory.obj
- src/encauth/eax/eax_init.obj src/encauth/eax/eax_test.obj /encauth//gcm_add_aad.obj \
- src//gcm//encauth//gcm_done.obj src//gcm/
- src/encauth/gcm/gcm_init.obj src/encauth/gcm/gcm_memory.obj /encauth//gcm_mult_h.obj \
- src//gcm//encauth//gcm_reset.obj src//gcm/
- src/encauth/ocb/ocb_decrypt.obj src/encauth/ocb/ocb_decrypt_verify_memory.obj
- src/encauth/ocb/ocb_done_decrypt.obj src/encauth/ocb/ocb_done_encrypt.obj /encauth//ocb_encrypt.obj \
- src//ocb//encauth//ocb_init.obj src//ocb/
- src/encauth/ocb/ocb_shift_xor.obj src/encauth/ocb/ocb_test.obj /encauth//s_ocb_done.obj \
- src//ocb3//encauth//ocb3_decrypt.obj src//ocb3/
- src/encauth/ocb3/ocb3_decrypt_verify_memory.obj src/encauth/ocb3/ocb3_done.obj
- src/encauth/ocb3/ocb3_encrypt.obj src/encauth/ocb3/ocb3_encrypt_authenticate_memory.obj
- src/encauth/ocb3/ocb3_encrypt_last.obj src/encauth/ocb3/ocb3_init.obj /encauth//ocb3_int_ntz.obj \
- src//ocb3//encauth//ocb3_test.obj src//blake2b.obj \
- src//blake2s.obj src//chc//hashes//hash_file.obj \
- src//helper//hashes//hash_memory.obj \
- src//helper//hashes//hashes//hashes/
- src/hashes/rmd128.obj /hashes//hashes//hashes//hashes/
- src/hashes/sha2/sha224.obj src/hashes/sha2/sha256.obj /hashes//sha384.obj src//sha2/
- src/hashes/sha2/sha512_224.obj src/hashes/sha2/sha512_256.obj /hashes//hashes/
- src/hashes/tiger.obj /hashes//whirl.obj src//blake2/
- src/mac/blake2/blake2bmac_file.obj src/mac/blake2/blake2bmac_memory.obj
- src/mac/blake2/blake2bmac_memory_multi.obj src/mac/blake2/blake2bmac_test.obj /mac//blake2smac.obj \
- src//blake2//mac//blake2smac_memory.obj \
- src//blake2//mac//blake2smac_test.obj src//f9/
- src/mac/f9/f9_file.obj src/mac/f9/f9_init.obj /mac//f9_memory.obj src//f9/
- src/mac/f9/f9_process.obj src/mac/f9/f9_test.obj /mac//hmac_done.obj src//hmac/
- src/mac/hmac/hmac_init.obj src/mac/hmac/hmac_memory.obj /mac//hmac_memory_multi.obj \
- src//hmac//mac//hmac_test.obj src//omac//mac//omac_file.obj \
- src//omac//mac//omac_memory.obj src//omac/
- src/mac/omac/omac_process.obj src/mac/omac/omac_test.obj /mac//pelican.obj \
- src//pelican//mac//pelican_test.obj src//pmac/
- src/mac/pmac/pmac_file.obj src/mac/pmac/pmac_init.obj /mac//pmac_memory.obj \
- src//pmac//mac//pmac_ntz.obj src//pmac/
- src/mac/pmac/pmac_shift_xor.obj src/mac/pmac/pmac_test.obj /mac//poly1305.obj \
- src//poly1305//mac//poly1305_memory.obj \
- src//poly1305//mac//poly1305_test.obj src//xcbc/
- src/mac/xcbc/xcbc_file.obj src/mac/xcbc/xcbc_init.obj /mac//xcbc_memory.obj \
- src//xcbc//mac//xcbc_process.obj src//xcbc/
- src/math/fp/ltc_ecc_fp_mulmod.obj src/math/gmp_desc.obj src/math/ltm_desc.obj src/math/multi.obj \
- src/math/radix_to_bin.obj src/math/rand_bn.obj src/math/rand_prime.obj src/math/tfm_desc.obj src/misc/adler32.obj \
- src/misc/base64/base64_decode.obj /misc//base64_encode.obj src//burn_stack.obj \
- src//compare_testvector.obj src//crc32.obj src//crypt//misc//crypt_argchk.obj \
- src//crypt//misc//crypt_cipher_is_valid.obj \
- src//crypt//misc//crypt_find_cipher.obj \
- src//crypt//misc//crypt_find_cipher_id.obj \
- src//crypt//misc//crypt_find_hash_any.obj \
- src//crypt//misc//crypt_find_hash_oid.obj \
- src//crypt//misc//crypt_fsa.obj src//crypt/
- src/misc/crypt/crypt_hash_is_valid.obj src/misc/crypt/crypt_inits.obj
- src/misc/crypt/crypt_ltc_mp_descriptor.obj src/misc/crypt/crypt_prng_descriptor.obj
- src/misc/crypt/crypt_prng_is_valid.obj src/misc/crypt/crypt_prng_rng_descriptor.obj
- src/misc/crypt/crypt_register_all_ciphers.obj src/misc/crypt/crypt_register_all_hashes.obj
- src/misc/crypt/crypt_register_all_prngs.obj src/misc/crypt/crypt_register_cipher.obj
- src/misc/crypt/crypt_register_hash.obj src/misc/crypt/crypt_register_prng.obj /misc//crypt_sizes.obj \
- src//crypt//misc//crypt_unregister_hash.obj \
- src//crypt//misc//misc//hkdf.obj \
- src//hkdf//misc//misc//misc//pkcs_5_1.obj \
- src//pkcs5//misc//pkcs_5_test.obj src//zeromem.obj src//cbc/
- src/modes/cbc/cbc_done.obj src/modes/cbc/cbc_encrypt.obj /modes//cbc_getiv.obj \
- src//cbc//modes//cbc_start.obj src//cfb/
- src/modes/cfb/cfb_done.obj src/modes/cfb/cfb_encrypt.obj /modes//cfb_getiv.obj \
- src//cfb//modes//cfb_start.obj src//ctr/
- src/modes/ctr/ctr_done.obj src/modes/ctr/ctr_encrypt.obj /modes//ctr_getiv.obj \
- src//ctr//modes//ctr_start.obj src//ctr/
- src/modes/ecb/ecb_decrypt.obj src/modes/ecb/ecb_done.obj /modes//ecb_encrypt.obj \
- src//ecb//modes//f8_decrypt.obj src//f8//modes//f8_encrypt.obj \
- src//f8//modes//f8_setiv.obj src//f8//modes//f8_test_mode.obj \
- src//lrw//modes//lrw_done.obj src//lrw/
- src/modes/lrw/lrw_getiv.obj src/modes/lrw/lrw_process.obj /modes//lrw_setiv.obj \
- src//lrw//modes//lrw_test.obj src//ofb//modes//ofb_done.obj \
- src//ofb//modes//ofb_getiv.obj src//ofb/
- src/modes/ofb/ofb_start.obj src/modes/xts/xts_decrypt.obj /modes//xts_done.obj \
- src//xts//modes//xts_init.obj src//xts/
- src/modes/xts/xts_test.obj src/pk/asn1/der/bit/der_decode_bit_string.obj
- src/pk/asn1/der/bit/der_decode_raw_bit_string.obj src/pk/asn1/der/bit/der_encode_bit_string.obj
- src/pk/asn1/der/bit/der_encode_raw_bit_string.obj src/pk/asn1/der/bit/der_length_bit_string.obj
- src/pk/asn1/der/boolean/der_decode_boolean.obj src/pk/asn1/der/boolean/der_encode_boolean.obj
- src/pk/asn1/der/boolean/der_length_boolean.obj src/pk/asn1/der/choice/der_decode_choice.obj
- src/pk/asn1/der/generalizedtime/der_decode_generalizedtime.obj \
- src/pk/asn1/der/generalizedtime/der_encode_generalizedtime.obj
- src/pk/asn1/der/generalizedtime/der_length_generalizedtime.obj \
- src/pk/asn1/der/ia5/der_decode_ia5_string.obj /pk//der//der_encode_ia5_string.obj \
- src//asn1//ia5//pk//der//der_decode_integer.obj \
- src//asn1//integer//pk//der//der_length_integer.obj \
- src//asn1//object_identifier/
- src/pk/asn1/der/object_identifier/der_encode_object_identifier.obj \
- src/pk/asn1/der/object_identifier/der_length_object_identifier.obj
- src/pk/asn1/der/octet/der_decode_octet_string.obj src/pk/asn1/der/octet/der_encode_octet_string.obj
- src/pk/asn1/der/octet/der_length_octet_string.obj \
- src/pk/asn1/der/printable_string/der_decode_printable_string.obj
- src/pk/asn1/der/printable_string/der_encode_printable_string.obj \
- src/pk/asn1/der/printable_string/der_length_printable_string.obj
- src/pk/asn1/der/sequence/der_decode_sequence_ex.obj \
- src/pk/asn1/der/sequence/der_decode_sequence_flexi.obj
- src/pk/asn1/der/sequence/der_decode_sequence_multi.obj \
- src/pk/asn1/der/sequence/der_decode_subject_public_key_info.obj
- src/pk/asn1/der/sequence/der_encode_sequence_ex.obj \
- src/pk/asn1/der/sequence/der_encode_sequence_multi.obj
- src/pk/asn1/der/sequence/der_encode_subject_public_key_info.obj \
- src/pk/asn1/der/sequence/der_length_sequence.obj /pk//der//der_sequence_free.obj \
- src//asn1//sequence//pk//der//der_encode_set.obj \
- src//asn1//set//pk//der//der_decode_short_integer.obj \
- src//asn1//short_integer/
- src/pk/asn1/der/short_integer/der_length_short_integer.obj \
- src/pk/asn1/der/teletex_string/der_decode_teletex_string.obj
- src/pk/asn1/der/teletex_string/der_length_teletex_string.obj \
- src/pk/asn1/der/utctime/der_decode_utctime.obj /pk//der//der_encode_utctime.obj \
- src//asn1//utctime//pk//der//der_decode_utf8_string.obj \
- src//asn1//utf8//pk//der//der_length_utf8_string.obj \
- src//dh//pk//dh_check_pubkey.obj src//dh//pk//dh_export_key.obj \
- src//dh//pk//dh_generate_key.obj src//dh//pk//dh_set.obj \
- src//dh//pk//dh_shared_secret.obj src//dsa/
- src/pk/dsa/dsa_encrypt_key.obj src/pk/dsa/dsa_export.obj /pk//dsa_free.obj \
- src//dsa//pk//dsa_generate_pqg.obj src//dsa/
- src/pk/dsa/dsa_make_key.obj src/pk/dsa/dsa_set.obj /pk//dsa_set_pqg_dsaparam.obj \
- src//dsa//pk//dsa_sign_hash.obj src//dsa/
- src/pk/dsa/dsa_verify_key.obj src/pk/ecc/ecc.obj /pk//ecc_ansi_x963_export.obj \
- src//ecc//pk//ecc_decrypt_key.obj src//ecc/
- src/pk/ecc/ecc_export.obj src/pk/ecc/ecc_free.obj /pk//ecc_get_size.obj src//ecc/
- src/pk/ecc/ecc_make_key.obj src/pk/ecc/ecc_shared_secret.obj /pk//ecc_sign_hash.obj \
- src//ecc//pk//ecc_test.obj src//ecc/
- src/pk/ecc/ltc_ecc_is_valid_idx.obj src/pk/ecc/ltc_ecc_map.obj /pk//ltc_ecc_mul2add.obj \
- src//ecc//pk//ltc_ecc_mulmod_timing.obj src//ecc/
- src/pk/ecc/ltc_ecc_projective_add_point.obj src/pk/ecc/ltc_ecc_projective_dbl_point.obj
- src/pk/katja/katja_decrypt_key.obj src/pk/katja/katja_encrypt_key.obj /pk//katja_export.obj \
- src//katja//pk//katja_free.obj src//katja/
- src/pk/katja/katja_make_key.obj src/pk/pkcs1/pkcs_1_i2osp.obj /pk//pkcs_1_mgf1.obj \
- src//pkcs1//pk//pkcs_1_oaep_encode.obj src//pkcs1/
- src/pk/pkcs1/pkcs_1_pss_decode.obj src/pk/pkcs1/pkcs_1_pss_encode.obj /pk//pkcs_1_v1_5_decode.obj \
- src//pkcs1//pk//rsa_decrypt_key.obj src//rsa/
- src/pk/rsa/rsa_export.obj src/pk/rsa/rsa_exptmod.obj /pk//rsa_free.obj src//rsa/
- src/pk/rsa/rsa_import.obj src/pk/rsa/rsa_import_pkcs8.obj /pk//rsa_import_x509.obj \
- src//rsa//pk//rsa_set.obj src//rsa/
- src/pk/rsa/rsa_sign_saltlen_get.obj src/pk/rsa/rsa_verify_hash.obj /prngs//prngs/
- src/prngs/rc4.obj /prngs//prngs//prngs/
- src/prngs/sprng.obj /prngs//stream//chacha_crypt.obj src//chacha/
- src/stream/chacha/chacha_ivctr32.obj src/stream/chacha/chacha_ivctr64.obj
- src/stream/chacha/chacha_keystream.obj src/stream/chacha/chacha_setup.obj /stream//chacha_test.obj \
- src//rc4//stream//rc4_test.obj src//sober128/
- src/stream/sober128/sober128_test.obj
- #List of test objects to compile
- TOBJECTS=tests/base64_test.obj /cipher_hash_test.obj tests//der_test.obj tests/
- tests/dsa_test.obj tests/ecc_test.obj /file_test.obj tests//mac_test.obj tests/
- tests/modes_test.obj tests/mpi_test.obj /multi_test.obj tests//pkcs_1_eme_test.obj \
- tests//pkcs_1_oaep_test.obj tests//pkcs_1_test.obj \
- tests//rotate_test.obj tests//store_test.obj tests/
- #The
- HEADERS=src/headers/tomcrypt.h /headers//headers/
- src/headers/tomcrypt_cipher.h /headers//headers/
- src/headers/tomcrypt_mac.h /headers//headers/
- src/headers/tomcrypt_misc.h /headers//headers/
- src/headers/tomcrypt_prng.h
- #The
- default: $(LIBMAIN_S)
- #SPECIAL: AES
- src/ciphers/aes/aes_enc.obj: src/ciphers/aes/aes.c /ciphers//aes_tab.c
- $(CC) $(LTC_CFLAGS) / /c src//aes/ /Fosrc//aes/
- #SPECIAL: these
- src/ciphers/aes/aes.obj: src/ciphers/aes/aes.c /ciphers//aes_tab.c
- src//twofish//ciphers//twofish.c src//twofish/
- src/hashes/whirl/whirl.obj: src/hashes/whirl/whirl.c /hashes//whirltab.c
- src//sha2//hashes//sha512.c src//sha2/
- src/hashes/sha2/sha512_224.obj: src/hashes/sha2/sha512.c /hashes//sha512_224.c
- src//sha2//hashes//sha512.c src//sha2/
- src/hashes/sha2/sha256.obj: src/hashes/sha2/sha256.c /hashes//sha224.c
- #Dependencies on *.h
- $(OBJECTS): $(HEADERS)
- $(TOBJECTS): $(HEADERS) tests/
- .c.obj:
- $(CC) $(LTC_CFLAGS) /c $< /Fo$@
- #Create
- $(LIBMAIN_S): $(OBJECTS)
- lib /out:$(LIBMAIN_S) $(OBJECTS)
- #Demo tools/
- hashsum.exe: demos/hashsum.c tests/common.c
- cl /hashsum.c tests/ /Fe$@
- ltcrypt.exe: demos/
- cl /ltcrypt.c tests/ /Fe$@
- small.exe: demos/
- cl /small.c tests/ /Fe$@
- tv_gen.exe: demos/
- cl /tv_gen.c tests/ /Fe$@
- sizes.exe: demos/
- cl /sizes.c tests/ /Fe$@
- constants.exe: demos/
- cl /constants.c tests/ /Fe$@
- timing.exe: demos/
- cl /timing.c tests/ /Fe$@
- #Tests
- test.exe: $(LIBMAIN_S) $(TOBJECTS)
- cl $(LTC_CFLAGS) $(TOBJECTS) $(LIBMAIN_S) $(LTC_LDFLAGS) /
- @echo
- all: $(LIBMAIN_S) hashsum.exe
- test: test.exe
- clean:
- @-cmd /c del /
- @-cmd /c del / /S *.OBJ *.LIB *.EXE *.DLL 2>nul
- #Install the library + headers
- install: $(LIBMAIN_S)
- cmd /
- cmd /c if not exist mkdir
- cmd /
- copy /Y $(LIBMAIN_S)
- copy /
- #Install
- install_bins: hashsum
- cmd /c if not exist mkdir
- copy /
- #Install
- install_docs: doc/crypt.pdf
- cmd /c
- copy /Y doc\crypt.pdf
|