From 479cc9c261dcb3d83824d7c5dc17b9532406d3d6 Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Wed, 30 Aug 2006 23:30:00 +0000 Subject: [PATCH] added libtomcrypt-1.14 --- Doxyfile | 2 +- TODO | 2 + changes | 24 +++++++- crypt.tex | 58 ++++++++++++++++-- demos/timing.c | 7 --- doc/crypt.pdf | Bin 647443 -> 651500 bytes makefile | 6 +- makefile.shared | 6 +- notes/tech0005.txt | 2 +- notes/tech0007.txt | 2 +- src/ciphers/aes/aes.c | 1 - src/encauth/ccm/ccm_memory.c | 11 +++- src/encauth/gcm/gcm_memory.c | 20 +++++- src/encauth/gcm/gcm_mult_h.c | 10 ++- src/encauth/gcm/gcm_process.c | 8 +-- src/hashes/sha2/sha256.c | 2 +- src/headers/tomcrypt.h | 4 +- src/headers/tomcrypt_argchk.h | 4 +- src/headers/tomcrypt_cipher.h | 25 ++++---- src/headers/tomcrypt_custom.h | 32 +++++----- src/headers/tomcrypt_mac.h | 9 ++- src/mac/hmac/hmac_test.c | 2 +- src/misc/crypt/crypt.c | 10 +-- src/modes/cbc/cbc_decrypt.c | 2 +- src/modes/cbc/cbc_done.c | 2 +- src/modes/cbc/cbc_encrypt.c | 2 +- src/modes/cbc/cbc_getiv.c | 2 +- src/modes/cbc/cbc_setiv.c | 2 +- src/modes/cbc/cbc_start.c | 2 +- src/modes/cfb/cfb_decrypt.c | 2 +- src/modes/cfb/cfb_done.c | 2 +- src/modes/cfb/cfb_encrypt.c | 2 +- src/modes/cfb/cfb_getiv.c | 2 +- src/modes/cfb/cfb_setiv.c | 3 +- src/modes/cfb/cfb_start.c | 2 +- src/modes/ctr/ctr_decrypt.c | 2 +- src/modes/ctr/ctr_done.c | 2 +- src/modes/ctr/ctr_encrypt.c | 2 +- src/modes/ctr/ctr_getiv.c | 2 +- src/modes/ctr/ctr_setiv.c | 2 +- src/modes/ctr/ctr_start.c | 2 +- src/modes/ecb/ecb_decrypt.c | 2 +- src/modes/ecb/ecb_done.c | 2 +- src/modes/ecb/ecb_encrypt.c | 2 +- src/modes/ecb/ecb_start.c | 2 +- src/modes/f8/f8_start.c | 1 + src/modes/lrw/lrw_decrypt.c | 2 +- src/modes/lrw/lrw_done.c | 2 +- src/modes/lrw/lrw_encrypt.c | 2 +- src/modes/lrw/lrw_getiv.c | 2 +- src/modes/lrw/lrw_process.c | 2 +- src/modes/lrw/lrw_setiv.c | 2 +- src/modes/lrw/lrw_start.c | 2 +- src/modes/lrw/lrw_test.c | 2 +- src/modes/ofb/ofb_decrypt.c | 2 +- src/modes/ofb/ofb_done.c | 2 +- src/modes/ofb/ofb_encrypt.c | 2 +- src/modes/ofb/ofb_getiv.c | 2 +- src/modes/ofb/ofb_setiv.c | 2 +- src/modes/ofb/ofb_start.c | 2 +- .../der/sequence/der_decode_sequence_ex.c | 6 ++ testprof/modes_test.c | 18 +++--- testprof/tomcrypt_test.h | 7 ++- testprof/x86_prof.c | 12 ++-- 64 files changed, 240 insertions(+), 124 deletions(-) diff --git a/Doxyfile b/Doxyfile index 7c7e195..9a556c3 100644 --- a/Doxyfile +++ b/Doxyfile @@ -23,7 +23,7 @@ PROJECT_NAME = LibTomCrypt # This could be handy for archiving the generated documentation or # if some version control system is used. -PROJECT_NUMBER = 1.13 +PROJECT_NUMBER = 1.14 # The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute) # base path where the generated documentation will be put. diff --git a/TODO b/TODO index ce7fce1..429aa2e 100644 --- a/TODO +++ b/TODO @@ -1,2 +1,4 @@ - long term, start moving macros like CTR over to LTC_CTR to make LTC a bit more "drop-in-able". +- F8 mode could use some LTC_FAST love + diff --git a/changes b/changes index 2bfe328..51ff77c 100644 --- a/changes +++ b/changes @@ -1,3 +1,23 @@ +August 0x1E, 0x07D6 +v1.14 -- Renamed the chaining mode macros from XXX to LTC_XXX_MODE. Should help avoid polluting the macro name space. + -- clean up of SHA-256 + -- Chris Colman pointed out that der_decode_sequence_* allows LTC_ASN1_SETOF to accept SEQUENCEs and vice versa. + Decoder [non-flexi decoder that is] is more strict now and requires a match. + -- Steffen Jaeckel pointed out a typo in the user manual (re: rsa_exptmod). Fixed. This disproves the notion that + nobody reads it. :-) + -- Made GCM a bit more portable w.r.t. handling the CTR IV (e.g. & with 255) + -- Add LTC_VERBOSE if you really want to see what test is doing :-) + -- Added SSE2 support to GCM [use GCM_TABLES_SSE2 to enable], shaves 2 cycles per byte on Opteron processors + Shaved 4 cycles on a Prescott (Intel P4) + Requires you align your gcm_state on a 16 byte boundary, see gcm_memory() for more info + -- Added missing prototype for f8_test_mode() + -- two fixes to CCM for corner cases [L+noncelen > 15] and fixing the CTR pad to encrypt the CBC-MAC tag + -- Franz Glasner pointed out the ARGTYPE=4 is not actually valid. Fixed. + -- Fixed bug in f8_start() if your key < saltkey unspecified behaviour occurs. :-( + -- Documented F8 mode. Yeah, because you read the manual. + -- Minor updates to the technotes. + + June 17th, 2005 v1.13 -- Fixed to fortuna_start() to clean up state if an error occurs. Not really useful at this stage (sha256 can't fail) but useful if I ever make fortuna pluggable @@ -1464,6 +1484,6 @@ v0.02 -- Changed RC5 to only allow 12 to 24 rounds v0.01 -- We will call this the first version. /* $Source: /cvs/libtom/libtomcrypt/changes,v $ */ -/* $Revision: 1.213 $ */ -/* $Date: 2006/06/18 01:42:59 $ */ +/* $Revision: 1.224 $ */ +/* $Date: 2006/08/30 23:23:20 $ */ diff --git a/crypt.tex b/crypt.tex index 81ddaae..f6f3f91 100644 --- a/crypt.tex +++ b/crypt.tex @@ -47,7 +47,7 @@ \def\gap{\vspace{0.5ex}} \makeindex \begin{document} -\title{LibTomCrypt \\ Version 1.13} +\title{LibTomCrypt \\ Version 1.14} \author{Tom St Denis \\ \\ tomstdenis@gmail.com \\ @@ -1007,6 +1007,55 @@ To terminate the LRW state use the following: int lrw_done(symmetric_LRW *lrw); \end{verbatim} +\subsection{F8 Mode} +\index{F8 Mode} +The F8 Chaining mode (see RFC 3711 for instance) is yet another chaining mode for block ciphers. It behaves much like CTR mode in that it XORs a keystream +against the plaintext to encrypt. F8 mode comes with the additional twist that the counter value is secret, encrypted by a \textit{salt key}. We +initialize F8 mode with the fuollowing function call: + +\index{f8\_start()} +\begin{verbatim} +int f8_start( int cipher, const unsigned char *IV, + const unsigned char *key, int keylen, + const unsigned char *salt_key, int skeylen, + int num_rounds, symmetric_F8 *f8); +\end{verbatim} +This will start the F8 mode state using ``key'' as the secret key, ``IV'' as the counter. It uses the ``salt\_key`` as IV encryption key (``m'' in the RFC 3711). +The salt\_key can be shorter than the secret key but it should not be longer. + +To encrypt or decrypt data we use the following two functions: + +\index{f8\_encrypt()} \index{f8\_decrypt()} +\begin{verbatim} +int f8_encrypt(const unsigned char *pt, unsigned char *ct, + unsigned long len, symmetric_F8 *f8); + +int f8_decrypt(const unsigned char *ct, unsigned char *pt, + unsigned long len, symmetric_F8 *f8); +\end{verbatim} +These will encrypt or decrypt a variable length array of bytes using the F8 mode state specified. The length is specified in bytes and does not have to be a multiple +of the ciphers block size. + +To change or retrieve the current counter IV value use the following functions: + +\index{f8\_getiv()} +\index{f8\_setiv()} +\begin{verbatim} +int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8); +int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8); +\end{verbatim} +These work with the current IV value only and not the encrypted IV value specifed during the call to f8\_start(). The purpose of these two functions is to be +able to seek within a current session only. If you want to change the session IV you will have to call f8\_done() and then start a new state with +f8\_start(). + +To terminate an F8 state call the following function: + +\index{f8\_done()} +\begin{verbatim} +int f8_done(symmetric_F8 *f8); +\end{verbatim} + +\vbox{} \section{Encrypt and Authenticate Modes} \subsection{EAX Mode} @@ -2719,8 +2768,7 @@ To do raw work with the RSA function call: \begin{verbatim} int rsa_exptmod(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, - int which, prng_state *prng, int prng_idx, - rsa_key *key); + int which, rsa_key *key); \end{verbatim} This loads the bignum from ``in'' as a big endian word in the format PKCS specifies, raises it to either ``e'' or ``d'' and stores the result in ``out'' and the size of the result in ``outlen''. ``which'' is set to {\bf PK\_PUBLIC} to use ``e'' @@ -5241,5 +5289,5 @@ Since the function is given the entire RSA key (for private keys only) CRT is po \end{document} % $Source: /cvs/libtom/libtomcrypt/crypt.tex,v $ -% $Revision: 1.74 $ -% $Date: 2006/06/18 01:35:41 $ +% $Revision: 1.77 $ +% $Date: 2006/08/30 23:23:20 $ diff --git a/demos/timing.c b/demos/timing.c index fc76842..8313332 100644 --- a/demos/timing.c +++ b/demos/timing.c @@ -16,13 +16,6 @@ reg_algs(); extern ltc_math_descriptor EXT_MATH_LIB; ltc_mp = EXT_MATH_LIB; #endif -time_cipher(); -time_hash(); -time_encmacs(); -time_rsa(); -time_ecc(); -time_ecc(); -return 0; time_keysched(); time_cipher(); time_cipher2(); diff --git a/doc/crypt.pdf b/doc/crypt.pdf index feae4a718738106f448a91812839d76029c7287e..d1679d827e55c525288d32ddad07649e4db3791f 100644 GIT binary patch delta 95803 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
T8VATtClpK-B+Eexb8tv+WpTg?W+mx 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 diff --git a/makefile b/makefile index e55c666..d5d5ff8 100644 --- a/makefile +++ b/makefile @@ -4,7 +4,7 @@ # Modified by Clay Culver # The version -VERSION=1.13 +VERSION=1.14 # Compiler and Linker Names #CC=gcc @@ -367,5 +367,5 @@ zipup: no_oops docs # $Source: /cvs/libtom/libtomcrypt/makefile,v $ -# $Revision: 1.126 $ -# $Date: 2006/06/16 23:52:08 $ +# $Revision: 1.127 $ +# $Date: 2006/06/29 01:59:34 $ diff --git a/makefile.shared b/makefile.shared index 4bef699..934fd53 100644 --- a/makefile.shared +++ b/makefile.shared @@ -6,7 +6,7 @@ # Tom St Denis # The version -VERSION=0:113 +VERSION=0:114 # Compiler and Linker Names CC=libtool --mode=compile --tag=CC gcc @@ -265,5 +265,5 @@ timing: library testprof/$(LIBTEST) $(TIMINGS) gcc -o $(TIMING) $(TIMINGS) -ltomcrypt_prof -ltomcrypt $(EXTRALIBS) # $Source: /cvs/libtom/libtomcrypt/makefile.shared,v $ -# $Revision: 1.58 $ -# $Date: 2006/06/16 23:52:08 $ +# $Revision: 1.59 $ +# $Date: 2006/06/29 01:59:34 $ diff --git a/notes/tech0005.txt b/notes/tech0005.txt index c03afff..e29b7bd 100644 --- a/notes/tech0005.txt +++ b/notes/tech0005.txt @@ -12,7 +12,7 @@ You can disable whole classes of algorithms on the command line with the LTC_NO_ The following build with GCC 3.4.4 on an AMD64 box gets you AES, CTR mode, SHA-256, HMAC, Yarrow, full RSA PKCS #1, PKCS #5 and ASN.1 DER in roughly 40KB of code (49KB on the ARMv4) (both excluding the math library). -CFLAGS="-DLTC_NO_CIPHERS -DLTC_NO_HASHES -DLTC_NO_PRNGS -DLTC_NO_MACS -DLTC_NO_MODES -DLTC_NO_PK -DRIJNDAEL -DCTR -DSHA256 \ +CFLAGS="-DLTC_NO_CIPHERS -DLTC_NO_HASHES -DLTC_NO_PRNGS -DLTC_NO_MACS -DLTC_NO_MODES -DLTC_NO_PK -DRIJNDAEL -DLTC_CTR_MODE -DSHA256 \ -DHMAC -DYARROW -DMRSA -DMPI -DTFM_DESC -DARGTYPE=3 -Os -DLTC_SMALL_CODE -fomit-frame-pointer" make IGNORE_SPEED=1 Obviously this won't get you performance but if you need to pack a crypto lib in a device with limited means it's more than enough... diff --git a/notes/tech0007.txt b/notes/tech0007.txt index 33f87d6..149bd49 100644 --- a/notes/tech0007.txt +++ b/notes/tech0007.txt @@ -1,5 +1,5 @@ Tech Note #7 Quick building for testing with LTM -EXTRALIBS=-ltommath CFLAGS="-g3 -DLTC_NO_ASM" make -j3 IGNORE_SPEED=1 test +EXTRALIBS=-ltommath CFLAGS="-g3 -DLTC_NO_ASM -DUSE_LTM -DLTM_DESC" make -j3 IGNORE_SPEED=1 test diff --git a/src/ciphers/aes/aes.c b/src/ciphers/aes/aes.c index 32bcd69..90e19e9 100644 --- a/src/ciphers/aes/aes.c +++ b/src/ciphers/aes/aes.c @@ -308,7 +308,6 @@ int ECB_ENC(const unsigned char *pt, unsigned char *ct, symmetric_key *skey) LOAD32H(s2, pt + 8); s2 ^= rk[2]; LOAD32H(s3, pt + 12); s3 ^= rk[3]; - #ifdef LTC_SMALL_CODE for (r = 0; ; r++) { diff --git a/src/encauth/ccm/ccm_memory.c b/src/encauth/ccm/ccm_memory.c index 57dafb7..b96e68d 100644 --- a/src/encauth/ccm/ccm_memory.c +++ b/src/encauth/ccm/ccm_memory.c @@ -117,6 +117,11 @@ int ccm_memory(int cipher, L = 15 - noncelen; } + /* decrease noncelen to match L */ + if ((noncelen + L) > 15) { + noncelen = 15 - L; + } + /* allocate mem for the symmetric key */ if (uskey == NULL) { skey = XMALLOC(sizeof(*skey)); @@ -308,8 +313,10 @@ int ccm_memory(int cipher, } } - /* setup CTR for the TAG */ - ctr[14] = ctr[15] = 0x00; + /* setup CTR for the TAG (zero the count) */ + for (y = 15; y > 15 - L; y--) { + ctr[y] = 0x00; + } if ((err = cipher_descriptor[cipher].ecb_encrypt(ctr, CTRPAD, skey)) != CRYPT_OK) { goto error; } diff --git a/src/encauth/gcm/gcm_memory.c b/src/encauth/gcm/gcm_memory.c index 8e02fa8..7f231c7 100644 --- a/src/encauth/gcm/gcm_memory.c +++ b/src/encauth/gcm/gcm_memory.c @@ -43,6 +43,7 @@ int gcm_memory( int cipher, unsigned char *tag, unsigned long *taglen, int direction) { + void *orig; gcm_state *gcm; int err; @@ -63,11 +64,26 @@ int gcm_memory( int cipher, } - gcm = XMALLOC(sizeof(*gcm)); + +#ifndef GCM_TABLES_SSE2 + orig = gcm = XMALLOC(sizeof(*gcm)); +#else + orig = gcm = XMALLOC(sizeof(*gcm) + 16); +#endif if (gcm == NULL) { return CRYPT_MEM; } + /* Force GCM to be on a multiple of 16 so we can use 128-bit aligned operations + * note that we only modify gcm and keep orig intact. This code is not portable + * but again it's only for SSE2 anyways, so who cares? + */ +#ifdef GCM_TABLES_SSE2 + if ((unsigned long)gcm & 15) { + gcm = (gcm_state *)((unsigned long)gcm + (16 - ((unsigned long)gcm & 15))); + } +#endif + if ((err = gcm_init(gcm, cipher, key, keylen)) != CRYPT_OK) { goto LTC_ERR; } @@ -82,7 +98,7 @@ int gcm_memory( int cipher, } err = gcm_done(gcm, tag, taglen); LTC_ERR: - XFREE(gcm); + XFREE(orig); return err; } #endif diff --git a/src/encauth/gcm/gcm_mult_h.c b/src/encauth/gcm/gcm_mult_h.c index 2bee3d9..627eb9b 100644 --- a/src/encauth/gcm/gcm_mult_h.c +++ b/src/encauth/gcm/gcm_mult_h.c @@ -26,6 +26,13 @@ void gcm_mult_h(gcm_state *gcm, unsigned char *I) unsigned char T[16]; #ifdef GCM_TABLES int x, y; +#ifdef GCM_TABLES_SSE2 + asm("movdqa (%0),%%xmm0"::"r"(&gcm->PC[0][I[0]][0])); + for (x = 1; x < 16; x++) { + asm("pxor (%0),%%xmm0"::"r"(&gcm->PC[x][I[x]][0])); + } + asm("movdqa %%xmm0,(%0)"::"r"(&T)); +#else XMEMCPY(T, &gcm->PC[0][I[0]][0], 16); for (x = 1; x < 16; x++) { #ifdef LTC_FAST @@ -36,8 +43,9 @@ void gcm_mult_h(gcm_state *gcm, unsigned char *I) for (y = 0; y < 16; y++) { T[y] ^= gcm->PC[x][I[x]][y]; } -#endif +#endif /* LTC_FAST */ } +#endif /* GCM_TABLES_SSE2 */ #else gcm_gf_mult(gcm->H, I, T); #endif diff --git a/src/encauth/gcm/gcm_process.c b/src/encauth/gcm/gcm_process.c index 417a941..7fa34ca 100644 --- a/src/encauth/gcm/gcm_process.c +++ b/src/encauth/gcm/gcm_process.c @@ -59,7 +59,7 @@ int gcm_process(gcm_state *gcm, /* increment counter */ for (y = 15; y >= 12; y--) { - if (++gcm->Y[y]) { break; } + if (++gcm->Y[y] & 255) { break; } } /* encrypt the counter */ if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { @@ -89,7 +89,7 @@ int gcm_process(gcm_state *gcm, gcm_mult_h(gcm, gcm->X); /* increment counter */ for (y = 15; y >= 12; y--) { - if (++gcm->Y[y]) { break; } + if (++gcm->Y[y] & 255) { break; } } if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { return err; @@ -107,7 +107,7 @@ int gcm_process(gcm_state *gcm, gcm_mult_h(gcm, gcm->X); /* increment counter */ for (y = 15; y >= 12; y--) { - if (++gcm->Y[y]) { break; } + if (++gcm->Y[y] & 255) { break; } } if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { return err; @@ -125,7 +125,7 @@ int gcm_process(gcm_state *gcm, /* increment counter */ for (y = 15; y >= 12; y--) { - if (++gcm->Y[y]) { break; } + if (++gcm->Y[y] & 255) { break; } } if ((err = cipher_descriptor[gcm->cipher].ecb_encrypt(gcm->Y, gcm->buf, &gcm->K)) != CRYPT_OK) { return err; diff --git a/src/hashes/sha2/sha256.c b/src/hashes/sha2/sha256.c index e3d07dc..a9bc448 100644 --- a/src/hashes/sha2/sha256.c +++ b/src/hashes/sha2/sha256.c @@ -37,7 +37,7 @@ const struct ltc_hash_descriptor sha256_desc = #ifdef LTC_SMALL_CODE /* the K array */ -static const unsigned long K[64] = { +static const ulong32 K[64] = { 0x428a2f98UL, 0x71374491UL, 0xb5c0fbcfUL, 0xe9b5dba5UL, 0x3956c25bUL, 0x59f111f1UL, 0x923f82a4UL, 0xab1c5ed5UL, 0xd807aa98UL, 0x12835b01UL, 0x243185beUL, 0x550c7dc3UL, 0x72be5d74UL, 0x80deb1feUL, 0x9bdc06a7UL, diff --git a/src/headers/tomcrypt.h b/src/headers/tomcrypt.h index a732033..a11e494 100644 --- a/src/headers/tomcrypt.h +++ b/src/headers/tomcrypt.h @@ -16,8 +16,8 @@ extern "C" { #endif /* version */ -#define CRYPT 0x0113 -#define SCRYPT "1.13" +#define CRYPT 0x0114 +#define SCRYPT "1.14" /* max size of either a cipher/hash block or symmetric key [largest of the two] */ #define MAXBLOCKSIZE 128 diff --git a/src/headers/tomcrypt_argchk.h b/src/headers/tomcrypt_argchk.h index 68edb91..c4014b8 100644 --- a/src/headers/tomcrypt_argchk.h +++ b/src/headers/tomcrypt_argchk.h @@ -27,8 +27,8 @@ void crypt_argchk(char *v, char *s, int d); #elif ARGTYPE == 4 -#define LTC_ARGCHK(x) return CRYPT_INVALID_ARG; -#define LTC_ARGCHKVD(x) return; +#define LTC_ARGCHK(x) if (!(x)) return CRYPT_INVALID_ARG; +#define LTC_ARGCHKVD(x) if (!(x)) return; #endif diff --git a/src/headers/tomcrypt_cipher.h b/src/headers/tomcrypt_cipher.h index 6203308..507c30e 100644 --- a/src/headers/tomcrypt_cipher.h +++ b/src/headers/tomcrypt_cipher.h @@ -167,7 +167,7 @@ typedef union Symmetric_key { void *data; } symmetric_key; -#ifdef ECB +#ifdef LTC_ECB_MODE /** A block cipher ECB structure */ typedef struct { /** The index of the cipher chosen */ @@ -179,7 +179,7 @@ typedef struct { } symmetric_ECB; #endif -#ifdef CFB +#ifdef LTC_CFB_MODE /** A block cipher CFB structure */ typedef struct { /** The index of the cipher chosen */ @@ -197,7 +197,7 @@ typedef struct { } symmetric_CFB; #endif -#ifdef OFB +#ifdef LTC_OFB_MODE /** A block cipher OFB structure */ typedef struct { /** The index of the cipher chosen */ @@ -213,7 +213,7 @@ typedef struct { } symmetric_OFB; #endif -#ifdef CBC +#ifdef LTC_CBC_MODE /** A block cipher CBC structure */ typedef struct { /** The index of the cipher chosen */ @@ -228,7 +228,7 @@ typedef struct { #endif -#ifdef CTR +#ifdef LTC_CTR_MODE /** A block cipher CTR structure */ typedef struct { /** The index of the cipher chosen */ @@ -249,7 +249,7 @@ typedef struct { #endif -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** A LRW structure */ typedef struct { /** The index of the cipher chosen (must be a 128-bit block cipher) */ @@ -649,7 +649,7 @@ int anubis_keysize(int *keysize); extern const struct ltc_cipher_descriptor anubis_desc; #endif -#ifdef ECB +#ifdef LTC_ECB_MODE int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb); int ecb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_ECB *ecb); @@ -657,7 +657,7 @@ int ecb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, s int ecb_done(symmetric_ECB *ecb); #endif -#ifdef CFB +#ifdef LTC_CFB_MODE int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_CFB *cfb); int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb); @@ -667,7 +667,7 @@ int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb); int cfb_done(symmetric_CFB *cfb); #endif -#ifdef OFB +#ifdef LTC_OFB_MODE int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_OFB *ofb); int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb); @@ -677,7 +677,7 @@ int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb); int ofb_done(symmetric_OFB *ofb); #endif -#ifdef CBC +#ifdef LTC_CBC_MODE int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_CBC *cbc); int cbc_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CBC *cbc); @@ -687,7 +687,7 @@ int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc); int cbc_done(symmetric_CBC *cbc); #endif -#ifdef CTR +#ifdef LTC_CTR_MODE #define CTR_COUNTER_LITTLE_ENDIAN 0 #define CTR_COUNTER_BIG_ENDIAN 1 @@ -704,7 +704,7 @@ int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr); int ctr_done(symmetric_CTR *ctr); #endif -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE #define LRW_ENCRYPT 0 #define LRW_DECRYPT 1 @@ -736,6 +736,7 @@ int f8_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, sy int f8_getiv(unsigned char *IV, unsigned long *len, symmetric_F8 *f8); int f8_setiv(const unsigned char *IV, unsigned long len, symmetric_F8 *f8); int f8_done(symmetric_F8 *f8); +int f8_test_mode(void); #endif diff --git a/src/headers/tomcrypt_custom.h b/src/headers/tomcrypt_custom.h index cf201eb..675bb2d 100644 --- a/src/headers/tomcrypt_custom.h +++ b/src/headers/tomcrypt_custom.h @@ -45,9 +45,9 @@ #define CAST5 #define LTC_NO_MODES - #define ECB - #define CBC - #define CTR + #define LTC_ECB_MODE + #define LTC_CBC_MODE + #define LTC_CTR_MODE #define LTC_NO_HASHES #define SHA1 @@ -55,7 +55,6 @@ #define SHA384 #define SHA256 #define SHA224 - #define WHIRLPOOL #define LTC_NO_MACS #define HMAC @@ -72,8 +71,6 @@ #define MRSA #define MECC #endif - - /* Use small code where possible */ /* #define LTC_SMALL_CODE */ @@ -134,17 +131,17 @@ /* ---> Block Cipher Modes of Operation <--- */ #ifndef LTC_NO_MODES -#define CFB -#define OFB -#define ECB -#define CBC -#define CTR +#define LTC_CFB_MODE +#define LTC_OFB_MODE +#define LTC_ECB_MODE +#define LTC_CBC_MODE +#define LTC_CTR_MODE /* F8 chaining mode */ #define LTC_F8_MODE /* LRW mode */ -#define LRW_MODE +#define LTC_LRW_MODE #ifndef LTC_NO_TABLES /* like GCM mode this will enable 16 8x128 tables [64KB] that make * seeking very fast. @@ -188,7 +185,7 @@ /* ---> Encrypt + Authenticate Modes <--- */ #define EAX_MODE -#if defined(EAX_MODE) && !(defined(CTR) && defined(OMAC)) +#if defined(EAX_MODE) && !(defined(LTC_CTR_MODE) && defined(OMAC)) #error EAX_MODE requires CTR and OMAC mode #endif @@ -201,6 +198,11 @@ #define GCM_TABLES #endif +/* USE SSE2? requires GCC works on x86_32 and x86_64*/ +#ifdef GCM_TABLES +/* #define GCM_TABLES_SSE2 */ +#endif + #endif /* LTC_NO_MACS */ /* Various tidbits of modern neatoness */ @@ -215,8 +217,8 @@ /* 0 = rijndael_enc 1 = aes_enc, 2 = rijndael [full], 3 = aes [full] */ #define YARROW_AES 0 -#if defined(YARROW) && !defined(CTR) - #error YARROW requires CTR chaining mode to be defined! +#if defined(YARROW) && !defined(LTC_CTR_MODE) + #error YARROW requires LTC_CTR_MODE chaining mode to be defined! #endif /* a PRNG that simply reads from an available system source */ diff --git a/src/headers/tomcrypt_mac.h b/src/headers/tomcrypt_mac.h index 98b72b4..f726ce1 100644 --- a/src/headers/tomcrypt_mac.h +++ b/src/headers/tomcrypt_mac.h @@ -98,7 +98,7 @@ void pmac_shift_xor(pmac_state *pmac); #ifdef EAX_MODE -#if !(defined(OMAC) && defined(CTR)) +#if !(defined(OMAC) && defined(LTC_CTR_MODE)) #error EAX_MODE requires OMAC and CTR #endif @@ -248,9 +248,12 @@ typedef struct { pttotlen; /* 64-bit counter for the PT */ #ifdef GCM_TABLES - unsigned char PC[16][256][16]; /* 16 tables of 8x128 */ + unsigned char PC[16][256][16] /* 16 tables of 8x128 */ +#ifdef GCM_TABLES_SSE2 +__attribute__ ((aligned (16))) +#endif +; #endif - } gcm_state; void gcm_mult_h(gcm_state *gcm, unsigned char *I); diff --git a/src/mac/hmac/hmac_test.c b/src/mac/hmac/hmac_test.c index 36cda28..b22e746 100644 --- a/src/mac/hmac/hmac_test.c +++ b/src/mac/hmac/hmac_test.c @@ -55,7 +55,7 @@ int hmac_test(void) 3. Test Cases for HMAC-SHA-1 test_case = 1 - key = 0x0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b0b + key = 0x0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c0c key_len = 20 data = "Hi Ther 20 digest = 0x4c1a03424b55e07fe7f27be1d58bb9324a9a5a04 diff --git a/src/misc/crypt/crypt.c b/src/misc/crypt/crypt.c index 7b4e7df..b67a6eb 100644 --- a/src/misc/crypt/crypt.c +++ b/src/misc/crypt/crypt.c @@ -153,19 +153,19 @@ const char *crypt_build_settings = #endif "\nBlock Chaining Modes:\n" -#if defined(CFB) +#if defined(LTC_CFB_MODE) " CFB\n" #endif -#if defined(OFB) +#if defined(LTC_OFB_MODE) " OFB\n" #endif -#if defined(ECB) +#if defined(LTC_ECB_MODE) " ECB\n" #endif -#if defined(CBC) +#if defined(LTC_CBC_MODE) " CBC\n" #endif -#if defined(CTR) +#if defined(LTC_CTR_MODE) " CTR\n" #endif #if defined(LRW_MODE) diff --git a/src/modes/cbc/cbc_decrypt.c b/src/modes/cbc/cbc_decrypt.c index cef9cc3..ed4e9ba 100644 --- a/src/modes/cbc/cbc_decrypt.c +++ b/src/modes/cbc/cbc_decrypt.c @@ -16,7 +16,7 @@ */ -#ifdef CBC +#ifdef LTC_CBC_MODE /** CBC decrypt diff --git a/src/modes/cbc/cbc_done.c b/src/modes/cbc/cbc_done.c index ed2b2ab..af815f4 100644 --- a/src/modes/cbc/cbc_done.c +++ b/src/modes/cbc/cbc_done.c @@ -15,7 +15,7 @@ CBC implementation, finish chain, Tom St Denis */ -#ifdef CBC +#ifdef LTC_CBC_MODE /** Terminate the chain @param cbc The CBC chain to terminate diff --git a/src/modes/cbc/cbc_encrypt.c b/src/modes/cbc/cbc_encrypt.c index 6129f2b..678c433 100644 --- a/src/modes/cbc/cbc_encrypt.c +++ b/src/modes/cbc/cbc_encrypt.c @@ -16,7 +16,7 @@ */ -#ifdef CBC +#ifdef LTC_CBC_MODE /** CBC encrypt diff --git a/src/modes/cbc/cbc_getiv.c b/src/modes/cbc/cbc_getiv.c index 055fcc5..28b74c7 100644 --- a/src/modes/cbc/cbc_getiv.c +++ b/src/modes/cbc/cbc_getiv.c @@ -15,7 +15,7 @@ CBC implementation, get IV, Tom St Denis */ -#ifdef CBC +#ifdef LTC_CBC_MODE /** Get the current initial vector diff --git a/src/modes/cbc/cbc_setiv.c b/src/modes/cbc/cbc_setiv.c index 18ec82d..74d62b6 100644 --- a/src/modes/cbc/cbc_setiv.c +++ b/src/modes/cbc/cbc_setiv.c @@ -16,7 +16,7 @@ */ -#ifdef CBC +#ifdef LTC_CBC_MODE /** Set an initial vector diff --git a/src/modes/cbc/cbc_start.c b/src/modes/cbc/cbc_start.c index 0d9bab0..4799922 100644 --- a/src/modes/cbc/cbc_start.c +++ b/src/modes/cbc/cbc_start.c @@ -15,7 +15,7 @@ CBC implementation, start chain, Tom St Denis */ -#ifdef CBC +#ifdef LTC_CBC_MODE /** Initialize a CBC context diff --git a/src/modes/cfb/cfb_decrypt.c b/src/modes/cfb/cfb_decrypt.c index bf80e8a..98793d8 100644 --- a/src/modes/cfb/cfb_decrypt.c +++ b/src/modes/cfb/cfb_decrypt.c @@ -15,7 +15,7 @@ CFB implementation, decrypt data, Tom St Denis */ -#ifdef CFB +#ifdef LTC_CFB_MODE /** CFB decrypt diff --git a/src/modes/cfb/cfb_done.c b/src/modes/cfb/cfb_done.c index f2bbdc3..63181a2 100644 --- a/src/modes/cfb/cfb_done.c +++ b/src/modes/cfb/cfb_done.c @@ -15,7 +15,7 @@ CFB implementation, finish chain, Tom St Denis */ -#ifdef CFB +#ifdef LTC_CFB_MODE /** Terminate the chain @param cfb The CFB chain to terminate diff --git a/src/modes/cfb/cfb_encrypt.c b/src/modes/cfb/cfb_encrypt.c index 1506878..03260e2 100644 --- a/src/modes/cfb/cfb_encrypt.c +++ b/src/modes/cfb/cfb_encrypt.c @@ -15,7 +15,7 @@ CFB implementation, encrypt data, Tom St Denis */ -#ifdef CFB +#ifdef LTC_CFB_MODE /** CFB encrypt diff --git a/src/modes/cfb/cfb_getiv.c b/src/modes/cfb/cfb_getiv.c index f764970..b8e8b98 100644 --- a/src/modes/cfb/cfb_getiv.c +++ b/src/modes/cfb/cfb_getiv.c @@ -15,7 +15,7 @@ CFB implementation, get IV, Tom St Denis */ -#ifdef CFB +#ifdef LTC_CFB_MODE /** Get the current initial vector diff --git a/src/modes/cfb/cfb_setiv.c b/src/modes/cfb/cfb_setiv.c index ac6961a..31ecd11 100644 --- a/src/modes/cfb/cfb_setiv.c +++ b/src/modes/cfb/cfb_setiv.c @@ -14,7 +14,8 @@ @file cfb_setiv.c CFB implementation, set IV, Tom St Denis */ -#ifdef CFB + +#ifdef LTC_CFB_MODE /** Set an initial vector diff --git a/src/modes/cfb/cfb_start.c b/src/modes/cfb/cfb_start.c index aa9e65f..dc2def4 100644 --- a/src/modes/cfb/cfb_start.c +++ b/src/modes/cfb/cfb_start.c @@ -16,7 +16,7 @@ */ -#ifdef CFB +#ifdef LTC_CFB_MODE /** Initialize a CFB context diff --git a/src/modes/ctr/ctr_decrypt.c b/src/modes/ctr/ctr_decrypt.c index f6a64f0..a3052a3 100644 --- a/src/modes/ctr/ctr_decrypt.c +++ b/src/modes/ctr/ctr_decrypt.c @@ -15,7 +15,7 @@ CTR implementation, decrypt data, Tom St Denis */ -#ifdef CTR +#ifdef LTC_CTR_MODE /** CTR decrypt diff --git a/src/modes/ctr/ctr_done.c b/src/modes/ctr/ctr_done.c index f5efec9..091837d 100644 --- a/src/modes/ctr/ctr_done.c +++ b/src/modes/ctr/ctr_done.c @@ -15,7 +15,7 @@ CTR implementation, finish chain, Tom St Denis */ -#ifdef CTR +#ifdef LTC_CTR_MODE /** Terminate the chain @param ctr The CTR chain to terminate diff --git a/src/modes/ctr/ctr_encrypt.c b/src/modes/ctr/ctr_encrypt.c index 48e4d39..bab386a 100644 --- a/src/modes/ctr/ctr_encrypt.c +++ b/src/modes/ctr/ctr_encrypt.c @@ -16,7 +16,7 @@ */ -#ifdef CTR +#ifdef LTC_CTR_MODE /** CTR encrypt diff --git a/src/modes/ctr/ctr_getiv.c b/src/modes/ctr/ctr_getiv.c index ff44482..a11e4ff 100644 --- a/src/modes/ctr/ctr_getiv.c +++ b/src/modes/ctr/ctr_getiv.c @@ -15,7 +15,7 @@ CTR implementation, get IV, Tom St Denis */ -#ifdef CTR +#ifdef LTC_CTR_MODE /** Get the current initial vector diff --git a/src/modes/ctr/ctr_setiv.c b/src/modes/ctr/ctr_setiv.c index 9a8103a..d9c0254 100644 --- a/src/modes/ctr/ctr_setiv.c +++ b/src/modes/ctr/ctr_setiv.c @@ -15,7 +15,7 @@ CTR implementation, set IV, Tom St Denis */ -#ifdef CTR +#ifdef LTC_CTR_MODE /** Set an initial vector diff --git a/src/modes/ctr/ctr_start.c b/src/modes/ctr/ctr_start.c index 318e43c..f6c45cb 100644 --- a/src/modes/ctr/ctr_start.c +++ b/src/modes/ctr/ctr_start.c @@ -16,7 +16,7 @@ */ -#ifdef CTR +#ifdef LTC_CTR_MODE /** Initialize a CTR context diff --git a/src/modes/ecb/ecb_decrypt.c b/src/modes/ecb/ecb_decrypt.c index 52a7f5c..bae4dbe 100644 --- a/src/modes/ecb/ecb_decrypt.c +++ b/src/modes/ecb/ecb_decrypt.c @@ -15,7 +15,7 @@ ECB implementation, decrypt a block, Tom St Denis */ -#ifdef ECB +#ifdef LTC_ECB_MODE /** ECB decrypt diff --git a/src/modes/ecb/ecb_done.c b/src/modes/ecb/ecb_done.c index 7adfcf8..c837625 100644 --- a/src/modes/ecb/ecb_done.c +++ b/src/modes/ecb/ecb_done.c @@ -15,7 +15,7 @@ ECB implementation, finish chain, Tom St Denis */ -#ifdef ECB +#ifdef LTC_ECB_MODE /** Terminate the chain @param ecb The ECB chain to terminate diff --git a/src/modes/ecb/ecb_encrypt.c b/src/modes/ecb/ecb_encrypt.c index 1835ed9..07a3c63 100644 --- a/src/modes/ecb/ecb_encrypt.c +++ b/src/modes/ecb/ecb_encrypt.c @@ -15,7 +15,7 @@ ECB implementation, encrypt a block, Tom St Denis */ -#ifdef ECB +#ifdef LTC_ECB_MODE /** ECB encrypt diff --git a/src/modes/ecb/ecb_start.c b/src/modes/ecb/ecb_start.c index df97570..d5bb89f 100644 --- a/src/modes/ecb/ecb_start.c +++ b/src/modes/ecb/ecb_start.c @@ -16,7 +16,7 @@ */ -#ifdef ECB +#ifdef LTC_ECB_MODE /** Initialize a ECB context diff --git a/src/modes/f8/f8_start.c b/src/modes/f8/f8_start.c index 398f395..1a96a76 100644 --- a/src/modes/f8/f8_start.c +++ b/src/modes/f8/f8_start.c @@ -54,6 +54,7 @@ int f8_start( int cipher, const unsigned char *IV, f8->padlen = f8->blocklen; /* now get key ^ salt_key [extend salt_ket with 0x55 as required to match length] */ + zeromem(tkey, sizeof(tkey)); for (x = 0; x < keylen && x < (int)sizeof(tkey); x++) { tkey[x] = key[x]; } diff --git a/src/modes/lrw/lrw_decrypt.c b/src/modes/lrw/lrw_decrypt.c index 73eebeb..1eb32ba 100644 --- a/src/modes/lrw/lrw_decrypt.c +++ b/src/modes/lrw/lrw_decrypt.c @@ -15,7 +15,7 @@ LRW_MODE implementation, Decrypt blocks, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** LRW decrypt blocks diff --git a/src/modes/lrw/lrw_done.c b/src/modes/lrw/lrw_done.c index 39798c4..dd52714 100644 --- a/src/modes/lrw/lrw_done.c +++ b/src/modes/lrw/lrw_done.c @@ -15,7 +15,7 @@ LRW_MODE implementation, Free resources, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** Terminate a LRW state diff --git a/src/modes/lrw/lrw_encrypt.c b/src/modes/lrw/lrw_encrypt.c index 12fb8af..3177009 100644 --- a/src/modes/lrw/lrw_encrypt.c +++ b/src/modes/lrw/lrw_encrypt.c @@ -15,7 +15,7 @@ LRW_MODE implementation, Encrypt blocks, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** LRW encrypt blocks diff --git a/src/modes/lrw/lrw_getiv.c b/src/modes/lrw/lrw_getiv.c index 0b8adb7..b14bee4 100644 --- a/src/modes/lrw/lrw_getiv.c +++ b/src/modes/lrw/lrw_getiv.c @@ -15,7 +15,7 @@ LRW_MODE implementation, Retrieve the current IV, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** Get the IV for LRW diff --git a/src/modes/lrw/lrw_process.c b/src/modes/lrw/lrw_process.c index 2a084bf..9afaeec 100644 --- a/src/modes/lrw/lrw_process.c +++ b/src/modes/lrw/lrw_process.c @@ -15,7 +15,7 @@ LRW_MODE implementation, Encrypt/decrypt blocks, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** Process blocks with LRW, since decrypt/encrypt are largely the same they share this code. diff --git a/src/modes/lrw/lrw_setiv.c b/src/modes/lrw/lrw_setiv.c index 7b524f4..5216da1 100644 --- a/src/modes/lrw/lrw_setiv.c +++ b/src/modes/lrw/lrw_setiv.c @@ -15,7 +15,7 @@ LRW_MODE implementation, Set the current IV, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** Set the IV for LRW diff --git a/src/modes/lrw/lrw_start.c b/src/modes/lrw/lrw_start.c index 0f2c00f..a09cfec 100644 --- a/src/modes/lrw/lrw_start.c +++ b/src/modes/lrw/lrw_start.c @@ -15,7 +15,7 @@ LRW_MODE implementation, start mode, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** Initialize the LRW context diff --git a/src/modes/lrw/lrw_test.c b/src/modes/lrw/lrw_test.c index 99e787c..35fcf1a 100644 --- a/src/modes/lrw/lrw_test.c +++ b/src/modes/lrw/lrw_test.c @@ -15,7 +15,7 @@ LRW_MODE implementation, test LRW, Tom St Denis */ -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE /** Test LRW against specs diff --git a/src/modes/ofb/ofb_decrypt.c b/src/modes/ofb/ofb_decrypt.c index e742953..dd9a384 100644 --- a/src/modes/ofb/ofb_decrypt.c +++ b/src/modes/ofb/ofb_decrypt.c @@ -15,7 +15,7 @@ OFB implementation, decrypt data, Tom St Denis */ -#ifdef OFB +#ifdef LTC_OFB_MODE /** OFB decrypt diff --git a/src/modes/ofb/ofb_done.c b/src/modes/ofb/ofb_done.c index e770b21..07162a0 100644 --- a/src/modes/ofb/ofb_done.c +++ b/src/modes/ofb/ofb_done.c @@ -15,7 +15,7 @@ OFB implementation, finish chain, Tom St Denis */ -#ifdef OFB +#ifdef LTC_OFB_MODE /** Terminate the chain @param ofb The OFB chain to terminate diff --git a/src/modes/ofb/ofb_encrypt.c b/src/modes/ofb/ofb_encrypt.c index c46966d..036f977 100644 --- a/src/modes/ofb/ofb_encrypt.c +++ b/src/modes/ofb/ofb_encrypt.c @@ -15,7 +15,7 @@ OFB implementation, encrypt data, Tom St Denis */ -#ifdef OFB +#ifdef LTC_OFB_MODE /** OFB encrypt diff --git a/src/modes/ofb/ofb_getiv.c b/src/modes/ofb/ofb_getiv.c index 99c97ac..3c91e56 100644 --- a/src/modes/ofb/ofb_getiv.c +++ b/src/modes/ofb/ofb_getiv.c @@ -15,7 +15,7 @@ OFB implementation, get IV, Tom St Denis */ -#ifdef OFB +#ifdef LTC_OFB_MODE /** Get the current initial vector diff --git a/src/modes/ofb/ofb_setiv.c b/src/modes/ofb/ofb_setiv.c index df2223d..fdff5e3 100644 --- a/src/modes/ofb/ofb_setiv.c +++ b/src/modes/ofb/ofb_setiv.c @@ -15,7 +15,7 @@ OFB implementation, set IV, Tom St Denis */ -#ifdef OFB +#ifdef LTC_OFB_MODE /** Set an initial vector diff --git a/src/modes/ofb/ofb_start.c b/src/modes/ofb/ofb_start.c index 80e3346..4590493 100644 --- a/src/modes/ofb/ofb_start.c +++ b/src/modes/ofb/ofb_start.c @@ -16,7 +16,7 @@ */ -#ifdef OFB +#ifdef LTC_OFB_MODE /** Initialize a OFB context diff --git a/src/pk/asn1/der/sequence/der_decode_sequence_ex.c b/src/pk/asn1/der/sequence/der_decode_sequence_ex.c index a3ff2ba..34e68d3 100644 --- a/src/pk/asn1/der/sequence/der_decode_sequence_ex.c +++ b/src/pk/asn1/der/sequence/der_decode_sequence_ex.c @@ -218,6 +218,12 @@ int der_decode_sequence_ex(const unsigned char *in, unsigned long inlen, case LTC_ASN1_SETOF: case LTC_ASN1_SEQUENCE: + /* detect if we have the right type */ + if ((type == LTC_ASN1_SETOF && (in[x] & 0x3F) != 0x31) || (type == LTC_ASN1_SEQUENCE && (in[x] & 0x3F) != 0x30)) { + err = CRYPT_INVALID_PACKET; + goto LBL_ERR; + } + z = inlen; if ((err = der_decode_sequence(in + x, z, data, size)) != CRYPT_OK) { if (!ordered) { continue; } diff --git a/testprof/modes_test.c b/testprof/modes_test.c index 0e7c672..ae97b2c 100644 --- a/testprof/modes_test.c +++ b/testprof/modes_test.c @@ -5,16 +5,16 @@ int modes_test(void) { unsigned char pt[64], ct[64], tmp[64], key[16], iv[16], iv2[16]; int cipher_idx; -#ifdef CBC +#ifdef LTC_CBC_MODE symmetric_CBC cbc; #endif -#ifdef CFB +#ifdef LTC_CFB_MODE symmetric_CFB cfb; #endif -#ifdef OFB +#ifdef LTC_OFB_MODE symmetric_OFB ofb; #endif -#ifdef CTR +#ifdef LTC_CTR_MODE symmetric_CTR ctr; #endif unsigned long l; @@ -35,11 +35,11 @@ int modes_test(void) DO(f8_test_mode()); #endif -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE DO(lrw_test()); #endif -#ifdef CBC +#ifdef LTC_CBC_MODE /* test CBC mode */ /* encode the block */ DO(cbc_start(cipher_idx, iv, key, 16, 0, &cbc)); @@ -61,7 +61,7 @@ int modes_test(void) } #endif -#ifdef CFB +#ifdef LTC_CFB_MODE /* test CFB mode */ /* encode the block */ DO(cfb_start(cipher_idx, iv, key, 16, 0, &cfb)); @@ -84,7 +84,7 @@ int modes_test(void) } #endif -#ifdef OFB +#ifdef LTC_OFB_MODE /* test OFB mode */ /* encode the block */ DO(ofb_start(cipher_idx, iv, key, 16, 0, &ofb)); @@ -106,7 +106,7 @@ int modes_test(void) } #endif -#ifdef CTR +#ifdef LTC_CTR_MODE /* test CTR mode */ /* encode the block */ DO(ctr_start(cipher_idx, iv, key, 16, 0, CTR_COUNTER_LITTLE_ENDIAN, &ctr)); diff --git a/testprof/tomcrypt_test.h b/testprof/tomcrypt_test.h index ebcacbb..4779383 100644 --- a/testprof/tomcrypt_test.h +++ b/testprof/tomcrypt_test.h @@ -18,7 +18,12 @@ typedef struct { extern prng_state yarrow_prng; void run_cmd(int res, int line, char *file, char *cmd); -#define DO(x) { run_cmd((x), __LINE__, __FILE__, #x); } + +#ifdef LTC_VERBOSE +#define DO(x) do { fprintf(stderr, "%s:\n", #x); run_cmd((x), __LINE__, __FILE__, #x); } while (0); +#else +#define DO(x) do { run_cmd((x), __LINE__, __FILE__, #x); } while (0); +#endif /* TESTS */ int cipher_hash_test(void); diff --git a/testprof/x86_prof.c b/testprof/x86_prof.c index 03c58d6..18816c6 100644 --- a/testprof/x86_prof.c +++ b/testprof/x86_prof.c @@ -347,7 +347,7 @@ int time_cipher(void) return 0; } -#ifdef CBC +#ifdef LTC_CBC_MODE int time_cipher2(void) { unsigned long x, y1; @@ -422,7 +422,7 @@ int time_cipher2(void) int time_cipher2(void) { fprintf(stderr, "NO CBC\n"); return 0; } #endif -#ifdef CTR +#ifdef LTC_CTR_MODE int time_cipher3(void) { unsigned long x, y1; @@ -497,7 +497,7 @@ int time_cipher3(void) int time_cipher3(void) { fprintf(stderr, "NO CTR\n"); return 0; } #endif -#ifdef LRW_MODE +#ifdef LTC_LRW_MODE int time_cipher4(void) { unsigned long x, y1; @@ -1157,7 +1157,11 @@ void time_encmacs_(unsigned long MAC_SIZE) fprintf(stderr, "GCM (no-precomp)\t%9llu\n", t2/(ulong64)(MAC_SIZE*1024)); { - gcm_state gcm; + gcm_state gcm +#ifdef GCM_TABLES_SSE2 +__attribute__ ((aligned (16))) +#endif +; if ((err = gcm_init(&gcm, cipher_idx, key, 16)) != CRYPT_OK) { fprintf(stderr, "gcm_init: %s\n", error_to_string(err)); exit(EXIT_FAILURE); } t2 = -1;