The unified diff between revisions [47be11e3..] and [a9e517d7..] is displayed below. It can also be downloaded as a raw diff.
#
#
# delete "PLAN"
#
# delete "ampi.c"
#
# delete "base64.c"
#
# delete "gf.c"
#
# delete "keyring.c"
#
# delete "mycrypt_gf.h"
#
# delete "rsa.c"
#
# delete "rsa_sys.c"
#
# delete "serpent.c"
#
# delete "strings.c"
#
# delete "tommath.h"
#
# patch "Makefile.in"
# from [9a01ea897e1cb03edb075885b76a57e3e8e6d79f]
# to [34b2c7a451c9a3cd934647346c6ec687fe740e60]
#
# patch "src/ciphers/des.c"
# from [4824c110130a61c8d47b376aa4015c9994ade590]
# to [94725b9892450212bf776fd4b701fdc40334ef0a]
#
# patch "src/ciphers/twofish/twofish.c"
# from [955a08c6d734bb659b32b2d85b5ab96443525b6f]
# to [e92756325032dd319325d4144769aff494bb3890]
#
# patch "src/hashes/md5.c"
# from [f6e422f7f081c8fa0c337ea2ffc61683ee9b1e09]
# to [e80689df83c9bd087ba1b23c0784a93d931f2856]
#
# patch "src/hashes/sha1.c"
# from [11d80424b8c7ba077b6b5d8d11f21090012f49be]
# to [928cfd671d995ed512e398a050c8cd21c69a3de8]
#
# patch "src/misc/crypt/crypt.c"
# from [241103c9efc2c8e19c41f0fbb71ebd4fa94d634d]
# to [e259676da511645310599e62a08a44330c83624e]
#
============================================================
--- Makefile.in 9a01ea897e1cb03edb075885b76a57e3e8e6d79f
+++ Makefile.in 34b2c7a451c9a3cd934647346c6ec687fe740e60
@@ -4,7 +4,7 @@
# Modified by Clay Culver
# The version
-VERSION=0.99
+VERSION=1.02
VPATH=@srcdir@
srcdir=@srcdir@
@@ -19,30 +19,39 @@ srcdir=@srcdir@
# Compilation flags. Note the += does not write over the user's CFLAGS!
# The rest of the flags come from the parent Dropbear makefile
-CFLAGS += -c -I$(srcdir)
-# -Werror
+CFLAGS += -c -I$(srcdir)/src/headers/ -I$(srcdir)
+# additional warnings (newer GCC 3.4 and higher)
+#CFLAGS += -Wsystem-headers -Wdeclaration-after-statement -Wbad-function-cast -Wcast-align -Wstrict-prototypes -Wmissing-prototypes \
+# -Wmissing-declarations -Wpointer-arith
+
# optimize for SPEED
-#CFLAGS += -O3 -funroll-all-loops
+#CFLAGS += -O3 -funroll-loops
-#add -fomit-frame-pointer. hinders debugging!
-#CFLAGS += -fomit-frame-pointer
+# add -fomit-frame-pointer. hinders debugging!
+CFLAGS += -fomit-frame-pointer
# optimize for SIZE
-#CFLAGS += -Os -DSMALL_CODE
+#CFLAGS += -Os -DLTC_SMALL_CODE
+# older GCCs can't handle the "rotate with immediate" ROLc/RORc/etc macros
+# define this to help
+#CFLAGS += -DLTC_NO_ROLC
+
# compile for DEBUGING (required for ccmalloc checking!!!)
-#CFLAGS += -g3
+#CFLAGS += -g3 -DLTC_NO_ASM
-#These flags control how the library gets built.
-
#Output filenames for various targets.
LIBNAME=libtomcrypt.a
+LIBTEST=testprof/libtomcrypt_prof.a
HASH=hashsum
CRYPT=encrypt
SMALL=small
PROF=x86_prof
TV=tv_gen
+MULTI=multi
+TIMING=timing
+TEST=test
#LIBPATH-The directory for libtomcrypt to be installed to.
#INCPATH-The directory to install the header files for libtomcrypt.
@@ -52,49 +61,64 @@ DATAPATH=/usr/share/doc/libtomcrypt/pdf
INCPATH=/usr/include
DATAPATH=/usr/share/doc/libtomcrypt/pdf
+#Who do we install as?
+USER=root
+GROUP=wheel
+
#List of objects to compile.
#Leave MPI built-in or force developer to link against libtommath?
-#MPIOBJECT=mpi.o
+#MPIOBJECT=src/misc/mpi/mpi.o
#Dropbear uses libtommath
MPIOBJECT=
-OBJECTS=error_to_string.o mpi_to_ltc_error.o base64_encode.o base64_decode.o \
-\
-crypt.o crypt_find_cipher.o crypt_find_hash_any.o \
-crypt_hash_is_valid.o crypt_register_hash.o crypt_unregister_prng.o \
-crypt_argchk.o crypt_find_cipher_any.o crypt_find_hash_id.o \
-crypt_prng_descriptor.o crypt_register_prng.o crypt_cipher_descriptor.o \
-crypt_find_cipher_id.o crypt_find_prng.o crypt_prng_is_valid.o \
-crypt_unregister_cipher.o crypt_cipher_is_valid.o crypt_find_hash.o \
-crypt_hash_descriptor.o crypt_register_cipher.o crypt_unregister_hash.o \
-\
-rand_prime.o is_prime.o \
-\
-aes.o \
-\
-blowfish.o des.o \
-twofish.o \
-\
-md5.o sha1.o sha512.o \
-\
-cbc_start.o cbc_encrypt.o cbc_decrypt.o cbc_getiv.o cbc_setiv.o \
-ecb_start.o ecb_encrypt.o ecb_decrypt.o \
-\
-hash_memory.o \
-\
-hmac_done.o hmac_file.o hmac_init.o hmac_memory.o hmac_process.o hmac_test.o \
-\
-burn_stack.o zeromem.o \
-\
-$(MPIOBJECT)
+OBJECTS=src/ciphers/aes/aes_enc.o $(MPIOBJECT) src/ciphers/aes/aes.o \
+src/ciphers/blowfish.o src/ciphers/des.o \
+src/ciphers/twofish/twofish.o \
+src/hashes/helper/hash_memory.o src/hashes/helper/hash_memory_multi.o \
+src/hashes/md5.o src/hashes/sha1.o src/hashes/sha2/sha256.o \
+src/hashes/sha2/sha512.o src/hashes/whirl/whirl.o src/mac/hmac/hmac_done.o \
+src/mac/hmac/hmac_file.o src/mac/hmac/hmac_init.o src/mac/hmac/hmac_memory.o \
+src/mac/hmac/hmac_memory_multi.o src/mac/hmac/hmac_process.o src/mac/hmac/hmac_test.o \
+src/misc/base64/base64_decode.o \
+src/misc/base64/base64_encode.o src/misc/burn_stack.o src/misc/crypt/crypt.o \
+src/misc/crypt/crypt_argchk.o src/misc/crypt/crypt_cipher_descriptor.o \
+src/misc/crypt/crypt_cipher_is_valid.o src/misc/crypt/crypt_find_cipher.o \
+src/misc/crypt/crypt_find_cipher_any.o src/misc/crypt/crypt_find_cipher_id.o \
+src/misc/crypt/crypt_find_hash.o src/misc/crypt/crypt_find_hash_any.o \
+src/misc/crypt/crypt_find_hash_id.o src/misc/crypt/crypt_find_prng.o \
+src/misc/crypt/crypt_hash_descriptor.o src/misc/crypt/crypt_hash_is_valid.o \
+src/misc/crypt/crypt_prng_descriptor.o src/misc/crypt/crypt_prng_is_valid.o \
+src/misc/crypt/crypt_register_cipher.o src/misc/crypt/crypt_register_hash.o \
+src/misc/crypt/crypt_register_prng.o src/misc/crypt/crypt_unregister_cipher.o \
+src/misc/crypt/crypt_unregister_hash.o src/misc/crypt/crypt_unregister_prng.o \
+src/misc/error_to_string.o src/misc/mpi/is_prime.o src/misc/mpi/mpi_to_ltc_error.o \
+src/misc/mpi/rand_prime.o src/misc/zeromem.o \
+src/modes/cbc/cbc_decrypt.o src/modes/cbc/cbc_done.o src/modes/cbc/cbc_encrypt.o \
+src/modes/cbc/cbc_getiv.o src/modes/cbc/cbc_setiv.o src/modes/cbc/cbc_start.o \
+src/modes/ctr/ctr_decrypt.o src/modes/ctr/ctr_done.o src/modes/ctr/ctr_encrypt.o \
+src/modes/ctr/ctr_getiv.o src/modes/ctr/ctr_setiv.o src/modes/ctr/ctr_start.o \
+src/modes/ecb/ecb_decrypt.o src/modes/ecb/ecb_done.o src/modes/ecb/ecb_encrypt.o \
+src/modes/ofb/ofb_start.o src/pk/asn1/der/der_decode_integer.o \
+src/prngs/rng_get_bytes.o \
+src/prngs/rng_make_prng.o src/prngs/sober128.o src/prngs/sprng.o src/prngs/yarrow.o
+HEADERS=src/headers/tommath_superclass.h src/headers/tomcrypt_cfg.h \
+src/headers/tomcrypt_mac.h src/headers/tomcrypt_macros.h \
+src/headers/tomcrypt_custom.h src/headers/tomcrypt_argchk.h \
+src/headers/tomcrypt_cipher.h src/headers/tomcrypt_pk.h \
+src/headers/tommath_class.h src/headers/ltc_tommath.h src/headers/tomcrypt_hash.h \
+src/headers/tomcrypt_misc.h src/headers/tomcrypt.h src/headers/tomcrypt_pkcs.h \
+src/headers/tomcrypt_prng.h testprof/tomcrypt_test.h
+
TESTOBJECTS=demos/test.o
HASHOBJECTS=demos/hashsum.o
CRYPTOBJECTS=demos/encrypt.o
SMALLOBJECTS=demos/small.o
-PROFS=demos/x86_prof.o
TVS=demos/tv_gen.o
+MULTIS=demos/multi.o
+TIMINGS=demos/timing.o
+TESTS=demos/test.o
#Files left over from making the crypt.pdf.
LEFTOVERS=*.dvi *.log *.aux *.toc *.idx *.ilg *.ind *.out
@@ -102,34 +126,31 @@ COMPRESSED=crypt-$(VERSION).tar.bz2 cryp
#Compressed filenames
COMPRESSED=crypt-$(VERSION).tar.bz2 crypt-$(VERSION).zip
-#Header files used by libtomcrypt.
-HEADERS=ltc_tommath.h mycrypt_cfg.h \
-mycrypt_misc.h mycrypt_prng.h mycrypt_cipher.h mycrypt_hash.h \
-mycrypt_macros.h mycrypt_pk.h mycrypt.h mycrypt_argchk.h \
-mycrypt_custom.h mycrypt_pkcs.h
-
#The default rule for make builds the libtomcrypt library.
default:library
#ciphers come in two flavours... enc+dec and enc
-aes_enc.o: aes.c aes_tab.c
- $(CC) $(CFLAGS) -DENCRYPT_ONLY -c $(srcdir)/aes.c -o aes_enc.o
+src/ciphers/aes/aes_enc.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c
+ $(CC) $(CFLAGS) -DENCRYPT_ONLY -c src/ciphers/aes/aes.c -o src/ciphers/aes/aes_enc.o
#These are the rules to make certain object files.
-aes.o: aes.c aes_tab.c
-twofish.o: twofish.c twofish_tab.c
-whirl.o: whirl.c whirltab.c
-ecc.o: ecc.c ecc_sys.c
-dh.o: dh.c dh_sys.c
-sha512.o: sha512.c sha384.c
-sha256.o: sha256.c sha224.c
+src/ciphers/aes/aes.o: src/ciphers/aes/aes.c src/ciphers/aes/aes_tab.c
+src/ciphers/twofish/twofish.o: src/ciphers/twofish/twofish.c src/ciphers/twofish/twofish_tab.c
+src/hashes/whirl/whirl.o: src/hashes/whirl/whirl.c src/hashes/whirl/whirltab.c
+src/pk/ecc/ecc.o: src/pk/ecc/ecc.c src/pk/ecc/ecc_sys.c
+src/pk/dh/dh.o: src/pk/dh/dh.c src/pk/dh/dh_sys.c
+src/hashes/sha2/sha512.o: src/hashes/sha2/sha512.c src/hashes/sha2/sha384.c
+src/hashes/sha2/sha256.o: src/hashes/sha2/sha256.c src/hashes/sha2/sha224.c
#This rule makes the libtomcrypt library.
-library: $(LIBNAME)
+library: $(LIBTEST) $(LIBNAME)
+$(LIBTEST):
+ cd testprof ; CFLAGS="$(CFLAGS)" make
+
$(LIBNAME): $(OBJECTS)
$(AR) $(ARFLAGS) $@ $(OBJECTS)
- $(RANLIB) $@
+ $(RANLIB) $(LIBNAME)
#This rule makes the hash program included with libtomcrypt
hashsum: library $(HASHOBJECTS)
@@ -143,45 +164,69 @@ small: library $(SMALLOBJECTS)
small: library $(SMALLOBJECTS)
$(CC) $(SMALLOBJECTS) $(LIBNAME) -o $(SMALL) $(WARN)
-x86_prof: library $(PROFS)
- $(CC) $(PROFS) $(LIBNAME) $(EXTRALIBS) -o $(PROF)
-
tv_gen: library $(TVS)
$(CC) $(TVS) $(LIBNAME) $(EXTRALIBS) -o $(TV)
+multi: library $(MULTIS)
+ $(CC) $(MULTIS) $(LIBNAME) -o $(MULTI)
+
+timing: library $(TIMINGS)
+ $(CC) $(TIMINGS) $(LIBTEST) $(LIBNAME) -o $(TIMING)
+
+test: library $(TESTS)
+ $(CC) $(TESTS) $(LIBTEST) $(LIBNAME) -o $(TEST)
+
+
#This rule installs the library and the header files. This must be run
#as root in order to have a high enough permission to write to the correct
#directories and to set the owner and group to root.
install: library docs
- install -d -g root -o root $(DESTDIR)$(LIBPATH)
- install -d -g root -o root $(DESTDIR)$(INCPATH)
- install -d -g root -o root $(DESTDIR)$(DATAPATH)
- install -g root -o root $(LIBNAME) $(DESTDIR)$(LIBPATH)
- install -g root -o root $(HEADERS) $(DESTDIR)$(INCPATH)
- install -g root -o root doc/crypt.pdf $(DESTDIR)$(DATAPATH)
+ install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH)
+ install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH)
+ install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(DATAPATH)
+ install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH)
+ install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH)
+ install -g $(GROUP) -o $(USER) doc/crypt.pdf $(DESTDIR)$(DATAPATH)
install_lib: library
- install -d -g root -o root $(DESTDIR)$(LIBPATH)
- install -d -g root -o root $(DESTDIR)$(INCPATH)
- install -g root -o root $(LIBNAME) $(DESTDIR)$(LIBPATH)
- install -g root -o root $(HEADERS) $(DESTDIR)$(INCPATH)
+ install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(LIBPATH)
+ install -d -g $(GROUP) -o $(USER) $(DESTDIR)$(INCPATH)
+ install -g $(GROUP) -o $(USER) $(LIBNAME) $(DESTDIR)$(LIBPATH)
+ install -g $(GROUP) -o $(USER) $(HEADERS) $(DESTDIR)$(INCPATH)
#This rule cleans the source tree of all compiled code, not including the pdf
#documentation.
clean:
- -rm -f $(OBJECTS) $(TESTOBJECTS) $(HASHOBJECTS) $(CRYPTOBJECTS) $(SMALLOBJECTS) $(LEFTOVERS) $(LIBNAME)
- -rm -f $(TEST) $(HASH) $(COMPRESSED) $(PROFS) $(PROF) $(TVS) $(TV)
- -rm -f *.la *.lo *.o *.a *.dll *stackdump *.lib *.exe *.obj demos/*.obj demos/*.o *.bat *.txt *.il *.da demos/*.il demos/*.da *.dyn *.dpi \
- *.gcda *.gcno demos/*.gcno demos/*.gcda *~ doc/*
- -cd demos/test && make clean
- -rm -rf .libs demos/.libs demos/test/.libs
+ rm -f `find . -type f | grep "[.]o" | xargs`
+ rm -f `find . -type f | grep "[.]lo" | xargs`
+ rm -f `find . -type f | grep "[.]a" | xargs`
+ rm -f `find . -type f | grep "[.]la" | xargs`
+ rm -f `find . -type f | grep "[.]obj" | xargs`
+ rm -f `find . -type f | grep "[.]lib" | xargs`
+ rm -f `find . -type f | grep "[.]exe" | xargs`
+ rm -f `find . -type f | grep "[.]gcda" | xargs`
+ rm -f `find . -type f | grep "[.]gcno" | xargs`
+ rm -f `find . -type f | grep "[.]il" | xargs`
+ rm -f `find . -type f | grep "[.]dyn" | xargs`
+ rm -f `find . -type f | grep "[.]dpi" | xargs`
+ rm -rf `find . -type d | grep "[.]libs" | xargs`
+ rm -f crypt.aux crypt.dvi crypt.idx crypt.ilg crypt.ind crypt.log crypt.toc
+ rm -f $(TV) $(PROF) $(SMALL) $(CRYPT) $(HASHSUM) $(MULTI) $(TIMING) $(TEST)
+ rm -rf doc/doxygen
+ rm -f doc/*.pdf
+
+#build the doxy files (requires Doxygen, tetex and patience)
+doxy:
+ doxygen
+ cd doc/doxygen/latex ; make ; mv -f refman.pdf ../../.
+ echo The huge doxygen PDF should be available as doc/refman.pdf
#This builds the crypt.pdf file. Note that the rm -f *.pdf has been removed
#from the clean command! This is because most people would like to keep the
#nice pre-compiled crypt.pdf that comes with libtomcrypt! We only need to
#delete it if we are rebuilding it.
docs: crypt.tex
- -rm -f doc/crypt.pdf $(LEFTOVERS)
+ rm -f doc/crypt.pdf $(LEFTOVERS)
echo "hello" > crypt.ind
latex crypt > /dev/null
latex crypt > /dev/null
@@ -189,7 +234,7 @@ docs: crypt.tex
latex crypt > /dev/null
dvipdf crypt
mv -ivf crypt.pdf doc/crypt.pdf
- -rm -f $(LEFTOVERS)
+ rm -f $(LEFTOVERS)
docdvi: crypt.tex
echo hello > crypt.ind
@@ -198,21 +243,15 @@ docdvi: crypt.tex
makeindex crypt.idx
latex crypt > /dev/null
-#pretty build
-pretty:
- perl pretty.build
+#zipup the project (take that!)
+no_oops: clean
+ cd .. ; cvs commit
-#for GCC 3.4+
-profiled:
- make clean
- make CFLAGS="$(CFLAGS) -fprofile-generate" EXTRALIBS=-lgcov x86_prof
- ./x86_prof
- rm *.o *.a x86_prof
- make CFLAGS="$(CFLAGS) -fprofile-use" EXTRALIBS=-lgcov x86_prof
-
-#zipup the project (take that!)
-zipup: clean docs
+zipup: no_oops docs
cd .. ; rm -rf crypt* libtomcrypt-$(VERSION) ; mkdir libtomcrypt-$(VERSION) ; \
+ cp -R ./libtomcrypt/* ./libtomcrypt-$(VERSION)/ ; \
+ cd libtomcrypt-$(VERSION) ; rm -rf `find . -type d | grep CVS | xargs` ; cd .. ; \
+ tar -cjvf crypt-$(VERSION).tar.bz2 libtomcrypt-$(VERSION) ; \
+ zip -9r crypt-$(VERSION).zip libtomcrypt-$(VERSION) ; \
+ gpg -b -a crypt-$(VERSION).tar.bz2 ; gpg -b -a crypt-$(VERSION).zip ; \
+ mv -fv crypt* ~ ; rm -rf libtomcrypt-$(VERSION)
- cp -R ./libtomcrypt/* ./libtomcrypt-$(VERSION)/ ; tar -c libtomcrypt-$(VERSION)/* > crypt-$(VERSION).tar ; \
- bzip2 -9vv crypt-$(VERSION).tar ; zip -9 -r crypt-$(VERSION).zip libtomcrypt-$(VERSION)/* ; \
- gpg -b -a crypt-$(VERSION).tar.bz2 ; gpg -b -a crypt-$(VERSION).zip
============================================================
--- src/ciphers/des.c 4824c110130a61c8d47b376aa4015c9994ade590
+++ src/ciphers/des.c 94725b9892450212bf776fd4b701fdc40334ef0a
@@ -1856,6 +1856,7 @@ void des_done(symmetric_key *skey)
void des_done(symmetric_key *skey)
{
}
+#endif
/** Terminate the context
@param skey The scheduled key
@@ -1865,6 +1866,7 @@ void des3_done(symmetric_key *skey)
}
+#if 0
/**
Gets suitable key size
@param keysize [in/out] The length of the recommended key (in bytes). This function will store the suitable size back in this variable.
============================================================
--- src/ciphers/twofish/twofish.c 955a08c6d734bb659b32b2d85b5ab96443525b6f
+++ src/ciphers/twofish/twofish.c e92756325032dd319325d4144769aff494bb3890
@@ -578,7 +578,7 @@ void twofish_ecb_decrypt(const unsigned
b = RORc(b ^ (t2 + t1 + k[3]), 1);
t2 = g1_func(b, skey);
- t1 = g_func(a, key) + t2;
+ t1 = g_func(a, skey) + t2;
c = ROLc(c, 1) ^ (t1 + k[0]);
d = RORc(d ^ (t2 + t1 + k[1]), 1);
k -= 4;
============================================================
--- src/hashes/md5.c f6e422f7f081c8fa0c337ea2ffc61683ee9b1e09
+++ src/hashes/md5.c e80689df83c9bd087ba1b23c0784a93d931f2856
@@ -26,13 +26,10 @@ const struct ltc_hash_descriptor md5_des
64,
/* DER identifier */
-#if 0
- /* matt */
{ 0x30, 0x20, 0x30, 0x0C, 0x06, 0x08, 0x2A, 0x86,
0x48, 0x86, 0xF7, 0x0D, 0x02, 0x05, 0x05, 0x00,
0x04, 0x10 },
18,
-#endif
&md5_init,
&md5_process,
============================================================
--- src/hashes/sha1.c 11d80424b8c7ba077b6b5d8d11f21090012f49be
+++ src/hashes/sha1.c 928cfd671d995ed512e398a050c8cd21c69a3de8
@@ -25,13 +25,9 @@ const struct ltc_hash_descriptor sha1_de
20,
64,
-#if 0
- /* matt */
- /* DER identifier */
{ 0x30, 0x21, 0x30, 0x09, 0x06, 0x05, 0x2B, 0x0E,
0x03, 0x02, 0x1A, 0x05, 0x00, 0x04, 0x14 },
15,
-#endif
&sha1_init,
&sha1_process,
============================================================
--- src/misc/crypt/crypt.c 241103c9efc2c8e19c41f0fbb71ebd4fa94d634d
+++ src/misc/crypt/crypt.c e259676da511645310599e62a08a44330c83624e
@@ -15,6 +15,7 @@
Build strings, Tom St Denis
*/
+/*
const char *crypt_build_settings =
"LibTomCrypt " SCRYPT " (Tom St Denis, tomstdenis@gmail.com)\n"
"LibTomCrypt is public domain software.\n"