From 1a1141627de40e9863d27261d7c8ee06a2bfcee4 Mon Sep 17 00:00:00 2001 From: Tom St Denis Date: Sun, 20 Jun 2004 02:41:49 +0000 Subject: [PATCH] added libtomcrypt-0.97 --- cast5.c | 2 +- cbc_getiv.c | 2 +- cbc_setiv.c | 2 +- cfb_getiv.c | 2 +- changes | 20 + crypt | 25 + crypt.tex | 57 +- crypt_register_cipher.c | 2 +- crypt_register_hash.c | 2 +- crypt_register_prng.c | 2 +- ctr_getiv.c | 2 +- ctr_setiv.c | 2 +- demos/test.c | 1622 ----------------------------- demos/test/.ccmalloc | 356 +++++++ demos/test/dh_tests.c | 6 +- demos/test/ecc_test.c | 6 +- demos/test/mac_test.c | 10 +- demos/test/makefile | 14 +- demos/test/pkcs_1_test.c | 2 +- demos/test/test.c | 64 +- demos/test/test.h | 16 +- des.c | 2 +- dh.c | 22 +- dh_sys.c | 126 ++- doc/crypt.pdf | Bin 398293 -> 382466 bytes dsa_make_key.c | 47 +- dsa_sign_hash.c | 31 +- eax_decrypt_verify_memory.c | 48 +- eax_done.c | 35 +- eax_encrypt_authenticate_memory.c | 26 +- eax_init.c | 64 +- ecc.c | 47 +- ecc_sys.c | 157 ++- hash_filehandle.c | 8 +- hash_memory.c | 25 +- hmac_done.c | 45 +- hmac_file.c | 19 - hmac_init.c | 29 +- hmac_memory.c | 51 +- hmac_process.c | 19 - ltc_tommath.h | 18 +- makefile | 30 +- makefile.icc | 2 +- md2.c | 6 +- modes_test.c | 46 - mpi.c | 12 +- mycrypt.h | 10 +- mycrypt_argchk.h | 2 +- mycrypt_cfg.h | 14 +- mycrypt_cipher.h | 246 ++--- mycrypt_custom.h | 39 +- mycrypt_hash.h | 214 ++-- mycrypt_kr.h | 81 -- mycrypt_misc.h | 14 +- mycrypt_pk.h | 78 +- mycrypt_prng.h | 42 +- ocb_decrypt_verify_memory.c | 35 +- ocb_done_decrypt.c | 21 +- ocb_encrypt_authenticate_memory.c | 34 +- ocb_init.c | 4 +- ofb_getiv.c | 2 +- omac_init.c | 2 +- omac_memory.c | 40 +- omac_process.c | 2 +- pkcs_1_mgf1.c | 43 +- pkcs_1_oaep_decode.c | 67 +- pkcs_1_oaep_encode.c | 57 +- pkcs_1_pss_decode.c | 67 +- pkcs_1_pss_encode.c | 63 +- pkcs_1_v15_es_decode.c | 10 +- pkcs_1_v15_es_encode.c | 2 +- pkcs_5_1.c | 46 +- pkcs_5_2.c | 53 +- pmac_init.c | 14 +- pmac_memory.c | 30 +- pmac_process.c | 2 +- pretty.build | 82 ++ rc4.c | 2 +- rc5.c | 2 +- rc6.c | 2 +- rsa_decrypt_key.c | 18 +- rsa_exptmod.c | 2 + rsa_make_key.c | 49 +- rsa_verify_hash.c | 2 +- s_ocb_done.c | 32 +- sha224.c | 2 +- sha256.c | 2 +- sha384.c | 2 +- tim_exptmod.c | 6 +- 89 files changed, 2028 insertions(+), 2640 deletions(-) create mode 100644 crypt delete mode 100644 demos/test.c create mode 100644 demos/test/.ccmalloc delete mode 100644 modes_test.c delete mode 100644 mycrypt_kr.h create mode 100644 pretty.build diff --git a/cast5.c b/cast5.c index 45a8433..dcb78ab 100644 --- a/cast5.c +++ b/cast5.c @@ -418,7 +418,7 @@ int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_ /* extend the key as required */ zeromem(buf, sizeof(buf)); - memcpy(buf, key, (size_t)keylen); + XMEMCPY(buf, key, (size_t)keylen); /* load and start the awful looking network */ for (y = 0; y < 4; y++) { diff --git a/cbc_getiv.c b/cbc_getiv.c index 2443736..89356a0 100644 --- a/cbc_getiv.c +++ b/cbc_getiv.c @@ -21,7 +21,7 @@ int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc) if ((unsigned long)cbc->blocklen > *len) { return CRYPT_BUFFER_OVERFLOW; } - memcpy(IV, cbc->IV, cbc->blocklen); + XMEMCPY(IV, cbc->IV, cbc->blocklen); *len = cbc->blocklen; return CRYPT_OK; diff --git a/cbc_setiv.c b/cbc_setiv.c index 39e1229..9fa562b 100644 --- a/cbc_setiv.c +++ b/cbc_setiv.c @@ -20,7 +20,7 @@ int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc) if (len != (unsigned long)cbc->blocklen) { return CRYPT_INVALID_ARG; } - memcpy(cbc->IV, IV, len); + XMEMCPY(cbc->IV, IV, len); return CRYPT_OK; } diff --git a/cfb_getiv.c b/cfb_getiv.c index f24866f..c54f70f 100644 --- a/cfb_getiv.c +++ b/cfb_getiv.c @@ -21,7 +21,7 @@ int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb) if ((unsigned long)cfb->blocklen > *len) { return CRYPT_BUFFER_OVERFLOW; } - memcpy(IV, cfb->IV, cfb->blocklen); + XMEMCPY(IV, cfb->IV, cfb->blocklen); *len = cfb->blocklen; return CRYPT_OK; diff --git a/changes b/changes index 873eca9..c0436a8 100644 --- a/changes +++ b/changes @@ -1,3 +1,23 @@ +June 19th, 2004 +v0.97 -- Removed spurious unused files [arrg!] + -- Patched buffer overflow in tim_exptmod() + -- Fixed buffer overrun bug in pkcs_1_v15_es_decode() + -- Reduced stack usage in PKCS #1 v2.0 padding functions (by several KBs) + -- Removed useless extern's that were an artifact from the project start... ;-) + -- Replaced memcpy/memset with XMEMCPY and XMEMSET for greater flexibility + -- fixed bugs in hmac_done()/hmac_init()/[various others()] where I didn't trap errors + -- Reduced stack usage in OMAC/PMAC/HMAC/EAX/OCB/PKCS#5 by mallocing any significant sized + arrays (e.g. > 100 bytes or so). Only in non-critical functions (e.g. eax_init()) + -- "Zhi Chen" pointed out that rsa_decrypt_key() requires + an incorrect output size (too large). Fixed. + -- Added a "pretty" target to the GCC makefile. Requires PERL. It is NEAT! + -- Minor updates to ch1 of the manual. + -- Cleaned up the indentation and added comments to rsa_make_key(), rsa_exptmod() and + rsa_verify_hash() + -- Updated makefile.icc so the "install" target would work ;-) + -- Removed demos/test.c [deprecated from demos/test/test.c] + -- Changed MAXBLOCKSIZE from 128 to 64 to reflect the true size... + May 30th, 2004 v0.96 -- Removed GF and Keyring code -- Extended OAEP decoder to distinguish better [and use a more uniform API] diff --git a/crypt b/crypt new file mode 100644 index 0000000..88a14ee --- /dev/null +++ b/crypt @@ -0,0 +1,25 @@ +%PDF-1.3 +%Η쏒 +3 0 obj +<< /Type /Pages /Kids [ +] /Count 0 +>> +endobj +1 0 obj +<> +endobj +2 0 obj +<>endobj +xref +0 4 +0000000000 65535 f +0000000068 00000 n +0000000116 00000 n +0000000015 00000 n +trailer +<< /Size 4 /Root 1 0 R /Info 2 0 R +>> +startxref +166 +%%EOF diff --git a/crypt.tex b/crypt.tex index b991721..d2f557f 100644 --- a/crypt.tex +++ b/crypt.tex @@ -1,4 +1,4 @@ -\documentclass[b5paper]{book} +\documentclass[a4paper]{book} \usepackage{hyperref} \usepackage{makeidx} \usepackage{amssymb} @@ -47,20 +47,15 @@ \def\gap{\vspace{0.5ex}} \makeindex \begin{document} -\title{A Tiny Crypto Library, \\ LibTomCrypt \\ Version 0.96} +\title{LibTomCrypt \\ Version 0.97} \author{Tom St Denis \\ \\ tomstdenis@iahu.ca \\ -http://libtomcrypt.org \\ \\ -Phone: 1-613-836-3160\\ -111 Banning Rd \\ -Kanata, Ontario \\ -K2L 1C3 \\ -Canada +http://libtomcrypt.org } \maketitle This text and source code library are both hereby placed in the public domain. This book has been -formatted for B5 [176x250] paper using the \LaTeX{} {\em book} macro package. +formatted for A4 paper using the \LaTeX{} {\em book} macro package. \vspace{10cm} @@ -70,7 +65,15 @@ formatted for B5 [176x250] paper using the \LaTeX{} {\em book} macro package. Tom St Denis, -Ontario, Canada +Phone: 1-613-836-3160 + +111 Banning Rd + +Kanata, Ontario + +K2L 1C3 + +Canada \end{flushright} \newpage \tableofcontents @@ -182,7 +185,7 @@ under a public domain license: library. ``rc2.c'' is based on publicly available code that is not attributed to a person from the given source. ``safer.c'' -was written by Richard De Moliner (demoliner@isi.ee.ethz.ch) and is public domain. +was written by Richard De Moliner (demoliner@isi.ee.ethz.ch) and seems to be free for use. The project is hereby released as public domain. @@ -190,7 +193,7 @@ The project is hereby released as public domain. The author (Tom St Denis) is not a patent lawyer so this section is not to be treated as legal advice. To the best of the authors knowledge the only patent related issues within the library are the RC5 and RC6 symmetric block ciphers. -They can be removed from a build by simply commenting out the two appropriate lines in the makefile script. The rest +They can be removed from a build by simply commenting out the two appropriate lines in ``mycrypt\_custom.h''. The rest of the ciphers and hashes are patent free or under patents that have since expired. The RC2 and RC4 symmetric ciphers are not under patents but are under trademark regulations. This means you can use @@ -212,11 +215,11 @@ under where VC98 is installed). In the recent versions the build steps have changed. The build options are now stored in ``mycrypt\_custom.h'' and no longer in the makefile. If you change a build option in that file you must re-build the library from clean to -ensure the build is intact. The perl script ``config.pl'' will help setup the custom header and a custom makefile -if you want one (the provided ``makefile'' will work with custom configs). +ensure the build is intact. \section{Thanks} -I would like to give thanks to the following people (in no particular order) for helping me develop this project: +I would like to give thanks to the following people (in no particular order) for helping me develop this project from +early on: \begin{enumerate} \item Richard van de Laarschot \item Richard Heathfield @@ -233,6 +236,10 @@ I would like to give thanks to the following people (in no particular order) for \item Christopher Imes \end{enumerate} +There have been quite a few other people as well. Please check the change log to see who else has contributed from +time to time. + + \chapter{The Application Programming Interface (API)} \section{Introduction} \index{CRYPT\_ERROR} \index{CRYPT\_OK} @@ -581,9 +588,9 @@ Twofish round function. \begin{tabular}{|l|l|l|} \hline TWOFISH\_SMALL & TWOFISH\_TABLES & Speed and Memory (per key) \\ \hline undefined & undefined & Very fast, 4.2KB of ram. \\ -\hline undefined & defined & As above, faster keysetup, larger code (1KB more). \\ +\hline undefined & defined & Faster keysetup, larger code. \\ \hline defined & undefined & Very slow, 0.2KB of ram. \\ -\hline defined & defined & Somewhat faster, 0.2KB of ram, larger code. \\ +\hline defined & defined & Faster, 0.2KB of ram, larger code. \\ \hline \end{tabular} \end{center} @@ -615,7 +622,8 @@ int main(void) } /* generic call to function (assuming the key in key[] was already setup) */ - if ((err = cipher_descriptor[find_cipher("blowfish")].setup(key, 8, 0, &skey)) != CRYPT_OK) { + if ((err = cipher_descriptor[find_cipher("blowfish")].setup(key, 8, 0, &skey)) != + CRYPT_OK) { printf("Error setting up Blowfish: %s\n", error_to_string(err)); return -1; } @@ -820,12 +828,13 @@ int main(void) /* somehow fill out key and IV */ /* start up CTR mode */ - if ((err = ctr_start(find_cipher("twofish"), /* index of desired cipher */ - IV, /* the initial vector */ - key, /* the secret key */ - 16, /* length of secret key (16 bytes, 128 bits) */ - 0, /* 0 == default # of rounds */ - &ctr) /* where to store initialized CTR state */ + if ((err = ctr_start( + find_cipher("twofish"), /* index of desired cipher */ + IV, /* the initial vector */ + key, /* the secret key */ + 16, /* length of secret key (16 bytes, 128 bits) */ + 0, /* 0 == default # of rounds */ + &ctr) /* where to store initialized CTR state */ ) != CRYPT_OK) { printf("ctr_start error: %s\n", error_to_string(err)); return -1; diff --git a/crypt_register_cipher.c b/crypt_register_cipher.c index 5fb0dcb..e8e021e 100644 --- a/crypt_register_cipher.c +++ b/crypt_register_cipher.c @@ -26,7 +26,7 @@ int register_cipher(const struct _cipher_descriptor *cipher) /* find a blank spot */ for (x = 0; x < TAB_SIZE; x++) { if (cipher_descriptor[x].name == NULL) { - memcpy(&cipher_descriptor[x], cipher, sizeof(struct _cipher_descriptor)); + XMEMCPY(&cipher_descriptor[x], cipher, sizeof(struct _cipher_descriptor)); return x; } } diff --git a/crypt_register_hash.c b/crypt_register_hash.c index 7603693..c8023a9 100644 --- a/crypt_register_hash.c +++ b/crypt_register_hash.c @@ -26,7 +26,7 @@ int register_hash(const struct _hash_descriptor *hash) /* find a blank spot */ for (x = 0; x < TAB_SIZE; x++) { if (hash_descriptor[x].name == NULL) { - memcpy(&hash_descriptor[x], hash, sizeof(struct _hash_descriptor)); + XMEMCPY(&hash_descriptor[x], hash, sizeof(struct _hash_descriptor)); return x; } } diff --git a/crypt_register_prng.c b/crypt_register_prng.c index 1b14a33..8176338 100644 --- a/crypt_register_prng.c +++ b/crypt_register_prng.c @@ -26,7 +26,7 @@ int register_prng(const struct _prng_descriptor *prng) /* find a blank spot */ for (x = 0; x < TAB_SIZE; x++) { if (prng_descriptor[x].name == NULL) { - memcpy(&prng_descriptor[x], prng, sizeof(struct _prng_descriptor)); + XMEMCPY(&prng_descriptor[x], prng, sizeof(struct _prng_descriptor)); return x; } } diff --git a/ctr_getiv.c b/ctr_getiv.c index fb40f0b..ab20491 100644 --- a/ctr_getiv.c +++ b/ctr_getiv.c @@ -21,7 +21,7 @@ int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr) if ((unsigned long)ctr->blocklen > *len) { return CRYPT_BUFFER_OVERFLOW; } - memcpy(IV, ctr->ctr, ctr->blocklen); + XMEMCPY(IV, ctr->ctr, ctr->blocklen); *len = ctr->blocklen; return CRYPT_OK; diff --git a/ctr_setiv.c b/ctr_setiv.c index 5aa2f2f..f15ee22 100644 --- a/ctr_setiv.c +++ b/ctr_setiv.c @@ -30,7 +30,7 @@ int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr) } /* set IV */ - memcpy(ctr->ctr, IV, len); + XMEMCPY(ctr->ctr, IV, len); /* force next block */ ctr->padlen = 0; diff --git a/demos/test.c b/demos/test.c deleted file mode 100644 index a2684fb..0000000 --- a/demos/test.c +++ /dev/null @@ -1,1622 +0,0 @@ -/* This is the worst code you have ever seen written on purpose.... this code is just a big hack to test -out the functionality of the library */ - -#ifdef SONY_PS2 -#include -#include -#include "timer.h" -#endif - -#include - -int errnum; - - -int -null_setup (const unsigned char *key, int keylen, int num_rounds, - symmetric_key * skey) -{ - return CRYPT_OK; -} - -void -null_ecb_encrypt (const unsigned char *pt, unsigned char *ct, - symmetric_key * key) -{ - memcpy (ct, pt, 8); -} - -void -null_ecb_decrypt (const unsigned char *ct, unsigned char *pt, - symmetric_key * key) -{ - memcpy (pt, ct, 8); -} - -int -null_test (void) -{ - return CRYPT_OK; -} - -int -null_keysize (int *desired_keysize) -{ - return CRYPT_OK; -} - -const struct _cipher_descriptor null_desc = { - "memcpy()", - 255, - 8, 8, 8, 1, - &null_setup, - &null_ecb_encrypt, - &null_ecb_decrypt, - &null_test, - &null_keysize -}; - - -prng_state prng; - -void -store_tests (void) -{ - unsigned char buf[8]; - unsigned long L; - ulong64 LL; - - printf ("LOAD32/STORE32 tests\n"); - L = 0x12345678UL; - STORE32L (L, &buf[0]); - L = 0; - LOAD32L (L, &buf[0]); - if (L != 0x12345678UL) { - printf ("LOAD/STORE32 Little don't work\n"); - exit (-1); - } - LL = CONST64 (0x01020304050607); - STORE64L (LL, &buf[0]); - LL = 0; - LOAD64L (LL, &buf[0]) - if (LL != CONST64 (0x01020304050607)) { - printf ("LOAD/STORE64 Little don't work\n"); - exit (-1); - } - - L = 0x12345678UL; - STORE32H (L, &buf[0]); - L = 0; - LOAD32H (L, &buf[0]); - if (L != 0x12345678UL) { - printf ("LOAD/STORE32 High don't work, %08lx\n", L); - exit (-1); - } - LL = CONST64 (0x01020304050607); - STORE64H (LL, &buf[0]); - LL = 0; - LOAD64H (LL, &buf[0]) - if (LL != CONST64 (0x01020304050607)) { - printf ("LOAD/STORE64 High don't work\n"); - exit (-1); - } -} - -void -cipher_tests (void) -{ - int x; - - printf ("Ciphers compiled in\n"); - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - printf - (" %12s (%2d) Key Size: %4d to %4d, Block Size: %3d, Default # of rounds: %2d\n", - cipher_descriptor[x].name, cipher_descriptor[x].ID, - cipher_descriptor[x].min_key_length * 8, - cipher_descriptor[x].max_key_length * 8, - cipher_descriptor[x].block_length * 8, - cipher_descriptor[x].default_rounds); - } - -} - -void -ecb_tests (void) -{ - int x; - - printf ("ECB tests\n"); - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - printf (" %12s: ", cipher_descriptor[x].name); - if ((errnum = cipher_descriptor[x].test ()) != CRYPT_OK) { - printf (" **failed** Reason: %s\n", error_to_string (errnum)); - exit (-1); - } else { - printf ("passed\n"); - } - } -} - -#ifdef CBC -void -cbc_tests (void) -{ - symmetric_CBC cbc; - int x, y; - unsigned char blk[32], ct[32], key[32], IV[32]; - const unsigned char test[] = - { 0XFF, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - printf ("CBC tests\n"); - /* ---- CBC ENCODING ---- */ - /* make up a block and IV */ - for (x = 0; x < 32; x++) - blk[x] = IV[x] = x; - - /* now lets start a cbc session */ - if ((errnum = - cbc_start (find_cipher ("blowfish"), IV, key, 16, 0, - &cbc)) != CRYPT_OK) { - printf ("CBC Setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets encode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = cbc_encrypt (blk + 8 * x, ct + 8 * x, &cbc)) != CRYPT_OK) { - printf ("CBC encrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - zeromem (blk, sizeof (blk)); - - /* ---- CBC DECODING ---- */ - /* make up a IV */ - for (x = 0; x < 32; x++) - IV[x] = x; - - /* now lets start a cbc session */ - if ((errnum = - cbc_start (find_cipher ("blowfish"), IV, key, 16, 0, - &cbc)) != CRYPT_OK) { - printf ("CBC Setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets decode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = cbc_decrypt (ct + 8 * x, blk + 8 * x, &cbc)) != CRYPT_OK) { - printf ("CBC decrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - - /* print output */ - for (x = y = 0; x < 32; x++) - if (blk[x] != x) - y = 1; - printf (" %s\n", y ? "failed" : "passed"); - - /* lets actually check the bytes */ - memset (IV, 0, 8); - IV[0] = 0xFF; /* IV = FF 00 00 00 00 00 00 00 */ - memset (blk, 0, 32); - blk[8] = 0xFF; /* BLK = 00 00 00 00 00 00 00 00 FF 00 00 00 00 00 00 00 */ - cbc_start (find_cipher ("memcpy()"), IV, key, 8, 0, &cbc); - cbc_encrypt (blk, ct, &cbc); /* expect: FF 00 00 00 00 00 00 00 */ - cbc_encrypt (blk + 8, ct + 8, &cbc); /* expect: 00 00 00 00 00 00 00 00 */ - if (memcmp (ct, test, 16)) { - printf ("CBC failed logical testing.\n"); - for (x = 0; x < 16; x++) - printf ("%02x ", ct[x]); - printf ("\n"); - exit (-1); - } else { - printf ("CBC passed logical testing.\n"); - } -} -#else -void -cbc_tests (void) -{ - printf ("CBC not compiled in\n"); -} -#endif - -#ifdef OFB -void -ofb_tests (void) -{ - symmetric_OFB ofb; - int x, y; - unsigned char blk[32], ct[32], key[32], IV[32]; - - printf ("OFB tests\n"); - /* ---- ofb ENCODING ---- */ - /* make up a block and IV */ - for (x = 0; x < 32; x++) - blk[x] = IV[x] = x; - - /* now lets start a ofb session */ - if ((errnum = - ofb_start (find_cipher ("cast5"), IV, key, 16, 0, &ofb)) != CRYPT_OK) { - printf ("OFB Setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets encode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = ofb_encrypt (blk + 8 * x, ct + 8 * x, 8, &ofb)) != CRYPT_OK) { - printf ("OFB encrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - zeromem (blk, sizeof (blk)); - - /* ---- ofb DECODING ---- */ - /* make up a IV */ - for (x = 0; x < 32; x++) - IV[x] = x; - - /* now lets start a ofb session */ - if ((errnum = - ofb_start (find_cipher ("cast5"), IV, key, 16, 0, &ofb)) != CRYPT_OK) { - printf ("OFB setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets decode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = ofb_decrypt (ct + 8 * x, blk + 8 * x, 8, &ofb)) != CRYPT_OK) { - printf ("OFB decrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - /* print output */ - for (x = y = 0; x < 32; x++) - if (blk[x] != x) - y = 1; - printf (" %s\n", y ? "failed" : "passed"); - if (y) - exit (-1); -} -#else -void -ofb_tests (void) -{ - printf ("OFB not compiled in\n"); -} -#endif - -#ifdef CFB -void -cfb_tests (void) -{ - symmetric_CFB cfb; - int x, y; - unsigned char blk[32], ct[32], key[32], IV[32]; - - printf ("CFB tests\n"); - /* ---- cfb ENCODING ---- */ - /* make up a block and IV */ - for (x = 0; x < 32; x++) - blk[x] = IV[x] = x; - - /* now lets start a cfb session */ - if ((errnum = - cfb_start (find_cipher ("blowfish"), IV, key, 16, 0, - &cfb)) != CRYPT_OK) { - printf ("CFB setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets encode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = cfb_encrypt (blk + 8 * x, ct + 8 * x, 8, &cfb)) != CRYPT_OK) { - printf ("CFB encrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - zeromem (blk, sizeof (blk)); - - /* ---- cfb DECODING ---- */ - /* make up ahash_descriptor[prng->yarrow.hash].hashsize IV */ - for (x = 0; x < 32; x++) - IV[x] = x; - - /* now lets start a cfb session */ - if ((errnum = - cfb_start (find_cipher ("blowfish"), IV, key, 16, 0, - &cfb)) != CRYPT_OK) { - printf ("CFB Setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets decode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = cfb_decrypt (ct + 8 * x, blk + 8 * x, 8, &cfb)) != CRYPT_OK) { - printf ("CFB decrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - /* print output */ - for (x = y = 0; x < 32; x++) - if (blk[x] != x) - y = 1; - printf (" %s\n", y ? "failed" : "passed"); - if (y) - exit (-1); -} -#else -void -cfb_tests (void) -{ - printf ("CFB not compiled in\n"); -} -#endif - -#ifdef CTR -void -ctr_tests (void) -{ - symmetric_CTR ctr; - int x, y; - unsigned char blk[32], ct[32], key[32], count[32]; - const unsigned char test[] = - { 0xFF, 0, 0, 0, 0, 0, 0, 0, 0, 3, 0, 0, 0, 0, 0, 0 }; - - printf ("CTR tests\n"); - /* ---- CTR ENCODING ---- */ - /* make up a block and IV */ - for (x = 0; x < 32; x++) - blk[x] = count[x] = x; - - /* now lets start a ctr session */ - if ((errnum = - ctr_start (find_cipher ("xtea"), count, key, 16, 0, - &ctr)) != CRYPT_OK) { - printf ("CTR Setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets encode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = ctr_encrypt (blk + 8 * x, ct + 8 * x, 8, &ctr)) != CRYPT_OK) { - printf ("CTR encrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - zeromem (blk, sizeof (blk)); - - /* ---- CTR DECODING ---- */ - /* make up a IV */ - for (x = 0; x < 32; x++) - count[x] = x; - - /* now lets start a cbc session */ - if ((errnum = - ctr_start (find_cipher ("xtea"), count, key, 16, 0, - &ctr)) != CRYPT_OK) { - printf ("CTR Setup: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* now lets decode 32 bytes */ - for (x = 0; x < 4; x++) { - if ((errnum = ctr_decrypt (ct + 8 * x, blk + 8 * x, 8, &ctr)) != CRYPT_OK) { - printf ("CTR decrypt: %s\n", error_to_string (errnum)); - exit (-1); - } - } - - /* print output */ - for (x = y = 0; x < 32; x++) - if (blk[x] != x) - y = 1; - printf (" %s\n", y ? "failed" : "passed"); - if (y) - exit (-1); - - /* lets actually check the bytes */ - memset (count, 0, 8); - count[0] = 0xFF; /* IV = FF 00 00 00 00 00 00 00 */ - memset (blk, 0, 32); - blk[9] = 2; /* BLK = 00 00 00 00 00 00 00 00 00 02 00 00 00 00 00 00 */ - ctr_start (find_cipher ("memcpy()"), count, key, 8, 0, &ctr); - ctr_encrypt (blk, ct, 8, &ctr); /* expect: FF 00 00 00 00 00 00 00 */ - ctr_encrypt (blk + 8, ct + 8, 8, &ctr); /* expect: 00 03 00 00 00 00 00 00 */ - if (memcmp (ct, test, 16)) { - printf ("CTR failed logical testing.\n"); - for (x = 0; x < 16; x++) - printf ("%02x ", ct[x]); - printf ("\n"); - } else { - printf ("CTR passed logical testing.\n"); - } - -} -#else -void -ctr_tests (void) -{ - printf ("CTR not compiled in\n"); -} -#endif - -void -hash_tests (void) -{ - int x; - printf ("Hash tests\n"); - for (x = 0; hash_descriptor[x].name != NULL; x++) { - printf (" %10s (%2d) ", hash_descriptor[x].name, hash_descriptor[x].ID); - if ((errnum = hash_descriptor[x].test ()) != CRYPT_OK) { - printf ("**failed** Reason: %s\n", error_to_string (errnum)); - exit(-1); - } else { - printf ("passed\n"); - } - } -} - -#ifdef MRSA -void -pad_test (void) -{ - unsigned char in[100], out[100]; - unsigned long x, y; - - /* make a dummy message */ - for (x = 0; x < 16; x++) - in[x] = (unsigned char) x; - - /* pad the message so that random filler is placed before and after it */ - y = 100; - if ((errnum = - rsa_pad (in, 16, out, &y, find_prng ("yarrow"), &prng)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* depad the message to get the original content */ - memset (in, 0, sizeof (in)); - x = 100; - if ((errnum = rsa_depad (out, y, in, &x)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* check outcome */ - printf ("rsa_pad: "); - if (x != 16) { - printf ("Failed. Wrong size.\n"); - exit (-1); - } - for (x = 0; x < 16; x++) - if (in[x] != x) { - printf ("Failed. Expected %02lx and got %02x.\n", x, in[x]); - exit (-1); - } - printf ("passed.\n"); -} -void -rsa_test (void) -{ - unsigned char in[520], out[520]; - unsigned long x, y, z, limit; - int stat; - rsa_key key; - clock_t t; - - /* ---- SINGLE ENCRYPT ---- */ - /* encrypt a short 8 byte string */ - if ((errnum = - rsa_make_key (&prng, find_prng ("yarrow"), 1024 / 8, 65537, - &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - for (x = 0; x < 8; x++) - in[x] = (unsigned char) (x + 1); - y = sizeof (in); - if ((errnum = rsa_exptmod (in, 8, out, &y, PK_PUBLIC, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* decrypt it */ - zeromem (in, sizeof (in)); - x = sizeof (out); - if ((errnum = rsa_exptmod (out, y, in, &x, PK_PRIVATE, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* compare */ - printf ("RSA : "); - for (x = 0; x < 8; x++) - if (in[x] != (x + 1)) { - printf ("Failed. x==%02lx, in[%ld]==%02x\n", x, x, in[x]); - exit (-1); - } - printf ("passed.\n"); - - /* test the rsa_encrypt_key functions */ - for (x = 0; x < 16; x++) - in[x] = x; - y = sizeof (out); - if ((errnum = - rsa_encrypt_key (in, 16, out, &y, &prng, find_prng ("yarrow"), - &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - zeromem (in, sizeof (in)); - x = sizeof (in); - if ((errnum = rsa_decrypt_key (out, y, in, &x, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("RSA en/de crypt key routines: "); - if (x != 16) { - printf ("Failed (length)\n"); - exit (-1); - } - for (x = 0; x < 16; x++) - if (in[x] != x) { - printf ("Failed (contents)\n"); - exit (-1); - } - printf ("Passed\n"); - - /* test sign_hash functions */ - for (x = 0; x < 16; x++) - in[x] = x; - x = sizeof (in); - if ((errnum = rsa_sign_hash (in, 16, out, &x, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("RSA signed hash: %lu bytes\n", x); - if ((errnum = rsa_verify_hash (out, x, in, &stat, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("Verify hash: %s, ", stat ? "passed" : "failed"); - in[0] ^= 1; - if ((errnum = rsa_verify_hash (out, x, in, &stat, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("%s\n", (!stat) ? "passed" : "failed"); - if (stat) - exit (-1); - rsa_free (&key); - - /* make a RSA key */ -#ifdef SONY_PS2_NOPE - limit = 1024; -#else - limit = 2048; -#endif - - { - int tt; - - for (z = 1024; z <= limit; z += 512) { - t = XCLOCK (); - for (tt = 0; tt < 3; tt++) { - if ((errnum = rsa_make_key (&prng, find_prng ("yarrow"), z / 8, 65537, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* check modulus size */ - if (mp_unsigned_bin_size(&key.N) != (int)(z/8)) { - printf("\nRSA key supposed to be %lu bits but was %d bits\n", z, mp_count_bits(&key.N)); - exit(EXIT_FAILURE); - } - - if (tt < 2) { - rsa_free (&key); - } - } - t = XCLOCK () - t; - printf ("Took %.0f ms to make a %ld-bit RSA key.\n", 1000.0 * (((double) t / 3.0) / (double) XCLOCKS_PER_SEC), z); - - /* time encryption */ - t = XCLOCK (); - - for (tt = 0; tt < 20; tt++) { - y = sizeof (in); - if ((errnum = rsa_exptmod (in, 8, out, &y, PK_PUBLIC, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - } - t = XCLOCK () - t; - printf ("Took %.0f ms to encrypt with a %ld-bit RSA key.\n", - 1000.0 * (((double) t / 20.0) / (double) XCLOCKS_PER_SEC), z); - - /* time decryption */ - t = XCLOCK (); - for (tt = 0; tt < 20; tt++) { - x = sizeof (out); - if ((errnum = rsa_exptmod (out, y, in, &x, PK_PRIVATE, &key)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - } - t = XCLOCK () - t; - printf ("Took %.0f ms to decrypt with a %ld-bit RSA key.\n", - 1000.0 * (((double) t / 20.0) / (double) XCLOCKS_PER_SEC), z); - rsa_free (&key); - } - } -} -#else -void -pad_test (void) -{ - printf ("MRSA not compiled in\n"); -} - -void -rsa_test (void) -{ - printf ("MRSA not compiled in\n"); -} -#endif - -#ifdef BASE64 -void -base64_test (void) -{ - unsigned char buf[2][100]; - unsigned long x, y; - - printf ("Base64 tests\n"); - zeromem (buf, sizeof (buf)); - for (x = 0; x < 16; x++) - buf[0][x] = (unsigned char) x; - - x = 100; - if (base64_encode (buf[0], 16, buf[1], &x) != CRYPT_OK) { - printf (" error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf (" encoded 16 bytes to %ld bytes...[%s]\n", x, buf[1]); - memset (buf[0], 0, 100); - y = 100; - if (base64_decode (buf[1], x, buf[0], &y) != CRYPT_OK) { - printf (" error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf (" decoded %ld bytes to %ld bytes\n", x, y); - for (x = 0; x < 16; x++) - if (buf[0][x] != x) { - printf (" **failed**\n"); - exit (-1); - } - printf (" passed\n"); -} -#else -void -base64_test (void) -{ - printf ("Base64 not compiled in\n"); -} -#endif - -void -time_hash (void) -{ - clock_t t1; - int x, y; - unsigned long z; - unsigned char input[4096], out[MAXBLOCKSIZE]; - printf ("Hash Time Trials (4KB blocks):\n"); - for (x = 0; hash_descriptor[x].name != NULL; x++) { - t1 = XCLOCK (); - z = sizeof (out); - y = 0; - while (XCLOCK () - t1 < (5 * XCLOCKS_PER_SEC)) { - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - hash_memory (x, input, 4096, out, &z); - y += 32; - } - t1 = XCLOCK () - t1; - printf ("%-20s: Hash at %5.2f Mbit/sec\n", hash_descriptor[x].name, - ((8.0 * 4096.0) * - ((double) y / ((double) t1 / (double) XCLOCKS_PER_SEC))) / - 1000000.0); - } -} - -void -time_ecb (void) -{ - clock_t t1, t2; - long x, y1, y2; - unsigned char pt[32], key[32]; - symmetric_key skey; - void (*func) (const unsigned char *, unsigned char *, symmetric_key *); - - printf ("ECB Time Trials for the Symmetric Ciphers:\n"); - for (x = 0; cipher_descriptor[x].name != NULL; x++) { - cipher_descriptor[x].setup (key, cipher_descriptor[x].min_key_length, 0, - &skey); - -#define DO1 func(pt,pt,&skey); -#define DO2 DO1 DO1 -#define DO4 DO2 DO2 -#define DO8 DO4 DO4 -#define DO16 DO8 DO8 -#define DO32 DO16 DO16 -#define DO64 DO32 DO32 -#define DO128 DO64 DO64 -#define DO256 DO128 DO128 - - func = cipher_descriptor[x].ecb_encrypt; - y1 = 0; - t1 = XCLOCK (); - while (XCLOCK () - t1 < 3 * XCLOCKS_PER_SEC) { - DO256; - y1 += 256; - } - t1 = XCLOCK () - t1; - - func = cipher_descriptor[x].ecb_decrypt; - y2 = 0; - t2 = XCLOCK (); - while (XCLOCK () - t2 < 3 * XCLOCKS_PER_SEC) { - DO256; - y2 += 256; - } - t2 = XCLOCK () - t2; - printf - ("%-20s: Encrypt at %5.2f Mbit/sec and Decrypt at %5.2f Mbit/sec\n", - cipher_descriptor[x].name, - ((8.0 * (double) cipher_descriptor[x].block_length) * - ((double) y1 / ((double) t1 / (double) XCLOCKS_PER_SEC))) / 1000000.0, - ((8.0 * (double) cipher_descriptor[x].block_length) * - ((double) y2 / ((double) t2 / (double) XCLOCKS_PER_SEC))) / - 1000000.0); - -#undef DO256 -#undef DO128 -#undef DO64 -#undef DO32 -#undef DO16 -#undef DO8 -#undef DO4 -#undef DO2 -#undef DO1 - } -} - -#ifdef MDH -void -dh_tests (void) -{ - unsigned char buf[3][4096]; - unsigned long x, y, z; - int low, high, stat, stat2; - dh_key usera, userb; - clock_t t1; - - printf("Testing builting DH parameters...."); fflush(stdout); - if ((errnum = dh_test()) != CRYPT_OK) { - printf("DH Error: %s\n", error_to_string(errnum)); - exit(-1); - } - printf("Passed.\n"); - - dh_sizes (&low, &high); - printf ("DH Keys from %d to %d supported.\n", low * 8, high * 8); - - /* make up two keys */ - if ((errnum = - dh_make_key (&prng, find_prng ("yarrow"), 96, &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - if ((errnum = - dh_make_key (&prng, find_prng ("yarrow"), 96, &userb)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* make the shared secret */ - x = 4096; - if ((errnum = dh_shared_secret (&usera, &userb, buf[0], &x)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - y = 4096; - if ((errnum = dh_shared_secret (&userb, &usera, buf[1], &y)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - if (y != x) { - printf ("DH Shared keys are not same size.\n"); - exit (-1); - } - if (memcmp (buf[0], buf[1], x)) { - printf ("DH Shared keys not same contents.\n"); - exit (-1); - } - - /* now export userb */ - y = 4096; - if ((errnum = dh_export (buf[1], &y, PK_PUBLIC, &userb)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - dh_free (&userb); - - /* import and make the shared secret again */ - if ((errnum = dh_import (buf[1], y, &userb)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - z = 4096; - if ((errnum = dh_shared_secret (&usera, &userb, buf[2], &z)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - printf ("DH routines: "); - if (z != x) { - printf ("failed. Size don't match?\n"); - exit (-1); - } - if (memcmp (buf[0], buf[2], x)) { - printf ("Failed. Content didn't match.\n"); - exit (-1); - } - printf ("Passed\n"); - dh_free (&usera); - dh_free (&userb); - -/* time stuff */ - { - static int sizes[] = { 96, 128, 160, 192, 224, 256, 320, 384, 512 }; - int ii, tt; - - for (ii = 0; ii < (int) (sizeof (sizes) / sizeof (sizes[0])); ii++) { - t1 = XCLOCK (); - for (tt = 0; tt < 25; tt++) { - dh_make_key (&prng, find_prng ("yarrow"), sizes[ii], &usera); - dh_free (&usera); - } - t1 = XCLOCK () - t1; - printf ("Make dh-%d key took %f msec\n", sizes[ii] * 8, - 1000.0 * (((double) t1 / 25.0) / (double) XCLOCKS_PER_SEC)); - } - } - -/* test encrypt_key */ - dh_make_key (&prng, find_prng ("yarrow"), 128, &usera); - for (x = 0; x < 16; x++) - buf[0][x] = x; - y = sizeof (buf[1]); - if ((errnum = - dh_encrypt_key (buf[0], 16, buf[1], &y, &prng, find_prng ("yarrow"), - find_hash ("md5"), &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - zeromem (buf[0], sizeof (buf[0])); - x = sizeof (buf[0]); - if ((errnum = dh_decrypt_key (buf[1], y, buf[0], &x, &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("DH en/de crypt key routines: "); - if (x != 16) { - printf ("Failed (length)\n"); - exit (-1); - } - for (x = 0; x < 16; x++) - if (buf[0][x] != x) { - printf ("Failed (contents)\n"); - exit (-1); - } - printf ("Passed (size %lu)\n", y); - -/* test sign_hash */ - for (x = 0; x < 16; x++) - buf[0][x] = x; - x = sizeof (buf[1]); - if ((errnum = - dh_sign_hash (buf[0], 16, buf[1], &x, &prng, find_prng ("yarrow"), - &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - if ((errnum = dh_verify_hash (buf[1], x, buf[0], 16, &stat, &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - buf[0][0] ^= 1; - if ((errnum = dh_verify_hash (buf[1], x, buf[0], 16, &stat2, &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("dh_sign/verify_hash: %s (%d,%d), %lu\n", - ((stat == 1) - && (stat2 == 0)) ? "passed" : "failed", stat, stat2, x); - dh_free (&usera); -} -#else -void -dh_tests (void) -{ - printf ("MDH not compiled in\n"); -} -#endif - -int callback_x = 0; -void -callback (void) -{ - printf ("%c\x08", "-\\|/"[++callback_x & 3]); -#ifndef SONY_PS2 - fflush (stdout); -#endif -} - -void -rng_tests (void) -{ - unsigned char buf[16]; - clock_t t1; - int x, y; - - printf ("RNG tests\n"); - t1 = XCLOCK (); - x = rng_get_bytes (buf, sizeof (buf), &callback); - t1 = XCLOCK () - t1; - printf (" %f bytes per second...", - (double) x / ((double) t1 / (double) XCLOCKS_PER_SEC)); - printf ("read %d bytes.\n ", x); - for (y = 0; y < x; y++) - printf ("%02x ", buf[y]); - printf ("\n"); - -#ifdef YARROW - if ((errnum = - rng_make_prng (128, find_prng ("yarrow"), &prng, - &callback)) != CRYPT_OK) { - printf (" starting yarrow error: %s\n", error_to_string (errnum)); - exit (-1); - } -#endif -} - -#ifdef MECC -void -ecc_tests (void) -{ - unsigned char buf[4][4096]; - unsigned long x, y, z; - int stat, stat2, low, high; - ecc_key usera, userb; - clock_t t1; - - if ((errnum = ecc_test ()) != CRYPT_OK) { - printf ("ecc Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - ecc_sizes (&low, &high); - printf ("ecc Keys from %d to %d supported.\n", low * 8, high * 8); - - /* make up two keys */ - if ((errnum = - ecc_make_key (&prng, find_prng ("yarrow"), 24, &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - if ((errnum = - ecc_make_key (&prng, find_prng ("yarrow"), 24, &userb)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - /* make the shared secret */ - x = 4096; - if ((errnum = ecc_shared_secret (&usera, &userb, buf[0], &x)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - y = 4096; - if ((errnum = ecc_shared_secret (&userb, &usera, buf[1], &y)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - if (y != x) { - printf ("ecc Shared keys are not same size.\n"); - exit (-1); - } - - if (memcmp (buf[0], buf[1], x)) { - printf ("ecc Shared keys not same contents.\n"); - exit (-1); - } - - /* now export userb */ - y = 4096; - if ((errnum = ecc_export (buf[1], &y, PK_PUBLIC, &userb)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - ecc_free (&userb); - printf ("ECC-192 export took %ld bytes\n", y); - - /* import and make the shared secret again */ - if ((errnum = ecc_import (buf[1], y, &userb)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - z = 4096; - if ((errnum = ecc_shared_secret (&usera, &userb, buf[2], &z)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - - printf ("ecc routines: "); - if (z != x) { - printf ("failed. Size don't match?\n"); - exit (-1); - } - if (memcmp (buf[0], buf[2], x)) { - printf ("Failed. Content didn't match.\n"); - exit (-1); - } - printf ("Passed\n"); - ecc_free (&usera); - ecc_free (&userb); - -/* time stuff */ - { - static int sizes[] = { 20, 24, 28, 32, 48, 65 }; - int ii, tt; - - for (ii = 0; ii < (int) (sizeof (sizes) / sizeof (sizes[0])); ii++) { - t1 = XCLOCK (); - for (tt = 0; tt < 10; tt++) { - if ((errnum = - ecc_make_key (&prng, find_prng ("yarrow"), sizes[ii], - &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - ecc_free (&usera); - } - t1 = XCLOCK () - t1; - printf ("Make ECC-%d key took %f msec\n", sizes[ii] * 8, - 1000.0 * (((double) t1 / 10.0) / (double) XCLOCKS_PER_SEC)); - } - } - -/* test encrypt_key */ - ecc_make_key (&prng, find_prng ("yarrow"), 20, &usera); - for (x = 0; x < 32; x++) - buf[0][x] = x; - y = sizeof (buf[1]); - if ((errnum = - ecc_encrypt_key (buf[0], 32, buf[1], &y, &prng, find_prng ("yarrow"), - find_hash ("sha256"), &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - zeromem (buf[0], sizeof (buf[0])); - x = sizeof (buf[0]); - if ((errnum = ecc_decrypt_key (buf[1], y, buf[0], &x, &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("ECC en/de crypt key routines: "); - if (x != 32) { - printf ("Failed (length)\n"); - exit (-1); - } - for (x = 0; x < 32; x++) - if (buf[0][x] != x) { - printf ("Failed (contents)\n"); - exit (-1); - } - printf ("Passed (size: %lu)\n", y); -/* test sign_hash */ - for (x = 0; x < 16; x++) - buf[0][x] = x; - x = sizeof (buf[1]); - if ((errnum = - ecc_sign_hash (buf[0], 16, buf[1], &x, &prng, find_prng ("yarrow"), - &usera)) != CRYPT_OK) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf("Signature size: %lu\n", x); - if (ecc_verify_hash (buf[1], x, buf[0], 16, &stat, &usera)) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - buf[0][0] ^= 1; - if (ecc_verify_hash (buf[1], x, buf[0], 16, &stat2, &usera)) { - printf ("Error: %s\n", error_to_string (errnum)); - exit (-1); - } - printf ("ecc_sign/verify_hash: %s (%d,%d)\n", - ((stat == 1) && (stat2 == 0)) ? "passed" : "failed", stat, stat2); - ecc_free (&usera); -} -#else -void -ecc_tests (void) -{ - printf ("MECC not compiled in\n"); -} -#endif - -#ifdef MPI -void -test_prime (void) -{ - char buf[1024]; - mp_int a; - int x; - - /* make a 1024 bit prime */ - mp_init (&a); - rand_prime (&a, 128*8, &prng, find_prng ("yarrow")); - - /* dump it */ - mp_todecimal (&a, buf); - printf ("1024-bit prime:\n"); - for (x = 0; x < (int) strlen (buf);) { - printf ("%c", buf[x]); - if (!(++x % 60)) - printf ("\\ \n"); - } - printf ("\n\n"); - - mp_clear (&a); -} -#else -void -test_prime (void) -{ - printf ("MPI not compiled in\n"); -} -#endif - -void -register_all_algs (void) -{ -#ifdef RIJNDAEL - register_cipher (&aes_desc); -#endif -#ifdef BLOWFISH - register_cipher (&blowfish_desc); -#endif -#ifdef XTEA - register_cipher (&xtea_desc); -#endif -#ifdef RC5 - register_cipher (&rc5_desc); -#endif -#ifdef RC6 - register_cipher (&rc6_desc); -#endif -#ifdef SAFERP - register_cipher (&saferp_desc); -#endif -#ifdef TWOFISH - register_cipher (&twofish_desc); -#endif -#ifdef SAFER - register_cipher (&safer_k64_desc); - register_cipher (&safer_sk64_desc); - register_cipher (&safer_k128_desc); - register_cipher (&safer_sk128_desc); -#endif -#ifdef RC2 - register_cipher (&rc2_desc); -#endif -#ifdef DES - register_cipher (&des_desc); - register_cipher (&des3_desc); -#endif -#ifdef CAST5 - register_cipher (&cast5_desc); -#endif -#ifdef NOEKEON - register_cipher (&noekeon_desc); -#endif -#ifdef SKIPJACK - register_cipher (&skipjack_desc); -#endif - register_cipher (&null_desc); - -#ifdef TIGER - register_hash (&tiger_desc); -#endif -#ifdef MD2 - register_hash (&md2_desc); -#endif -#ifdef MD4 - register_hash (&md4_desc); -#endif -#ifdef MD5 - register_hash (&md5_desc); -#endif -#ifdef SHA1 - register_hash (&sha1_desc); -#endif -#ifdef SHA256 - register_hash (&sha256_desc); -#endif -#ifdef SHA224 - register_hash (&sha224_desc); -#endif -#ifdef SHA384 - register_hash (&sha384_desc); -#endif -#ifdef SHA512 - register_hash (&sha512_desc); -#endif -#ifdef RIPEMD128 - register_hash (&rmd128_desc); -#endif -#ifdef RIPEMD160 - register_hash (&rmd160_desc); -#endif -#ifdef WHIRLPOOL - register_hash (&whirlpool_desc); -#endif - -#ifdef YARROW - register_prng (&yarrow_desc); -#endif -#ifdef SPRNG - register_prng (&sprng_desc); -#endif -} - -void -test_errs (void) -{ -#define ERR(x) printf("%25s => %s\n", #x, error_to_string(x)); - - ERR (CRYPT_OK); - ERR (CRYPT_ERROR); - - ERR (CRYPT_INVALID_KEYSIZE); - ERR (CRYPT_INVALID_ROUNDS); - ERR (CRYPT_FAIL_TESTVECTOR); - - ERR (CRYPT_BUFFER_OVERFLOW); - ERR (CRYPT_INVALID_PACKET); - - ERR (CRYPT_INVALID_PRNGSIZE); - ERR (CRYPT_ERROR_READPRNG); - - ERR (CRYPT_INVALID_CIPHER); - ERR (CRYPT_INVALID_HASH); - ERR (CRYPT_INVALID_PRNG); - - ERR (CRYPT_MEM); - - ERR (CRYPT_PK_TYPE_MISMATCH); - ERR (CRYPT_PK_NOT_PRIVATE); - - ERR (CRYPT_INVALID_ARG); - ERR (CRYPT_FILE_NOTFOUND); - - ERR (CRYPT_PK_INVALID_TYPE); - ERR (CRYPT_PK_INVALID_SYSTEM); - ERR (CRYPT_PK_DUP); - ERR (CRYPT_PK_NOT_FOUND); - ERR (CRYPT_PK_INVALID_SIZE); - - ERR (CRYPT_INVALID_PRIME_SIZE); -} - - -void dsa_tests(void) -{ - unsigned char msg[16], out[1024], out2[1024]; - unsigned long x, y; - int err, stat1, stat2; - dsa_key key, key2; - - /* make a random key */ - if ((err = dsa_make_key(&prng, find_prng("yarrow"), 20, 128, &key)) != CRYPT_OK) { - printf("Error making DSA key: %s\n", error_to_string(err)); - exit(-1); - } - printf("DSA Key Made\n"); - - /* verify it */ - if ((err = dsa_verify_key(&key, &stat1)) != CRYPT_OK) { - printf("Error verifying DSA key: %s\n", error_to_string(err)); - exit(-1); - } - printf("DSA key verification: %s\n", stat1 == 1 ? "passed" : "failed"); - if (stat1 == 0) exit(-1); - - /* sign the message */ - x = sizeof(out); - if ((err = dsa_sign_hash(msg, sizeof(msg), out, &x, &prng, find_prng("yarrow"), &key)) != CRYPT_OK) { - printf("Error signing with DSA key: %s\n", error_to_string(err)); - exit(-1); - } - printf("DSA 160/1024 signature is %lu bytes long\n", x); - - /* verify it once */ - if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key)) != CRYPT_OK) { - printf("Error verifying with DSA key 1: %s\n", error_to_string(err)); - exit(-1); - } - - /* Modify and verify again */ - msg[0] ^= 1; - if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat2, &key)) != CRYPT_OK) { - printf("Error verifying with DSA key 2: %s\n", error_to_string(err)); - exit(-1); - } - msg[0] ^= 1; - printf("DSA Verification: %d, %d, %s\n", stat1, stat2, (stat1 == 1 && stat2 == 0) ? "passed" : "failed"); - if (!(stat1 == 1 && stat2 == 0)) exit(-1); - - /* test exporting it */ - x = sizeof(out2); - if ((err = dsa_export(out2, &x, PK_PRIVATE, &key)) != CRYPT_OK) { - printf("Error export PK_PRIVATE DSA key: %s\n", error_to_string(err)); - exit(-1); - } - printf("Exported PK_PRIVATE DSA key in %lu bytes\n", x); - if ((err = dsa_import(out2, x, &key2)) != CRYPT_OK) { - printf("Error importing PK_PRIVATE DSA key: %s\n", error_to_string(err)); - exit(-1); - } - /* verify a signature with it */ - if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)) != CRYPT_OK) { - printf("Error verifying with DSA key 3: %s\n", error_to_string(err)); - exit(-1); - } - printf("PRIVATE Import Test: %s\n", stat1 == 1 ? "passed" : "failed"); - if (stat1 == 0) exit(-1); - dsa_free(&key2); - - /* export as public now */ - x = sizeof(out2); - if ((err = dsa_export(out2, &x, PK_PUBLIC, &key)) != CRYPT_OK) { - printf("Error export PK_PUBLIC DSA key: %s\n", error_to_string(err)); - exit(-1); - } - printf("Exported PK_PUBLIC DSA key in %lu bytes\n", x); - if ((err = dsa_import(out2, x, &key2)) != CRYPT_OK) { - printf("Error importing PK_PUBLIC DSA key: %s\n", error_to_string(err)); - exit(-1); - } - /* verify a signature with it */ - if ((err = dsa_verify_hash(out, x, msg, sizeof(msg), &stat1, &key2)) != CRYPT_OK) { - printf("Error verifying with DSA key 4: %s\n", error_to_string(err)); - exit(-1); - } - printf("PUBLIC Import Test: %s\n", stat1 == 1 ? "passed" : "failed"); - if (stat1 == 0) exit(-1); - - dsa_free(&key2); - dsa_free(&key); -} - -#ifdef PKCS_1 -void pkcs1_test(void) -{ - unsigned char buf[3][128]; - int err, res1, res2, res3, prng_idx, hash_idx; - unsigned long x, y, l1, l2, l3, i1, i2; - - /* get hash/prng */ - hash_idx = find_hash("sha1"); - prng_idx = find_prng("yarrow"); - - /* do many tests */ - for (x = 0; x < 10000; x++) { - zeromem(buf, sizeof(buf)); - - /* make a dummy message (of random length) */ - l3 = (rand() & 31) + 8; - for (y = 0; y < l3; y++) buf[0][y] = rand() & 255; - - /* encode it */ - l1 = sizeof(buf[1]); - if ((err = pkcs_1_oaep_encode(buf[0], l3, NULL, 0, 1024, hash_idx, prng_idx, &prng, buf[1], &l1)) != CRYPT_OK) { - printf("OAEP encode: %s\n", error_to_string(err)); - exit(-1); - } - - /* decode it */ - l2 = sizeof(buf[2]); - if ((err = pkcs_1_oaep_decode(buf[1], l1, NULL, 0, 1024, hash_idx, buf[2], &l2, &res1)) != CRYPT_OK) { - printf("OAEP decode: %s\n", error_to_string(err)); - exit(-1); - } - - if (res1 != 1 || l2 != l3 || memcmp(buf[2], buf[0], l3) != 0) { - printf("res == %d, Outsize == %lu, should have been %lu, msg contents follow.\n", res1, l2, l3); - printf("ORIGINAL:\n"); - for (x = 0; x < l3; x++) { - printf("%02x ", buf[0][x]); - } - printf("\nRESULT:\n"); - for (x = 0; x < l2; x++) { - printf("%02x ", buf[2][x]); - } - printf("\n\n"); - exit(-1); - } - - /* test PSS */ - l1 = sizeof(buf[1]); - if ((err = pkcs_1_pss_encode(buf[0], l3, l3>>2, hash_idx, prng_idx, &prng, 1024, buf[1], &l1)) != CRYPT_OK) { - printf("PSS encode: %s\n", error_to_string(err)); - exit(-1); - } - - if ((err = pkcs_1_pss_decode(buf[0], l3, buf[1], l1, l3>>2, hash_idx, 1024, &res1)) != CRYPT_OK) { - printf("PSS decode1: %s\n", error_to_string(err)); - exit(-1); - } - - buf[0][i1 = abs(rand()) % l3] ^= 1; - if ((err = pkcs_1_pss_decode(buf[0], l3, buf[1], l1, l3>>2, hash_idx, 1024, &res2)) != CRYPT_OK) { - printf("PSS decode2: %s\n", error_to_string(err)); - exit(-1); - } - - buf[0][i1] ^= 1; - buf[1][i2 = abs(rand()) % l1] ^= 1; - if ((err = pkcs_1_pss_decode(buf[0], l3, buf[1], l1, l3>>2, hash_idx, 1024, &res3)) != CRYPT_OK) { - printf("PSS decode3: %s\n", error_to_string(err)); - exit(-1); - } - - if (!(res1 == 1 && res2 == 0 && res3 == 0)) { - printf("PSS failed: %d, %d, %d, %lu\n", res1, res2, res3, l3); - exit(-1); - } - } - printf("PKCS #1: Passed\n"); -} - -#endif /* PKCS_1 */ - -int -main (void) -{ -#ifdef SONY_PS2 - TIMER_Init (); -#endif - srand(time(NULL)); - - register_all_algs (); - - if ((errnum = yarrow_start (&prng)) != CRYPT_OK) { - printf ("yarrow_start: %s\n", error_to_string (errnum)); - } - if ((errnum = yarrow_add_entropy ((unsigned char *)"hello", 5, &prng)) != CRYPT_OK) { - printf ("yarrow_add_entropy: %s\n", error_to_string (errnum)); - } - if ((errnum = yarrow_ready (&prng)) != CRYPT_OK) { - printf ("yarrow_ready: %s\n", error_to_string (errnum)); - } - - printf (crypt_build_settings); - test_errs (); - -#ifdef HMAC - printf ("HMAC: %s\n", hmac_test () == CRYPT_OK ? "passed" : "failed"); - if (hmac_test() != CRYPT_OK) exit(EXIT_FAILURE); -#endif - -#ifdef OMAC - printf ("OMAC: %s\n", omac_test () == CRYPT_OK ? "passed" : "failed"); - if (omac_test() != CRYPT_OK) exit(EXIT_FAILURE); -#endif - -#ifdef PMAC - printf ("PMAC: %s\n", pmac_test () == CRYPT_OK ? "passed" : "failed"); - if (pmac_test() != CRYPT_OK) exit(EXIT_FAILURE); -#endif - -#ifdef EAX_MODE - printf ("EAX : %s\n", eax_test () == CRYPT_OK ? "passed" : "failed"); - if (eax_test() != CRYPT_OK) exit(EXIT_FAILURE); -#endif - -#ifdef OCB_MODE - printf ("OCB : %s\n", ocb_test () == CRYPT_OK ? "passed" : "failed"); - if (ocb_test() != CRYPT_OK) exit(EXIT_FAILURE); -#endif - - store_tests (); - cipher_tests (); - hash_tests (); - -#ifdef PKCS_1 - pkcs1_test(); -#endif - - ecb_tests (); - cbc_tests (); - ctr_tests (); - ofb_tests (); - cfb_tests (); - - rng_tests (); - test_prime(); - - dsa_tests(); - rsa_test (); - pad_test (); - ecc_tests (); - dh_tests (); - - base64_test (); - - time_ecb (); - time_hash (); - -#ifdef SONY_PS2 - TIMER_Shutdown (); -#endif - - return 0; -} diff --git a/demos/test/.ccmalloc b/demos/test/.ccmalloc new file mode 100644 index 0000000..1b0aba2 --- /dev/null +++ b/demos/test/.ccmalloc @@ -0,0 +1,356 @@ + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + %%%% generic configuration file for %%%% + %%%% the ccmalloc memory profiler %%%% + %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + %-----------------------------------------------------------------% + % COPY THIS FILE TO '.ccmalloc' in your project or home directory % + %-----------------------------------------------------------------% + +############################################################################## +## (C) 1997-2003 Armin Biere, 1998 Johannes Keukelaar +## $Id: ccmalloc.cfg,v 1.6 2003/02/03 08:03:54 biere Exp $ +############################################################################## + +%%% '%' and '#' are comments !!!!!!! + +% This file must be called '.ccmalloc' and is searched for in the +% current directory and in the home directory of the user. If it +% does not exist then the default values mentioned below are used. + +% It is also the only available user manual yet ;-) So here is a reading +% hint. First have a look at the short one line descriptions of each option +% ... + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% with 'file' the executable is specified [a.out] +% ---------------------------------------------------------------------- +% This should not be necessary for Linux and Solaris because the proc +% file system can be used to find argv[0]. +% +% (the rest of this comment only applies to other OS) +% +% For other OS you should use this option unless the executable is +% in the current directory or its name is 'a.out'. +% +% If you do not specify this then ccmalloc tries to find an executable +% in the current directory that matches the running program starting +% with 'a.out'. For this process it must call 'nm' on each executable +% file in the directory which may be time consuming. With this option +% you can speed up this process. +% +% You can also specify absolute or relative path names. This is +% necessary if you do not start your program from the current directory. +% But you can also simply link or name your program to 'a.out'. + +%file FILE + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'log' specify the logfile [stderr] +% ---------------------------------------------------------------------- +% The default is to use stderr. The argument to 'log' is the name of +% the file you want to write to. It can also be 'stdout' or '-' which +% sets stdout as logfile. If the logfile is stdout or stderr and is +% connected to a terminal then the output is slightly different. +% +% For big programs the logfile can be really big. To reduce the size +% you can use a small chain length (see 'chain-length' below). The other +% possibility is to use compressed logfiles. This can be done by +% specifying a logfile name with a '.gz' (or a '.Z') suffix. This means +% that gnuzip (resp. compress) is used to compress the output. + +%log FILE + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'logpid' specify the logfile +% ---------------------------------------------------------------------- +% Can be used alternatively to the 'log' command if you want to use +% ccmalloc for debugging parallel applications where several copies of +% the program you are debugging must be run simoultaneously. In this +% case you can not use 'log' because you do not want to write to the same +% log file. Using 'logpid' uses a file name ending with the of +% the process which means the name is unique even if several copies of +% your program are run simoultaneously. +% +% If you use the compressing suffixes then the is inserted before +% the suffix (e.g. 'logpid ccmalloc.log.gz' uses 'ccmalloc.log..gz' +% as the name for the log file). + +%logpid FILE + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'dont-log-chain' skip info about certain chains [] +% ---------------------------------------------------------------------- +% This command may be repeated any number of times. The argument to this +% command is a comma-separated list of function-or-file-and-line +% specifications. Garbage allocated from a callchain that contains this +% subchain anywhere will _not_ be logged. +% +% The ';'-separated list should not contain any spaces. E.g. not: +% +% main ; foo ; bar +% +% but: +% +% main;foo;bar +% +% A function-or-file-and-line specification is a string followed by an +% optional colon and number, for example: main or main:14 or main.c or +% main.c:15. Note that the string is compared with both the function and the +% file name, if available. If main.c happens to be a function name, that +% will cause a match (for that string at least). Not specifying a line +% number will match any line number. If line number information is not +% available, anything will match! Not specifying a name (e.g. ;;;) will +% match an unknown function name. Not giving any parameters at all, will +% match a chain containing at least one unknown function. +% +% Note that if you say 'dont-log-chain wrapper.c' nothing will be logged. + +%dont-log-chain + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'only-log-chain' skip info about other chains [] +% ---------------------------------------------------------------------- +% The obvious counterpart to dont-log-chain. In this case, only matching +% chains will be reported. Non-matching chains will not be reported. +% Can be repeated any number of times; if the chain matches any of the +% instances, it will be reported. + +%only-log-chain + +######################################################################## +# # +# This is the 'flag' section # +# # +# 'set FLAG' is the same as 'set FLAG 1' # +# # +# The default values are those set below. If 'silent' is disabled # +# then you will find the banner in the log file (or it is listed on # +# stdout or stderr). The banner describes the current settings of all # +# these flags. # +# # +######################################################################## + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% with 'only-count' ccmalloc only counts garbage - no call chains [0] +% ---------------------------------------------------------------------- +% If only-count is set to one then only one additional pointer for +% each allocated data is used and no call chain is generated. This is +% the fasted and most space efficient mode ccmalloc can operate +% in. In this mode you get at least the size of garbage produced. +% +% Note that 'check-free-space' does not work at all with 'only-count' +% set and over writes ('check-overwrites') are only checked when +% calling free. + +%set only-count 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'load-dynlibs' load dynamic linked libraries into gdb [0] +% ---------------------------------------------------------------------- +% If your program is linked with dynamic libraries, function and file +% name information is not available for addresses in those libraries, +% unless you set 'load-dynlibs' to 1. + +%set load-dynlibs 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'keep-deallocated-data' does not recycle deallocated data [0] +% ---------------------------------------------------------------------- +% If you enable keep-deallocated-data then all data deallocated with +% 'free' (or 'delete' in C++) is not given back to the free store +% but stays associated with the call chain of its allocation. This is +% very useful if your program does multiple deallocation of the +% same data. + +%set keep-deallocated-data 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'check-overwrites' detect overwrites [0] +% ---------------------------------------------------------------------- +% If you want to detect 'off by n bytes' errors you should set +% 'checking-overwrites' to n/4 (on 32-Bit machines). +% +% ccmalloc inserts a boundary above allocated data. This boundary +% consists of 'check-overwrites' words. If your program writes to +% this area then ccmalloc can detect this (see also check-start +% and check-interval). 'ccmalloc' also does checking for overwrites +% at non word boundaries (e.g. strcpy(malloc(strlen("hello")),"hello");) + +set check-overwrites 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'check-underwrites' detect underwrites [0] +% ---------------------------------------------------------------------- +% same with writes below allocated data. You do not have to set this +% option if you only want detect 'off (below) by one' errors because +% ccmalloc keeps a magic value just before the user data. + +set check-underwrites 1 + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'check-free-space' can be used to find dangling pointers. [0] +% ---------------------------------------------------------------------- +% A very serious type of bug is to write on data that has already been +% freed. If this happens the free space management of malloc is in +% trouble and you will perhaps encounter non deterministic behaviour of +% your program. To test this first enable 'keep-deallocated-data' and +% restart your program. If the problem goes away and ccmalloc does not +% report anything then you should *also* enable 'check-free-space'. Now +% ccmalloc checks already deallocated data for corruption. +% +% Note that to perform this check 'keep-deallocated-data' also must +% be enabled and 'only-count' disabled. + +set check-free-space 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'check-interval' can be used to speed up checks [0] +% ---------------------------------------------------------------------- +% If check-overwrite, check-underwrites or check-free-space is set then +% the default is to do 'write checks' when data is deallocated and +% to do 'free space checks' when reporting together with +% 'write checks' for garbage. When you want these checks to be +% performed more often then you should set 'check-interval' to a +% positive number. This number is the interval between the number of +% calls to free or malloc without performing the checks. + +%set check-interval 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'check-start' can be used to speed up checks [0] +% ---------------------------------------------------------------------- +% The flag 'check-start' delays the start of checks until the given +% number of calls to free and malloc have occured. Together with +% 'check-interval' you can use a binary search to find an aproximation +% when a corruption occured! If you simply set check-interval to 1 and +% check-start to 0 then this will slow done your program too much. + +%set check-start 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'silent' disables banner [0] +% ---------------------------------------------------------------------- +% If you don't want to see the banner of ccmalloc then set +% 'silent' to 1 (f.e. when logging to stderr) + +%set silent + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'file-info' en/disables file and line number information [1] +% ---------------------------------------------------------------------- +% If your program was compiled with debugging information (-g) then +% ccmalloc can generate line number and file info for call chains opening +% a pipe to gdb. For very big programs this method is slow. In this case +% you can set 'file-info' to zero and you will only get the function +% names. For SunOS 4.3.1 'nm' does not 'demangle' C++ identifiers +% very well. So gdb is called instead but only if 'file-info' is +% not set to 0. + +%set file-info 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'continue' if ccmalloc aborts when something weired happened [0] +% ---------------------------------------------------------------------- +% If the free function of ccmalloc is called with an argument that does +% not make sense to ccmalloc or that has already been freed then you +% probably want the program to stop at this point. This is also +% the default behaviour. But you can force ccmalloc also to ignore +% this if you set 'continue' to 1. This flag also controls the behaviour +% of ccmalloc when free space is found to be corrupted or a write +% boundary has been overwritten. + +%set continue 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'chain-length' is the length of the maximal call chain [0 = infinite] +% ---------------------------------------------------------------------- +% You can restrict the length of call chains by setting 'chain-length' +% to a number greater than zero. If 'chain-length' is zero (the default) +% then chains are as long as possible (on a non x86 system only call +% chains with a finite maximal length can be generated). For big +% programs especially if keep-deallocated-data is enabled this can +% reduce the size of the log file from over 100MB to several MB! + +%set chain-length 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'print-addresses' of data [0] +% ---------------------------------------------------------------------- +% If you want to see the addresses of the allocated data (and +% deallocated data if keep-deallocated-data is set to 1) set +% 'print-addresses' to 1. + +%set print-addresses 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'print-on-one-line' shortens log file [0] +% ---------------------------------------------------------------------- +% The default is to print function names and file/line number info +% on separate lines. With 'print-on-one-line' set 1 all are printed +% on one line. + +%set print-on-one-line 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'additional-line' enlarges readability [1] +% ---------------------------------------------------------------------- +% When printing call chains an empty line is printed between to +% call points. Set 'additional-line' to 0 to disable this feature. + +%set additional-line 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% 'statistics' enables more accurate profiling [0] +% ---------------------------------------------------------------------- +% Calculate number of allocations and deallocations and bytes also on +% a per call chain basis. This uses 4 additional pointers for each +% call chain. + +set statistics 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% set order for sorting of call chains [1] [1] +% ---------------------------------------------------------------------- +% When printing the report to the log file the call chains are sorted by +% default with respect to the largest accumulated garbage produced by +% that call chain. This can be changed with setting 'sort-by-wasted' +% to 0. In this case they are sorted by the number of allocated bytes. +% If you want the number of allocations (only possible if 'statistics' +% is enabled) as sorting criteria instead then set 'sort-by-size' to 0. + +%set sort-by-wasted 1 +%set sort-by-size 1 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% report library chains [0] +% ---------------------------------------------------------------------- +% Some external libraries (like libg++) have memory leaks. On some +% systems even a call to printf produces a leak. ccmalloc tries to +% detect this (only heuristically!) and with this flag you can control +% if leaks produced by such library calls are reported. +% +% Since version 0.2.1 some similar effect can be achieved by using +% 'dont-log-chain' with no argument. + +%set library-chains 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% print debugging information [X] (compile time dependend) +% ---------------------------------------------------------------------- + +%set debug X + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% align memory on 8 byte boundary [0] (no effect on SunOS or Solaris) +% ---------------------------------------------------------------------- + +%set align-8-byte 0 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% only report allocations which ended up being wasted (i.e don't report +% allocations which were completely freed properly. ) [1] +% ---------------------------------------------------------------------- + +%set only-wasting-alloc 1 diff --git a/demos/test/dh_tests.c b/demos/test/dh_tests.c index c2b6f0a..785a97b 100644 --- a/demos/test/dh_tests.c +++ b/demos/test/dh_tests.c @@ -10,8 +10,8 @@ int dh_tests (void) DO(dh_test()); /* make up two keys */ - DO(dh_make_key (&test_yarrow, find_prng ("yarrow"), 96, &usera)); - DO(dh_make_key (&test_yarrow, find_prng ("yarrow"), 96, &userb)); + DO(dh_make_key (&test_yarrow, find_prng ("yarrow"), 512, &usera)); + DO(dh_make_key (&test_yarrow, find_prng ("yarrow"), 512, &userb)); /* make the shared secret */ x = 4096; @@ -50,7 +50,7 @@ int dh_tests (void) dh_free (&userb); /* test encrypt_key */ - dh_make_key (&test_yarrow, find_prng ("yarrow"), 128, &usera); + dh_make_key (&test_yarrow, find_prng ("yarrow"), 512, &usera); for (x = 0; x < 16; x++) { buf[0][x] = x; } diff --git a/demos/test/ecc_test.c b/demos/test/ecc_test.c index 02f1f91..b64cbcf 100644 --- a/demos/test/ecc_test.c +++ b/demos/test/ecc_test.c @@ -10,8 +10,8 @@ int ecc_tests (void) DO(ecc_test ()); /* make up two keys */ - DO(ecc_make_key (&test_yarrow, find_prng ("yarrow"), 24, &usera)); - DO(ecc_make_key (&test_yarrow, find_prng ("yarrow"), 24, &userb)); + DO(ecc_make_key (&test_yarrow, find_prng ("yarrow"), 65, &usera)); + DO(ecc_make_key (&test_yarrow, find_prng ("yarrow"), 65, &userb)); /* make the shared secret */ x = 4096; @@ -53,7 +53,7 @@ int ecc_tests (void) ecc_free (&userb); /* test encrypt_key */ - ecc_make_key (&test_yarrow, find_prng ("yarrow"), 20, &usera); + ecc_make_key (&test_yarrow, find_prng ("yarrow"), 65, &usera); for (x = 0; x < 32; x++) { buf[0][x] = x; } diff --git a/demos/test/mac_test.c b/demos/test/mac_test.c index 91c8d34..52e75d8 100644 --- a/demos/test/mac_test.c +++ b/demos/test/mac_test.c @@ -3,10 +3,10 @@ int mac_test(void) { - DO(hmac_test()); - DO(pmac_test()); - DO(omac_test()); - DO(eax_test()); - DO(ocb_test()); + DO(hmac_test()); + DO(pmac_test()); + DO(omac_test()); + DO(eax_test()); + DO(ocb_test()); return 0; } diff --git a/demos/test/makefile b/demos/test/makefile index e996767..5eb0690 100644 --- a/demos/test/makefile +++ b/demos/test/makefile @@ -1,13 +1,25 @@ # make test harness, it is good. CFLAGS += -Wall -W -Os -I../../ -I./ +# add -g3 for ccmalloc debugging +#CFLAGS += -g3 + +# if you're not debugging +CFLAGS += -fomit-frame-pointer + default: test OBJECTS=test.o cipher_hash_test.o mac_test.o modes_test.o \ pkcs_1_test.o store_test.o rsa_test.o ecc_test.o dsa_test.c dh_tests.o +#uncomment this to get heap checking [e.g. memory leaks]. Note +#that you *MUST* build libtomcrypt.a with -g3 enabled [and make install it] +# +# +#CCMALLOC = -lccmalloc -ldl + test: $(OBJECTS) - $(CC) $(OBJECTS) -ltomcrypt -o test + $(CC) $(OBJECTS) -ltomcrypt $(CCMALLOC) -o test clean: rm -f test *.o *.obj *.exe *~ diff --git a/demos/test/pkcs_1_test.c b/demos/test/pkcs_1_test.c index 3f1297a..ef7c81d 100644 --- a/demos/test/pkcs_1_test.c +++ b/demos/test/pkcs_1_test.c @@ -17,7 +17,7 @@ int pkcs_1_test(void) } /* do many tests */ - for (x = 0; x < 10000; x++) { + for (x = 0; x < 100; x++) { zeromem(buf, sizeof(buf)); /* make a dummy message (of random length) */ diff --git a/demos/test/test.c b/demos/test/test.c index fef5900..2ffac3c 100644 --- a/demos/test/test.c +++ b/demos/test/test.c @@ -9,8 +9,9 @@ test_entry test_list[26] = { {"cipher_hash_test", "b", "a", cipher_hash_test }, {"modes_test", "c", "b", modes_test }, {"mac_test", "d", "c", mac_test }, + {"pkcs_1_test", "e", "b", pkcs_1_test }, -{"rsa_test", "f", "e", rsa_test }, +{"rsa_test", "f", "", rsa_test }, {"ecc_test", "g", "a", ecc_tests }, {"dsa_test", "h", "a", dsa_test }, {"dh_test", "i", "a", dh_tests }, @@ -153,12 +154,53 @@ void sort(void) } } while (y == 1); } - + +#define STACKBLOCK 8 +#define STACK_EST_USAGE 32768 + +unsigned char stack_mask[STACKBLOCK]; +unsigned long stack_cur=0; + +void stack_masker(void) +{ +#ifdef STACK_TEST + volatile unsigned char M[STACK_EST_USAGE]; + stack_cur = 0; + for (stack_cur = 0; stack_cur < STACK_EST_USAGE/STACKBLOCK; stack_cur++) { + memcpy(M+(stack_cur*STACKBLOCK), stack_mask, STACKBLOCK); + } +#endif +} + +void stack_check(void) +{ +#ifdef STACK_TEST + unsigned char M[STACK_EST_USAGE]; + stack_cur = 0; +#ifdef STACK_DOWN + while (memcmp(M+(STACK_EST_USAGE-STACKBLOCK-stack_cur), stack_mask, STACKBLOCK) && +#else + while (memcmp(M+stack_cur, stack_mask, STACKBLOCK) && +#endif + stack_cur < (STACK_EST_USAGE - STACKBLOCK)) { + ++stack_cur; + } +#endif +} + int main(void) { + int x; + + /* setup stack checker */ + srand(time(NULL)); + for (x = 0; x < STACKBLOCK; x++) { + stack_mask[x] = rand() & 255; + } + stack_masker(); + printf("Built with\n%s\n", crypt_build_settings); - srand(time(NULL)); sort(); register_algs(); @@ -167,6 +209,22 @@ int main(void) DO(yarrow_add_entropy("test", 4, &test_yarrow)); DO(yarrow_ready(&test_yarrow)); + // output sizes + printf("Sizes of objects (in bytes)\n"); + printf("\tsymmetric_key\t=\t%5d\n", sizeof(symmetric_key)); + printf("\thash_state\t=\t%5d\n", sizeof(hash_state)); + printf("\thmac_state\t=\t%5d\n", sizeof(hmac_state)); + printf("\tomac_state\t=\t%5d\n", sizeof(omac_state)); + printf("\tpmac_state\t=\t%5d\n", sizeof(pmac_state)); + printf("\tocb_state\t=\t%5d\n", sizeof(ocb_state)); + printf("\teax_state\t=\t%5d\n", sizeof(eax_state)); + printf("\tmp_int\t\t=\t%5d\n", sizeof(mp_int)); + printf("\trsa_key\t\t=\t%5d\n", sizeof(rsa_key)); + printf("\tdsa_key\t\t=\t%5d\n", sizeof(dsa_key)); + printf("\tdh_key\t\t=\t%5d\n", sizeof(dh_key)); + printf("\tecc_key\t\t=\t%5d\n", sizeof(ecc_key)); + + printf("\n\n"); // do tests for (current_test = 0; tests[current_test].name != NULL; current_test++) { printf("[%-20s]: ", tests[current_test].name); fflush(stdout); diff --git a/demos/test/test.h b/demos/test/test.h index 9f13157..44cdf92 100644 --- a/demos/test/test.h +++ b/demos/test/test.h @@ -3,6 +3,12 @@ #include "mycrypt.h" +/* enable stack testing */ +// #define STACK_TEST + +/* stack testing, define this if stack usage goes downwards [e.g. x86] */ +#define STACK_DOWN + typedef struct { char *name, *prov, *req; int (*entry)(void); @@ -10,10 +16,14 @@ typedef struct { extern prng_state test_yarrow; + +void stack_masker(void); +void stack_check(void); +extern unsigned long stack_cur; +#define stack_chk(x) { stack_check(); if (stack_cur >= 1024) { fprintf(stderr, " Warning: Stack usage of %lu in %s, %s:%d\n", stack_cur, x, __FILE__, __LINE__); } } + void run_cmd(int res, int line, char *file, char *cmd); -#define DO(x) run_cmd((x), __LINE__, __FILE__, #x) - - +#define DO(x) { stack_masker(); run_cmd((x), __LINE__, __FILE__, #x); stack_chk(#x); } /* TESTS */ int cipher_hash_test(void); diff --git a/des.c b/des.c index 090c594..a4b4e04 100644 --- a/des.c +++ b/des.c @@ -1377,7 +1377,7 @@ static void cookey(const ulong32 *raw1, ulong32 *keyout) *cook++ |= (*raw1 & 0x0000003fL); } - memcpy(keyout, dough, sizeof dough); + XMEMCPY(keyout, dough, sizeof dough); } #ifdef CLEAN_STACK diff --git a/dh.c b/dh.c index 8cf5632..f2defb0 100644 --- a/dh.c +++ b/dh.c @@ -12,6 +12,9 @@ #ifdef MDH +/* max export size we'll encounter (smaller than this but lets round up a bit */ +#define DH_BUF_SIZE 1200 + /* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */ static const struct { int size; @@ -226,7 +229,7 @@ int dh_get_size(dh_key *key) int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key) { - unsigned char buf[512]; + unsigned char *buf; unsigned long x; mp_int p, g; int err; @@ -251,14 +254,21 @@ int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key) } key->idx = x; + /* allocate buffer */ + buf = XMALLOC(keysize); + if (buf == NULL) { + return CRYPT_MEM; + } + /* make up random string */ if (prng_descriptor[wprng].read(buf, keysize, prng) != (unsigned long)keysize) { - return CRYPT_ERROR_READPRNG; + err = CRYPT_ERROR_READPRNG; + goto error2; } /* init parameters */ if ((err = mp_init_multi(&g, &p, &key->x, &key->y, NULL)) != MP_OKAY) { - return mpi_to_ltc_error(err); + goto error; } if ((err = mp_read_radix(&g, sets[key->idx].base, 64)) != MP_OKAY) { goto error; } if ((err = mp_read_radix(&p, sets[key->idx].prime, 64)) != MP_OKAY) { goto error; } @@ -276,10 +286,14 @@ int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key) goto done; error: err = mpi_to_ltc_error(err); +error2: mp_clear_multi(&key->x, &key->y, NULL); done: +#ifdef CLEAN_STACK + zeromem(buf, keysize); +#endif mp_clear_multi(&p, &g, NULL); - zeromem(buf, sizeof(buf)); + XFREE(buf); return err; } diff --git a/dh_sys.c b/dh_sys.c index fb05aa3..e0439c3 100644 --- a/dh_sys.c +++ b/dh_sys.c @@ -13,7 +13,7 @@ int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, prng_state *prng, int wprng, int hash, dh_key *key) { - unsigned char pub_expt[768], dh_shared[768], skey[MAXBLOCKSIZE]; + unsigned char *pub_expt, *dh_shared, *skey; dh_key pubkey; unsigned long x, y, z, hashsize, pubkeysize; int err; @@ -36,36 +36,54 @@ int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, return CRYPT_INVALID_HASH; } - /* make a random key and export the public copy */ - if ((err = dh_make_key(prng, wprng, dh_get_size(key), &pubkey)) != CRYPT_OK) { - return err; + /* allocate memory */ + pub_expt = XMALLOC(DH_BUF_SIZE); + dh_shared = XMALLOC(DH_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (pub_expt == NULL || dh_shared == NULL || skey == NULL) { + if (pub_expt != NULL) { + XFREE(pub_expt); + } + if (dh_shared != NULL) { + XFREE(dh_shared); + } + if (skey != NULL) { + XFREE(skey); + } + return CRYPT_MEM; } - pubkeysize = sizeof(pub_expt); + /* make a random key and export the public copy */ + if ((err = dh_make_key(prng, wprng, dh_get_size(key), &pubkey)) != CRYPT_OK) { + goto __ERR; + } + + pubkeysize = DH_BUF_SIZE; if ((err = dh_export(pub_expt, &pubkeysize, PK_PUBLIC, &pubkey)) != CRYPT_OK) { dh_free(&pubkey); - return err; + goto __ERR; } /* now check if the out buffer is big enough */ if (*len < (1 + 4 + 4 + PACKET_SIZE + pubkeysize + keylen)) { dh_free(&pubkey); - return CRYPT_BUFFER_OVERFLOW; + err = CRYPT_BUFFER_OVERFLOW; + goto __ERR; } /* make random key */ hashsize = hash_descriptor[hash].hashsize; - x = (unsigned long)sizeof(dh_shared); + x = DH_BUF_SIZE; if ((err = dh_shared_secret(&pubkey, key, dh_shared, &x)) != CRYPT_OK) { dh_free(&pubkey); - return err; + goto __ERR; } dh_free(&pubkey); - z = sizeof(skey); + z = MAXBLOCKSIZE; if ((err = hash_memory(hash, dh_shared, x, skey, &z)) != CRYPT_OK) { - return err; + goto __ERR; } /* store header */ @@ -93,21 +111,26 @@ int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, } *len = y; + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK /* clean up */ - zeromem(pub_expt, sizeof(pub_expt)); - zeromem(dh_shared, sizeof(dh_shared)); - zeromem(skey, sizeof(skey)); + zeromem(pub_expt, DH_BUF_SIZE); + zeromem(dh_shared, DH_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); #endif + XFREE(skey); + XFREE(dh_shared); + XFREE(pub_expt); - return CRYPT_OK; + return err; } int dh_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *outkey, unsigned long *keylen, dh_key *key) { - unsigned char shared_secret[768], skey[MAXBLOCKSIZE]; + unsigned char *shared_secret, *skey; unsigned long x, y, z,hashsize, keysize; int hash, err; dh_key pubkey; @@ -122,23 +145,38 @@ int dh_decrypt_key(const unsigned char *in, unsigned long inlen, return CRYPT_PK_NOT_PRIVATE; } + /* allocate ram */ + shared_secret = XMALLOC(DH_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (shared_secret == NULL || skey == NULL) { + if (shared_secret != NULL) { + XFREE(shared_secret); + } + if (skey != NULL) { + XFREE(skey); + } + return CRYPT_MEM; + } + /* check if initial header should fit */ if (inlen < PACKET_SIZE+1+4+4) { - return CRYPT_INVALID_PACKET; + err = CRYPT_INVALID_PACKET; + goto __ERR; } else { inlen -= PACKET_SIZE+1+4+4; } /* is header correct? */ if ((err = packet_valid_header((unsigned char *)in, PACKET_SECT_DH, PACKET_SUB_ENC_KEY)) != CRYPT_OK) { - return err; + goto __ERR; } /* now lets get the hash name */ y = PACKET_SIZE; hash = find_hash_id(in[y++]); if (hash == -1) { - return CRYPT_INVALID_HASH; + err = CRYPT_INVALID_HASH; + goto __ERR; } /* common values */ @@ -149,28 +187,29 @@ int dh_decrypt_key(const unsigned char *in, unsigned long inlen, /* now check if the imported key will fit */ if (inlen < x) { - return CRYPT_INVALID_PACKET; + err = CRYPT_INVALID_PACKET; + goto __ERR; } else { inlen -= x; } y += 4; if ((err = dh_import(in+y, x, &pubkey)) != CRYPT_OK) { - return err; + goto __ERR; } y += x; /* make shared key */ - x = (unsigned long)sizeof(shared_secret); + x = DH_BUF_SIZE; if ((err = dh_shared_secret(key, &pubkey, shared_secret, &x)) != CRYPT_OK) { dh_free(&pubkey); - return err; + goto __ERR; } dh_free(&pubkey); - z = sizeof(skey); + z = MAXBLOCKSIZE; if ((err = hash_memory(hash, shared_secret, x, skey, &z)) != CRYPT_OK) { - return err; + goto __ERR; } /* load in the encrypted key */ @@ -178,14 +217,15 @@ int dh_decrypt_key(const unsigned char *in, unsigned long inlen, /* will the outkey fit as part of the input */ if (inlen < keysize) { - return CRYPT_INVALID_PACKET; + err = CRYPT_INVALID_PACKET; + goto __ERR; } else { inlen -= keysize; } if (keysize > *keylen) { err = CRYPT_BUFFER_OVERFLOW; - goto done; + goto __ERR; } y += 4; @@ -196,11 +236,15 @@ int dh_decrypt_key(const unsigned char *in, unsigned long inlen, } err = CRYPT_OK; -done: +__ERR: #ifdef CLEAN_STACK - zeromem(shared_secret, sizeof(shared_secret)); - zeromem(skey, sizeof(skey)); + zeromem(shared_secret, DH_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); #endif + + XFREE(skey); + XFREE(shared_secret); + return err; } @@ -227,7 +271,7 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, prng_state *prng, int wprng, dh_key *key) { mp_int a, b, k, m, g, p, p1, tmp; - unsigned char buf[520]; + unsigned char *buf; unsigned long x, y; int err; @@ -250,18 +294,23 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, return CRYPT_PK_INVALID_TYPE; } + /* allocate ram for buf */ + buf = XMALLOC(520); + /* make up a random value k, * since the order of the group is prime * we need not check if gcd(k, r) is 1 */ if (prng_descriptor[wprng].read(buf, sets[key->idx].size, prng) != (unsigned long)(sets[key->idx].size)) { - return CRYPT_ERROR_READPRNG; + err = CRYPT_ERROR_READPRNG; + goto __ERR; } /* init bignums */ if ((err = mp_init_multi(&a, &b, &k, &m, &p, &g, &p1, &tmp, NULL)) != MP_OKAY) { - return mpi_to_ltc_error(err); + err = mpi_to_ltc_error(err); + goto __ERR; } /* load k and m */ @@ -290,7 +339,7 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, /* check for overflow */ if ((unsigned long)(PACKET_SIZE + 4 + 4 + mp_unsigned_bin_size(&a) + mp_unsigned_bin_size(&b)) > *outlen) { err = CRYPT_BUFFER_OVERFLOW; - goto done; + goto __ERR; } /* store header */ @@ -310,7 +359,7 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, /* check if size too big */ if (*outlen < y) { err = CRYPT_BUFFER_OVERFLOW; - goto done; + goto __ERR; } /* store header */ @@ -318,11 +367,14 @@ int dh_sign_hash(const unsigned char *in, unsigned long inlen, *outlen = y; err = CRYPT_OK; - goto done; + goto __ERR; error: err = mpi_to_ltc_error(err); -done: +__ERR: mp_clear_multi(&tmp, &p1, &g, &p, &m, &k, &b, &a, NULL); + + XFREE(buf); + return err; } diff --git a/doc/crypt.pdf b/doc/crypt.pdf index 832278105e95f6fe8d15d61440b90e08e00490be..5425a606c1292a327b6da2174bc0644b6ae0db9f 100644 GIT binary patch delta 318011 zcmZUZQ*fZc)~;jQ6WcSfZQHhO=gY)4Cbn(cwrx&0vCckK|GwH+y)L`Dx>i5W>UX&m zC$I`TUL4>{kWm<9LTlfCdmk%F>bONQnw#!H*PHd9%-rF_lguU;dn7X>6 zI)y-kHRXTM^Ee=1xq(6|@sG-h6;@=`TL9O`bHL8Uf}$JZPm12v{nul>uu zGvtuZhQ=db-iBV8@5B2|SZb>}QTRYeD>hcsmJ4W6MXW$^AhVv<6TDU7MXh{bOPS^_ zLlpg14r-z-+S`614k zg)A8|W)!bnIt}{h_IA9$u`Ue=c=D!4<{K-qgj_ z+04ie?mv}-u{9hAF(dK+Us)I#lf=M;fEZOdg)K&u?wi`%`V`#5yH+3Y3D}C3c#+y2 z@;VxFtp*|MZ@*E4bum@UNOd~CIE$Swjzfz9Y80%Vk6nb!(`lC9;VHf5#MqA~S6K8; zOI9@$MRe1TM-x03&WdK1AH1>*E{l-5jMnK&KO9N|xUByq|1zNulT5 zSO<*Sql0=bj)}&w?q~gE&14EjBM@@(W%jAddA`r==d zkX;={+?;3)>LBhn!xsd?5hlzWwJgn%?Mnk@v++YCAjdRgNm0JsQ zL;arwHL$lDu~HKV9v4eYQYm1JwfH`bJ%P-62>8A%3RdBYQ2#mx3>I3(CvA(U+4)Ow zH}b;GLI^uJEl{2ax~n1JKY`#vhj(ViNX!E-BnZsDN#d>H$5^dk;pu$MyB&zr7>CaM zXQq%L^=t4erMvS#p}gMI;!?h?

GUABEl*Vm|j( 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


#OjKrM;DX`ojm7En7|ofB|d5mt@sc2s7i)k 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%0Dy*O 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 diff --git a/dsa_make_key.c b/dsa_make_key.c index 4d2af24..09953a2 100644 --- a/dsa_make_key.c +++ b/dsa_make_key.c @@ -14,9 +14,9 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key) { - mp_int tmp, tmp2; - int err, res; - unsigned char buf[512]; + mp_int tmp, tmp2; + int err, res; + unsigned char *buf; _ARGCHK(key != NULL); @@ -26,26 +26,33 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, } /* check size */ - if (group_size >= 1024 || group_size <= 15 || - group_size >= modulus_size || (modulus_size - group_size) >= (int)sizeof(buf)) { + if (group_size >= MDSA_MAX_GROUP || group_size <= 15 || + group_size >= modulus_size || (modulus_size - group_size) >= MDSA_DELTA) { return CRYPT_INVALID_ARG; } + /* allocate ram */ + buf = XMALLOC(MDSA_DELTA); + if (buf == NULL) { + return CRYPT_MEM; + } + /* init mp_ints */ if ((err = mp_init_multi(&tmp, &tmp2, &key->g, &key->q, &key->p, &key->x, &key->y, NULL)) != MP_OKAY) { - return mpi_to_ltc_error(err); + err = mpi_to_ltc_error(err); + goto __ERR; } /* make our prime q */ - if ((err = rand_prime(&key->q, group_size*8, prng, wprng)) != CRYPT_OK) { goto error2; } + if ((err = rand_prime(&key->q, group_size*8, prng, wprng)) != CRYPT_OK) { goto __ERR; } /* double q */ - if ((err = mp_mul_2(&key->q, &tmp)) != MP_OKAY) { goto error; } + if ((err = mp_mul_2(&key->q, &tmp)) != MP_OKAY) { goto error; } /* now make a random string and multply it against q */ if (prng_descriptor[wprng].read(buf+1, modulus_size - group_size, prng) != (unsigned long)(modulus_size - group_size)) { err = CRYPT_ERROR_READPRNG; - goto error2; + goto __ERR; } /* force magnitude */ @@ -60,7 +67,7 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, /* now loop until p is prime */ for (;;) { - if ((err = is_prime(&key->p, &res)) != CRYPT_OK) { goto error2; } + if ((err = is_prime(&key->p, &res)) != CRYPT_OK) { goto __ERR; } if (res == MP_YES) break; /* add 2q to p and 2 to tmp2 */ @@ -85,7 +92,7 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, do { if (prng_descriptor[wprng].read(buf, group_size, prng) != (unsigned long)group_size) { err = CRYPT_ERROR_READPRNG; - goto error2; + goto __ERR; } if ((err = mp_read_unsigned_bin(&key->x, buf, group_size)) != MP_OKAY) { goto error; } } while (mp_cmp_d(&key->x, 1) != MP_GT); @@ -101,17 +108,21 @@ int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, if ((err = mp_shrink(&key->x)) != MP_OKAY) { goto error; } if ((err = mp_shrink(&key->y)) != MP_OKAY) { goto error; } - err = CRYPT_OK; - #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); + zeromem(buf, MDSA_DELTA); #endif + err = CRYPT_OK; goto done; -error : err = mpi_to_ltc_error(err); -error2: mp_clear_multi(&key->g, &key->q, &key->p, &key->x, &key->y, NULL); -done : mp_clear_multi(&tmp, &tmp2, NULL); - return err; +error: + err = mpi_to_ltc_error(err); +__ERR: + mp_clear_multi(&key->g, &key->q, &key->p, &key->x, &key->y, NULL); +done: + mp_clear_multi(&tmp, &tmp2, NULL); + + XFREE(buf); + return err; } #endif diff --git a/dsa_sign_hash.c b/dsa_sign_hash.c index b204371..c790f24 100644 --- a/dsa_sign_hash.c +++ b/dsa_sign_hash.c @@ -16,11 +16,10 @@ int dsa_sign_hash(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, prng_state *prng, int wprng, dsa_key *key) { - mp_int k, kinv, tmp, r, s; - unsigned char buf[512]; - int err, y; - unsigned long len; - + mp_int k, kinv, tmp, r, s; + unsigned char *buf; + int err, y; + unsigned long len; _ARGCHK(in != NULL); _ARGCHK(out != NULL); @@ -35,10 +34,15 @@ int dsa_sign_hash(const unsigned char *in, unsigned long inlen, } /* check group order size */ - if (key->qord >= (int)sizeof(buf)) { + if (key->qord >= MDSA_MAX_GROUP) { return CRYPT_INVALID_ARG; } + buf = XMALLOC(MDSA_MAX_GROUP); + if (buf == NULL) { + return CRYPT_MEM; + } + /* Init our temps */ if ((err = mp_init_multi(&k, &kinv, &r, &s, &tmp, NULL)) != MP_OKAY) { goto error; } @@ -48,7 +52,7 @@ retry: /* gen random k */ if (prng_descriptor[wprng].read(buf, key->qord, prng) != (unsigned long)key->qord) { err = CRYPT_ERROR_READPRNG; - goto done; + goto __ERR; } /* read k */ @@ -83,7 +87,7 @@ retry: /* first check that we have enough room */ if (*outlen < (unsigned long)(PACKET_SIZE + 4 + mp_unsigned_bin_size(&s) + mp_unsigned_bin_size(&r))) { err = CRYPT_BUFFER_OVERFLOW; - goto done; + goto __ERR; } /* packet header */ @@ -112,13 +116,16 @@ retry: *outlen = y; err = CRYPT_OK; - goto done; + goto __ERR; -error : err = mpi_to_ltc_error(err); -done : mp_clear_multi(&k, &kinv, &r, &s, &tmp, NULL); +error: + err = mpi_to_ltc_error(err); +__ERR: + mp_clear_multi(&k, &kinv, &r, &s, &tmp, NULL); #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); + zeromem(buf, MDSA_MAX_GROUP); #endif + XFREE(buf); return err; } diff --git a/eax_decrypt_verify_memory.c b/eax_decrypt_verify_memory.c index 3e68efe..782d4f6 100644 --- a/eax_decrypt_verify_memory.c +++ b/eax_decrypt_verify_memory.c @@ -23,38 +23,58 @@ int eax_decrypt_verify_memory(int cipher, unsigned char *tag, unsigned long taglen, int *res) { - int err; - eax_state eax; - unsigned char buf[MAXBLOCKSIZE]; - unsigned long buflen; + int err; + eax_state *eax; + unsigned char *buf; + unsigned long buflen; _ARGCHK(res != NULL); /* default to zero */ *res = 0; - if ((err = eax_init(&eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { - return err; + /* allocate ram */ + buf = XMALLOC(taglen); + eax = XMALLOC(sizeof(eax_state)); + if (eax == NULL || buf == NULL) { + if (eax != NULL) { + XFREE(eax); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; } - if ((err = eax_decrypt(&eax, ct, pt, ctlen)) != CRYPT_OK) { - return err; + if ((err = eax_init(eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { + goto __ERR; + } + + if ((err = eax_decrypt(eax, ct, pt, ctlen)) != CRYPT_OK) { + goto __ERR; } - buflen = MIN(sizeof(buf), taglen); - if ((err = eax_done(&eax, buf, &buflen)) != CRYPT_OK) { - return err; + buflen = taglen; + if ((err = eax_done(eax, buf, &buflen)) != CRYPT_OK) { + goto __ERR; } /* compare tags */ if (buflen >= taglen && memcmp(buf, tag, taglen) == 0) { *res = 1; } - + + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); + zeromem(buf, taglen); + zeromem(eax, sizeof(eax_state)); #endif - return CRYPT_OK; + + XFREE(eax); + XFREE(buf); + + return err; } #endif diff --git a/eax_done.c b/eax_done.c index 8bc3706..037251e 100644 --- a/eax_done.c +++ b/eax_done.c @@ -17,17 +17,31 @@ int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen) { int err; - unsigned char headermac[MAXBLOCKSIZE], ctmac[MAXBLOCKSIZE]; + unsigned char *headermac, *ctmac; unsigned long x, len; _ARGCHK(eax != NULL); _ARGCHK(tag != NULL); _ARGCHK(taglen != NULL); + /* allocate ram */ + headermac = XMALLOC(MAXBLOCKSIZE); + ctmac = XMALLOC(MAXBLOCKSIZE); + + if (headermac == NULL || ctmac == NULL) { + if (headermac != NULL) { + XFREE(headermac); + } + if (ctmac != NULL) { + XFREE(ctmac); + } + return CRYPT_MEM; + } + /* finish ctomac */ - len = sizeof(ctmac); + len = MAXBLOCKSIZE; if ((err = omac_done(&eax->ctomac, ctmac, &len)) != CRYPT_OK) { - return err; + goto __ERR; } /* finish headeromac */ @@ -35,7 +49,7 @@ int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen) /* note we specifically don't reset len so the two lens are minimal */ if ((err = omac_done(&eax->headeromac, headermac, &len)) != CRYPT_OK) { - return err; + goto __ERR; } /* compute N xor H xor C */ @@ -44,13 +58,18 @@ int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen) } *taglen = x; + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(ctmac, sizeof(ctmac)); - zeromem(headermac, sizeof(headermac)); - zeromem(eax, sizeof(*eax)); + zeromem(ctmac, MAXBLOCKSIZE); + zeromem(headermac, MAXBLOCKSIZE); + zeromem(eax, sizeof(*eax)); #endif - return CRYPT_OK; + XFREE(ctmac); + XFREE(headermac); + + return err; } #endif diff --git a/eax_encrypt_authenticate_memory.c b/eax_encrypt_authenticate_memory.c index 60e9fa7..9e9a428 100644 --- a/eax_encrypt_authenticate_memory.c +++ b/eax_encrypt_authenticate_memory.c @@ -23,21 +23,31 @@ int eax_encrypt_authenticate_memory(int cipher, unsigned char *tag, unsigned long *taglen) { int err; - eax_state eax; + eax_state *eax; - if ((err = eax_init(&eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { - return err; + eax = XMALLOC(sizeof(eax_state)); + + if ((err = eax_init(eax, cipher, key, keylen, nonce, noncelen, header, headerlen)) != CRYPT_OK) { + goto __ERR; } - if ((err = eax_encrypt(&eax, pt, ct, ptlen)) != CRYPT_OK) { - return err; + if ((err = eax_encrypt(eax, pt, ct, ptlen)) != CRYPT_OK) { + goto __ERR; } - if ((err = eax_done(&eax, tag, taglen)) != CRYPT_OK) { - return err; + if ((err = eax_done(eax, tag, taglen)) != CRYPT_OK) { + goto __ERR; } - return CRYPT_OK; + err = CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(eax, sizeof(eax_state)); +#endif + + XFREE(eax); + + return err; } #endif diff --git a/eax_init.c b/eax_init.c index 1b1bbba..547c8d6 100644 --- a/eax_init.c +++ b/eax_init.c @@ -18,9 +18,9 @@ int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long const unsigned char *nonce, unsigned long noncelen, const unsigned char *header, unsigned long headerlen) { - unsigned char buf[MAXBLOCKSIZE]; + unsigned char *buf; int err, blklen; - omac_state omac; + omac_state *omac; unsigned long len; @@ -36,42 +36,56 @@ int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long } blklen = cipher_descriptor[cipher].block_length; + /* allocate ram */ + buf = XMALLOC(MAXBLOCKSIZE); + omac = XMALLOC(sizeof(omac_state)); + + if (buf == NULL || omac == NULL) { + if (buf != NULL) { + XFREE(buf); + } + if (omac != NULL) { + XFREE(omac); + } + return CRYPT_MEM; + } + /* N = OMAC_0K(nonce) */ - zeromem(buf, sizeof(buf)); - if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { - return err; + zeromem(buf, MAXBLOCKSIZE); + if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { + goto __ERR; } /* omac the [0]_n */ - if ((err = omac_process(&omac, buf, blklen)) != CRYPT_OK) { - return err; + if ((err = omac_process(omac, buf, blklen)) != CRYPT_OK) { + goto __ERR; } /* omac the nonce */ - if ((err = omac_process(&omac, nonce, noncelen)) != CRYPT_OK) { - return err; + if ((err = omac_process(omac, nonce, noncelen)) != CRYPT_OK) { + goto __ERR; } /* store result */ len = sizeof(eax->N); - if ((err = omac_done(&omac, eax->N, &len)) != CRYPT_OK) { - return err; + if ((err = omac_done(omac, eax->N, &len)) != CRYPT_OK) { + goto __ERR; } /* H = OMAC_1K(header) */ - zeromem(buf, sizeof(buf)); + zeromem(buf, MAXBLOCKSIZE); buf[blklen - 1] = 1; if ((err = omac_init(&eax->headeromac, cipher, key, keylen)) != CRYPT_OK) { - return err; + goto __ERR; } /* omac the [1]_n */ if ((err = omac_process(&eax->headeromac, buf, blklen)) != CRYPT_OK) { - return err; + goto __ERR; } /* omac the header */ if (headerlen != 0) { if ((err = omac_process(&eax->headeromac, header, headerlen)) != CRYPT_OK) { - return err; + goto __ERR; } } @@ -79,28 +93,34 @@ int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long /* setup the CTR mode */ if ((err = ctr_start(cipher, eax->N, key, keylen, 0, &eax->ctr)) != CRYPT_OK) { - return err; + goto __ERR; } /* use big-endian counter */ eax->ctr.mode = 1; /* setup the OMAC for the ciphertext */ if ((err = omac_init(&eax->ctomac, cipher, key, keylen)) != CRYPT_OK) { - return err; + goto __ERR; } /* omac [2]_n */ - zeromem(buf, sizeof(buf)); + zeromem(buf, MAXBLOCKSIZE); buf[blklen-1] = 2; if ((err = omac_process(&eax->ctomac, buf, blklen)) != CRYPT_OK) { - return err; + goto __ERR; } + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); - zeromem(&omac, sizeof(omac)); + zeromem(buf, MAXBLOCKSIZE); + zeromem(omac, sizeof(omac_state)); #endif - return CRYPT_OK; + + XFREE(omac); + XFREE(buf); + + return err; } #endif diff --git a/ecc.c b/ecc.c index ee19681..e5b8e4d 100644 --- a/ecc.c +++ b/ecc.c @@ -19,6 +19,9 @@ #ifdef MECC +/* size of our temp buffers for exported keys */ +#define ECC_BUF_SIZE 160 + /* This holds the key settings. ***MUST*** be organized by size from smallest to largest. */ static const struct { int size; @@ -368,10 +371,10 @@ done: static int ecc_mulmod(mp_int *k, ecc_point *G, ecc_point *R, mp_int *modulus) { ecc_point *tG, *M[8]; - int i, j, err; - mp_int mu; - mp_digit buf; - int first, bitbuf, bitcpy, bitcnt, mode, digidx; + int i, j, err; + mp_int mu; + mp_digit buf; + int first, bitbuf, bitcpy, bitcnt, mode, digidx; /* init barrett reduction */ if ((err = mp_init(&mu)) != MP_OKAY) { @@ -595,10 +598,10 @@ void ecc_sizes(int *low, int *high) int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) { - int x, err; - ecc_point *base; - mp_int prime; - unsigned char buf[128]; + int x, err; + ecc_point *base; + mp_int prime; + unsigned char *buf; _ARGCHK(key != NULL); @@ -616,19 +619,29 @@ int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) } key->idx = x; + /* allocate ram */ + base = NULL; + buf = XMALLOC(128); + if (buf == NULL) { + return CRYPT_MEM; + } + /* make up random string */ if (prng_descriptor[wprng].read(buf, (unsigned long)keysize, prng) != (unsigned long)keysize) { - return CRYPT_ERROR_READPRNG; + err = CRYPT_ERROR_READPRNG; + goto __ERR2; } /* setup the key variables */ if ((err = mp_init_multi(&key->pubkey.x, &key->pubkey.y, &key->k, &prime, NULL)) != MP_OKAY) { - return mpi_to_ltc_error(err); + err = mpi_to_ltc_error(err); + goto __ERR; } base = new_point(); if (base == NULL) { mp_clear_multi(&key->pubkey.x, &key->pubkey.y, &key->k, &prime, NULL); - return CRYPT_MEM; + err = CRYPT_MEM; + goto __ERR; } /* read in the specs for this key */ @@ -638,7 +651,7 @@ int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) if ((err = mp_read_unsigned_bin(&key->k, (unsigned char *)buf, keysize)) != MP_OKAY) { goto error; } /* make the public key */ - if ((err = ecc_mulmod(&key->k, base, &key->pubkey, &prime)) != CRYPT_OK) { goto done; } + if ((err = ecc_mulmod(&key->k, base, &key->pubkey, &prime)) != CRYPT_OK) { goto __ERR; } key->type = PK_PRIVATE; /* shrink key */ @@ -648,15 +661,19 @@ int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key) /* free up ram */ err = CRYPT_OK; - goto done; + goto __ERR; error: err = mpi_to_ltc_error(err); -done: +__ERR: del_point(base); mp_clear(&prime); +__ERR2: #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); + zeromem(buf, 128); #endif + + XFREE(buf); + return err; } diff --git a/ecc_sys.c b/ecc_sys.c index 33e1311..5b0ef82 100644 --- a/ecc_sys.c +++ b/ecc_sys.c @@ -13,10 +13,10 @@ int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, prng_state *prng, int wprng, int hash, ecc_key *key) { - unsigned char pub_expt[256], ecc_shared[256], skey[MAXBLOCKSIZE]; - ecc_key pubkey; - unsigned long x, y, z, hashsize, pubkeysize; - int err; + unsigned char *pub_expt, *ecc_shared, *skey; + ecc_key pubkey; + unsigned long x, y, z, hashsize, pubkeysize; + int err; _ARGCHK(inkey != NULL); _ARGCHK(out != NULL); @@ -41,29 +41,47 @@ int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, return err; } - pubkeysize = (unsigned long)sizeof(pub_expt); + pub_expt = XMALLOC(ECC_BUF_SIZE); + ecc_shared = XMALLOC(ECC_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (pub_expt == NULL || ecc_shared == NULL || skey == NULL) { + if (pub_expt != NULL) { + XFREE(pub_expt); + } + if (ecc_shared != NULL) { + XFREE(ecc_shared); + } + if (skey != NULL) { + XFREE(skey); + } + ecc_free(&pubkey); + return CRYPT_MEM; + } + + pubkeysize = ECC_BUF_SIZE; if ((err = ecc_export(pub_expt, &pubkeysize, PK_PUBLIC, &pubkey)) != CRYPT_OK) { ecc_free(&pubkey); - return err; + goto __ERR; } /* now check if the out buffer is big enough */ if (*len < (9 + PACKET_SIZE + pubkeysize + hash_descriptor[hash].hashsize)) { ecc_free(&pubkey); - return CRYPT_BUFFER_OVERFLOW; + err = CRYPT_BUFFER_OVERFLOW; + goto __ERR; } /* make random key */ hashsize = hash_descriptor[hash].hashsize; - x = (unsigned long)sizeof(ecc_shared); + x = ECC_BUF_SIZE; if ((err = ecc_shared_secret(&pubkey, key, ecc_shared, &x)) != CRYPT_OK) { ecc_free(&pubkey); - return err; + goto __ERR; } ecc_free(&pubkey); - z = (unsigned long)sizeof(skey); + z = MAXBLOCKSIZE; if ((err = hash_memory(hash, ecc_shared, x, skey, &z)) != CRYPT_OK) { - return err; + goto __ERR; } /* store header */ @@ -92,23 +110,30 @@ int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, } *len = y; + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK /* clean up */ - zeromem(pub_expt, sizeof(pub_expt)); - zeromem(ecc_shared, sizeof(ecc_shared)); - zeromem(skey, sizeof(skey)); + zeromem(pub_expt, ECC_BUF_SIZE); + zeromem(ecc_shared, ECC_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); #endif - return CRYPT_OK; + + XFREE(skey); + XFREE(ecc_shared); + XFREE(pub_expt); + + return err; } int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *outkey, unsigned long *keylen, ecc_key *key) { - unsigned char shared_secret[256], skey[MAXBLOCKSIZE]; - unsigned long x, y, z, hashsize, keysize; - int hash, err; - ecc_key pubkey; + unsigned char *shared_secret, *skey; + unsigned long x, y, z, hashsize, keysize; + int hash, err; + ecc_key pubkey; _ARGCHK(in != NULL); _ARGCHK(outkey != NULL); @@ -155,22 +180,37 @@ int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, } y += x; + /* allocate memory */ + shared_secret = XMALLOC(ECC_BUF_SIZE); + skey = XMALLOC(MAXBLOCKSIZE); + if (shared_secret == NULL || skey == NULL) { + if (shared_secret != NULL) { + XFREE(shared_secret); + } + if (skey != NULL) { + XFREE(skey); + } + ecc_free(&pubkey); + return CRYPT_MEM; + } + /* make shared key */ - x = (unsigned long)sizeof(shared_secret); + x = ECC_BUF_SIZE; if ((err = ecc_shared_secret(key, &pubkey, shared_secret, &x)) != CRYPT_OK) { ecc_free(&pubkey); - return err; + goto __ERR; } ecc_free(&pubkey); - z = (unsigned long)sizeof(skey); + z = MAXBLOCKSIZE; if ((err = hash_memory(hash, shared_secret, x, skey, &z)) != CRYPT_OK) { - return err; + goto __ERR; } LOAD32L(keysize, in+y); if (inlen < keysize) { - return CRYPT_INVALID_PACKET; + err = CRYPT_INVALID_PACKET; + goto __ERR; } else { inlen -= keysize; } @@ -178,7 +218,7 @@ int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, if (*keylen < keysize) { err = CRYPT_BUFFER_OVERFLOW; - goto done; + goto __ERR; } /* Decrypt the key */ @@ -189,11 +229,15 @@ int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, *keylen = keysize; err = CRYPT_OK; -done: +__ERR: #ifdef CLEAN_STACK - zeromem(shared_secret, sizeof(shared_secret)); - zeromem(skey, sizeof(skey)); + zeromem(shared_secret, ECC_BUF_SIZE); + zeromem(skey, MAXBLOCKSIZE); #endif + + XFREE(skey); + XFREE(shared_secret); + return err; } @@ -201,11 +245,11 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, prng_state *prng, int wprng, ecc_key *key) { - ecc_key pubkey; - mp_int b, p; - unsigned char epubkey[256], er[256]; + ecc_key pubkey; + mp_int b, p; + unsigned char *epubkey, *er; unsigned long x, y, pubkeysize, rsize; - int err; + int err; _ARGCHK(in != NULL); _ARGCHK(out != NULL); @@ -231,17 +275,32 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, return err; } - pubkeysize = (unsigned long)sizeof(epubkey); + /* allocate ram */ + epubkey = XMALLOC(ECC_BUF_SIZE); + er = XMALLOC(ECC_BUF_SIZE); + if (epubkey == NULL || er == NULL) { + if (epubkey != NULL) { + XFREE(epubkey); + } + if (er != NULL) { + XFREE(er); + } + ecc_free(&pubkey); + return CRYPT_MEM; + } + + pubkeysize = ECC_BUF_SIZE; if ((err = ecc_export(epubkey, &pubkeysize, PK_PUBLIC, &pubkey)) != CRYPT_OK) { ecc_free(&pubkey); - return err; + goto __ERR; } /* get the hash and load it as a bignum into 'b' */ /* init the bignums */ if ((err = mp_init_multi(&b, &p, NULL)) != MP_OKAY) { ecc_free(&pubkey); - return mpi_to_ltc_error(err); + err = mpi_to_ltc_error(err); + goto __ERR; } if ((err = mp_read_radix(&p, (char *)sets[key->idx].order, 64)) != MP_OKAY) { goto error; } if ((err = mp_read_unsigned_bin(&b, (unsigned char *)in, (int)inlen)) != MP_OKAY) { goto error; } @@ -253,7 +312,7 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, /* export it */ rsize = (unsigned long)mp_unsigned_bin_size(&b); - if (rsize > (unsigned long)sizeof(er)) { + if (rsize > ECC_BUF_SIZE) { err = CRYPT_BUFFER_OVERFLOW; goto error; } @@ -262,7 +321,7 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, /* now lets check the outlen before we write */ if (*outlen < (12 + rsize + pubkeysize)) { err = CRYPT_BUFFER_OVERFLOW; - goto done; + goto __ERR; } /* lets output */ @@ -288,20 +347,24 @@ int ecc_sign_hash(const unsigned char *in, unsigned long inlen, /* store header */ packet_store_header(out, PACKET_SECT_ECC, PACKET_SUB_SIGNED); - - /* clear memory */ *outlen = y; + + /* all ok */ err = CRYPT_OK; - goto done; + goto __ERR; error: err = mpi_to_ltc_error(err); -done: +__ERR: mp_clear_multi(&b, &p, NULL); ecc_free(&pubkey); #ifdef CLEAN_STACK - zeromem(er, sizeof(er)); - zeromem(epubkey, sizeof(epubkey)); + zeromem(er, ECC_BUF_SIZE); + zeromem(epubkey, ECC_BUF_SIZE); #endif + + XFREE(epubkey); + XFREE(er); + return err; } @@ -322,11 +385,11 @@ int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long inlen, int *stat, ecc_key *key) { - ecc_point *mG; - ecc_key pubkey; - mp_int b, p, m, mu; + ecc_point *mG; + ecc_key pubkey; + mp_int b, p, m, mu; unsigned long x, y; - int err; + int err; _ARGCHK(sig != NULL); _ARGCHK(hash != NULL); diff --git a/hash_filehandle.c b/hash_filehandle.c index ca6be90..777588a 100644 --- a/hash_filehandle.c +++ b/hash_filehandle.c @@ -36,14 +36,16 @@ int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outle hash_descriptor[hash].init(&md); do { x = fread(buf, 1, sizeof(buf), in); - hash_descriptor[hash].process(&md, buf, x); + if ((err = hash_descriptor[hash].process(&md, buf, x)) != CRYPT_OK) { + return err; + } } while (x == sizeof(buf)); - hash_descriptor[hash].done(&md, dst); + err = hash_descriptor[hash].done(&md, dst); #ifdef CLEAN_STACK zeromem(buf, sizeof(buf)); #endif - return CRYPT_OK; + return err; #endif } diff --git a/hash_memory.c b/hash_memory.c index 976a145..89abb85 100644 --- a/hash_memory.c +++ b/hash_memory.c @@ -12,7 +12,7 @@ int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen) { - hash_state md; + hash_state *md; int err; _ARGCHK(data != NULL); @@ -26,10 +26,23 @@ int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned if (*outlen < hash_descriptor[hash].hashsize) { return CRYPT_BUFFER_OVERFLOW; } - *outlen = hash_descriptor[hash].hashsize; - hash_descriptor[hash].init(&md); - hash_descriptor[hash].process(&md, data, len); - hash_descriptor[hash].done(&md, dst); - return CRYPT_OK; + md = XMALLOC(sizeof(hash_state)); + if (md == NULL) { + return CRYPT_MEM; + } + + hash_descriptor[hash].init(md); + if ((err = hash_descriptor[hash].process(md, data, len)) != CRYPT_OK) { + goto __ERR; + } + err = hash_descriptor[hash].done(md, dst); + *outlen = hash_descriptor[hash].hashsize; +__ERR: +#ifdef CLEAN_STACK + zeromem(md, sizeof(hash_state)); +#endif + XFREE(md); + + return err; } diff --git a/hmac_done.c b/hmac_done.c index 57ebbcd..c308cc3 100644 --- a/hmac_done.c +++ b/hmac_done.c @@ -35,14 +35,14 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) { - unsigned char buf[MAXBLOCKSIZE]; - unsigned char isha[MAXBLOCKSIZE]; + unsigned char *buf, *isha; unsigned long hashsize, i; int hash, err; - _ARGCHK(hmac != NULL); + _ARGCHK(hmac != NULL); _ARGCHK(hashOut != NULL); + /* test hash */ hash = hmac->hash; if((err = hash_is_valid(hash)) != CRYPT_OK) { return err; @@ -51,9 +51,22 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) /* get the hash message digest size */ hashsize = hash_descriptor[hash].hashsize; + /* allocate buffers */ + buf = XMALLOC(HMAC_BLOCKSIZE); + isha = XMALLOC(hashsize); + if (buf == NULL || isha == NULL) { + if (buf != NULL) { + XFREE(buf); + } + if (isha != NULL) { + XFREE(isha); + } + return CRYPT_MEM; + } + // Get the hash of the first HMAC vector plus the data if ((err = hash_descriptor[hash].done(&hmac->md, isha)) != CRYPT_OK) { - return err; + goto __ERR; } // Create the second HMAC vector vector for step (3) @@ -63,9 +76,15 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) // Now calculate the "outer" hash for step (5), (6), and (7) hash_descriptor[hash].init(&hmac->md); - hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE); - hash_descriptor[hash].process(&hmac->md, isha, hashsize); - hash_descriptor[hash].done(&hmac->md, buf); + if ((err = hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE)) != CRYPT_OK) { + goto __ERR; + } + if ((err = hash_descriptor[hash].process(&hmac->md, isha, hashsize)) != CRYPT_OK) { + goto __ERR; + } + if ((err = hash_descriptor[hash].done(&hmac->md, buf)) != CRYPT_OK) { + goto __ERR; + } // copy to output for (i = 0; i < hashsize && i < *outlen; i++) { @@ -73,12 +92,18 @@ int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen) } *outlen = i; + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(isha, sizeof(buf)); - zeromem(buf, sizeof(isha)); + zeromem(isha, hashsize); + zeromem(buf, hashsize); zeromem(hmac, sizeof(*hmac)); #endif - return CRYPT_OK; + + XFREE(isha); + XFREE(buf); + + return err; } #endif diff --git a/hmac_file.c b/hmac_file.c index 23194bd..e88b62f 100644 --- a/hmac_file.c +++ b/hmac_file.c @@ -12,27 +12,8 @@ #include "mycrypt.h" -/* - (1) append zeros to the end of K to create a B byte string - (e.g., if K is of length 20 bytes and B=64, then K will be - appended with 44 zero bytes 0x00) - (2) XOR (bitwise exclusive-OR) the B byte string computed in step - (1) with ipad (ipad = the byte 0x36 repeated B times) - (3) append the stream of data 'text' to the B byte string resulting - from step (2) - (4) apply H to the stream generated in step (3) - (5) XOR (bitwise exclusive-OR) the B byte string computed in - step (1) with opad (opad = the byte 0x5C repeated B times.) - (6) append the H result from step (4) to the B byte string - resulting from step (5) - (7) apply H to the stream generated in step (6) and output - the result -*/ - #ifdef HMAC -#define HMAC_BLOCKSIZE hash_descriptor[hash].blocksize - /* hmac_file added by Tom St Denis */ int hmac_file(int hash, const char *fname, const unsigned char *key, unsigned long keylen, diff --git a/hmac_init.c b/hmac_init.c index 7a9b801..076b529 100644 --- a/hmac_init.c +++ b/hmac_init.c @@ -35,38 +35,44 @@ int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen) { - unsigned char buf[MAXBLOCKSIZE]; + unsigned char *buf; unsigned long hashsize; unsigned long i, z; int err; _ARGCHK(hmac != NULL); - _ARGCHK(key != NULL); + _ARGCHK(key != NULL); + /* valid hash? */ if ((err = hash_is_valid(hash)) != CRYPT_OK) { return err; } + hmac->hash = hash; + hashsize = hash_descriptor[hash].hashsize; /* valid key length? */ if (keylen == 0) { return CRYPT_INVALID_KEYSIZE; } - hmac->hash = hash; + /* allocate ram for buf */ + buf = XMALLOC(HMAC_BLOCKSIZE); + if (buf == NULL) { + return CRYPT_MEM; + } // (1) make sure we have a large enough key - hashsize = hash_descriptor[hash].hashsize; if(keylen > HMAC_BLOCKSIZE) { z = (unsigned long)sizeof(hmac->key); if ((err = hash_memory(hash, key, keylen, hmac->key, &z)) != CRYPT_OK) { - return err; + goto __ERR; } if(hashsize < HMAC_BLOCKSIZE) { zeromem((hmac->key) + hashsize, (size_t)(HMAC_BLOCKSIZE - hashsize)); } keylen = hashsize; } else { - memcpy(hmac->key, key, (size_t)keylen); + XMEMCPY(hmac->key, key, (size_t)keylen); if(keylen < HMAC_BLOCKSIZE) { zeromem((hmac->key) + keylen, (size_t)(HMAC_BLOCKSIZE - keylen)); } @@ -79,9 +85,14 @@ int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned lon // Pre-pend that to the hash data hash_descriptor[hash].init(&hmac->md); - hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE); - - return CRYPT_OK; + err = hash_descriptor[hash].process(&hmac->md, buf, HMAC_BLOCKSIZE); +__ERR: +#ifdef CLEAN_STACK + zeromem(buf, HMAC_BLOCKSIZE); +#endif + + XFREE(buf); + return err; } #endif diff --git a/hmac_memory.c b/hmac_memory.c index e438a30..d6d3364 100644 --- a/hmac_memory.c +++ b/hmac_memory.c @@ -12,55 +12,46 @@ #include "mycrypt.h" -/* - (1) append zeros to the end of K to create a B byte string - (e.g., if K is of length 20 bytes and B=64, then K will be - appended with 44 zero bytes 0x00) - (2) XOR (bitwise exclusive-OR) the B byte string computed in step - (1) with ipad (ipad = the byte 0x36 repeated B times) - (3) append the stream of data 'text' to the B byte string resulting - from step (2) - (4) apply H to the stream generated in step (3) - (5) XOR (bitwise exclusive-OR) the B byte string computed in - step (1) with opad (opad = the byte 0x5C repeated B times.) - (6) append the H result from step (4) to the B byte string - resulting from step (5) - (7) apply H to the stream generated in step (6) and output - the result -*/ - #ifdef HMAC -#define HMAC_BLOCKSIZE hash_descriptor[hash].blocksize - int hmac_memory(int hash, const unsigned char *key, unsigned long keylen, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *dstlen) { - hmac_state hmac; + hmac_state *hmac; int err; _ARGCHK(key != NULL); _ARGCHK(data != NULL); _ARGCHK(dst != NULL); _ARGCHK(dstlen != NULL); - - if((err = hash_is_valid(hash)) != CRYPT_OK) { - return err; + + /* allocate ram for hmac state */ + hmac = XMALLOC(sizeof(hmac_state)); + if (hmac == NULL) { + return CRYPT_MEM; } - if ((err = hmac_init(&hmac, hash, key, keylen)) != CRYPT_OK) { - return err; + if ((err = hmac_init(hmac, hash, key, keylen)) != CRYPT_OK) { + goto __ERR; } - if ((err = hmac_process(&hmac, data, len)) != CRYPT_OK) { - return err; + if ((err = hmac_process(hmac, data, len)) != CRYPT_OK) { + goto __ERR; } - if ((err = hmac_done(&hmac, dst, dstlen)) != CRYPT_OK) { - return err; + if ((err = hmac_done(hmac, dst, dstlen)) != CRYPT_OK) { + goto __ERR; } - return CRYPT_OK; + + err = CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(hmac, sizeof(hmac_state)); +#endif + + XFREE(hmac); + return err; } #endif diff --git a/hmac_process.c b/hmac_process.c index fa4c1e6..ebc6f4c 100644 --- a/hmac_process.c +++ b/hmac_process.c @@ -12,27 +12,8 @@ #include "mycrypt.h" -/* - (1) append zeros to the end of K to create a B byte string - (e.g., if K is of length 20 bytes and B=64, then K will be - appended with 44 zero bytes 0x00) - (2) XOR (bitwise exclusive-OR) the B byte string computed in step - (1) with ipad (ipad = the byte 0x36 repeated B times) - (3) append the stream of data 'text' to the B byte string resulting - from step (2) - (4) apply H to the stream generated in step (3) - (5) XOR (bitwise exclusive-OR) the B byte string computed in - step (1) with opad (opad = the byte 0x5C repeated B times.) - (6) append the H result from step (4) to the B byte string - resulting from step (5) - (7) apply H to the stream generated in step (6) and output - the result -*/ - #ifdef HMAC -#define HMAC_BLOCKSIZE hash_descriptor[hash].blocksize - int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len) { int err; diff --git a/ltc_tommath.h b/ltc_tommath.h index 0029994..6f855ce 100644 --- a/ltc_tommath.h +++ b/ltc_tommath.h @@ -27,7 +27,7 @@ #define MAX(x,y) ((x)>(y)?(x):(y)) #ifdef __cplusplus -extern "C" { + "C" { /* C++ compilers don't like assigning void * to mp_digit * */ #define OPT_CAST(x) (x *) @@ -99,12 +99,16 @@ extern "C" { #define XFREE free #define XREALLOC realloc #define XCALLOC calloc + #define XMEMSET memset + #define XMEMCPY memcpy #else /* prototypes for our heap functions */ - extern void *XMALLOC(size_t n); - extern void *REALLOC(void *p, size_t n); - extern void *XCALLOC(size_t n, size_t s); - extern void XFREE(void *p); + void *XMALLOC(size_t n); + void *REALLOC(void *p, size_t n); + void *XCALLOC(size_t n, size_t s); + void XFREE(void *p); + void *XMEMCPY(void *dest, const void *src, size_t n); + int XMEMCMP(const void *s1, const void *s2, size_t n); #endif #endif @@ -143,7 +147,7 @@ extern "C" { typedef int mp_err; /* you'll have to tune these... */ -extern int KARATSUBA_MUL_CUTOFF, + int KARATSUBA_MUL_CUTOFF, KARATSUBA_SQR_CUTOFF, TOOM_MUL_CUTOFF, TOOM_SQR_CUTOFF; @@ -546,7 +550,7 @@ int mp_exptmod_fast(mp_int *G, mp_int *X, mp_int *P, mp_int *Y, int mode); int s_mp_exptmod (mp_int * G, mp_int * X, mp_int * P, mp_int * Y); void bn_reverse(unsigned char *s, int len); -extern const char *mp_s_rmap; + const char *mp_s_rmap; #ifdef __cplusplus } diff --git a/makefile b/makefile index ae4a542..625cb4a 100644 --- a/makefile +++ b/makefile @@ -2,14 +2,9 @@ # # Tom St Denis # Modified by Clay Culver -# -# NOTE: This should later be replaced by autoconf/automake scripts, but for -# the time being this is actually pretty clean. The only ugly part is -# handling CFLAGS so that the x86 specific optimizations don't break -# a build. This is easy to remedy though, for those that have problems. # The version -VERSION=0.96 +VERSION=0.97 # Compiler and Linker Names #CC=gcc @@ -26,15 +21,14 @@ CFLAGS += -c -I./ -Wall -Wsign-compare -W -Wshadow # optimize for SPEED #CFLAGS += -O3 -funroll-loops -#add -fomit-frame-pointer. GCC v3.2 is buggy for certain platforms! +#add -fomit-frame-pointer. hinders debugging! CFLAGS += -fomit-frame-pointer # optimize for SIZE CFLAGS += -Os -# compile for DEBUGING +# compile for DEBUGING (required for ccmalloc checking!!!) #CFLAGS += -g3 -#ch1-01-3 #These flags control how the library gets built. @@ -147,8 +141,11 @@ default:library #ciphers come in two flavours... enc+dec and enc aes_enc.o: aes.c aes_tab.c $(CC) $(CFLAGS) -DENCRYPT_ONLY -c aes.c -o 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 @@ -195,7 +192,7 @@ clean: rm -f $(OBJECTS) $(TESTOBJECTS) $(HASHOBJECTS) $(CRYPTOBJECTS) $(SMALLOBJECTS) $(LEFTOVERS) $(LIBNAME) rm -f $(TEST) $(HASH) $(COMPRESSED) $(PROFS) $(PROF) $(TVS) $(TV) rm -f *.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/* + *.gcda *.gcno demos/*.gcno demos/*.gcda *~ doc/* cd demos/test ; make clean #This builds the crypt.pdf file. Note that the rm -f *.pdf has been removed @@ -206,8 +203,8 @@ docs: crypt.tex rm -f doc/crypt.pdf $(LEFTOVERS) echo "hello" > crypt.ind latex crypt > /dev/null - makeindex crypt > /dev/null latex crypt > /dev/null + makeindex crypt.idx > /dev/null latex crypt > /dev/null dvipdf crypt mv -ivf crypt.pdf doc/crypt.pdf @@ -217,9 +214,13 @@ docdvi: crypt.tex echo hello > crypt.ind latex crypt > /dev/null latex crypt > /dev/null - makeindex crypt + makeindex.idx crypt latex crypt > /dev/null +#pretty build +pretty: + perl pretty.build + #beta beta: clean cd .. ; rm -rf crypt* libtomcrypt-$(VERSION)-beta ; mkdir libtomcrypt-$(VERSION)-beta ; \ @@ -231,5 +232,4 @@ zipup: clean docs cd .. ; rm -rf crypt* libtomcrypt-$(VERSION) ; mkdir 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 + gpg -b -a crypt-$(VERSION).tar.bz2 ; gpg -b -a crypt-$(VERSION).zip diff --git a/makefile.icc b/makefile.icc index 208a3cf..e49cb66 100644 --- a/makefile.icc +++ b/makefile.icc @@ -150,7 +150,7 @@ LEFTOVERS=*.dvi *.log *.aux *.toc *.idx *.ilg *.ind COMPRESSED=crypt.tar.bz2 crypt.zip crypt.tar.gz #Header files used by libtomcrypt. -HEADERS=tommath.h mycrypt_cfg.h mycrypt_gf.h mycrypt_kr.h \ +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 diff --git a/md2.c b/md2.c index e60b995..30ac4ec 100644 --- a/md2.c +++ b/md2.c @@ -111,7 +111,7 @@ int md2_process(hash_state *md, const unsigned char *buf, unsigned long len) } while (len > 0) { n = MIN(len, (16 - md->md2.curlen)); - memcpy(md->md2.buf + md->md2.curlen, buf, (size_t)n); + XMEMCPY(md->md2.buf + md->md2.curlen, buf, (size_t)n); md->md2.curlen += n; buf += n; len -= n; @@ -149,11 +149,11 @@ int md2_done(hash_state * md, unsigned char *hash) md2_update_chksum(md); /* hash checksum */ - memcpy(md->md2.buf, md->md2.chksum, 16); + XMEMCPY(md->md2.buf, md->md2.chksum, 16); md2_compress(md); /* output is lower 16 bytes of X */ - memcpy(hash, md->md2.X, 16); + XMEMCPY(hash, md->md2.X, 16); #ifdef CLEAN_STACK zeromem(md, sizeof(hash_state)); diff --git a/modes_test.c b/modes_test.c deleted file mode 100644 index d2c8920..0000000 --- a/modes_test.c +++ /dev/null @@ -1,46 +0,0 @@ -/* test CFB/OFB/CBC modes */ -#include "test.h" - -int modes_test(void) -{ - unsigned char pt[64], ct[64], tmp[64], key[16], iv[16]; - int x, cipher_idx; - symmetric_CBC cbc; - - /* make a random pt, key and iv */ - yarrow_read(pt, 64, &test_yarrow); - yarrow_read(key, 16, &test_yarrow); - yarrow_read(iv, 16, &test_yarrow); - -/* test CBC mode */ - cipher_idx = find_cipher("aes"); - if (cipher_idx == -1) { - printf("test requires AES"); - return 1; - } - - - /* encode the block */ - DO(cbc_start(cipher_idx, iv, key, 16, 0, &cbc)); - for (x = 0; x < 4; x++) { - DO(cbc_encrypt(pt+x*16, ct+x*16, &cbc)); - } - - /* decode the block */ - DO(cbc_start(cipher_idx, iv, key, 16, 0, &cbc)); - for (x = 0; x < 4; x++) { - DO(cbc_decrypt(ct+x*16, tmp+x*16, &cbc)); - } - if (memcmp(tmp, pt, 64) != 0) { - printf("CBC failed"); - return 1; - } - -/* - extern int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, - int keylen, int num_rounds, symmetric_CBC *cbc); -extern int cbc_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_CBC *cbc); -extern int cbc_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_CBC *cbc); -*/ - -} diff --git a/mpi.c b/mpi.c index 7845a27..d3d9918 100644 --- a/mpi.c +++ b/mpi.c @@ -408,7 +408,7 @@ fast_s_mp_mul_digs (mp_int * a, mp_int * b, mp_int * c, int digs) } /* clear temp buf (the columns) */ - memset (W, 0, sizeof (mp_word) * digs); + XMEMSET (W, 0, sizeof (mp_word) * digs); /* calculate the columns */ pa = a->used; @@ -538,7 +538,7 @@ fast_s_mp_mul_high_digs (mp_int * a, mp_int * b, mp_int * c, int digs) /* like the other comba method we compute the columns first */ pa = a->used; pb = b->used; - memset (W + digs, 0, (pa + pb + 1 - digs) * sizeof (mp_word)); + XMEMSET (W + digs, 0, (pa + pb + 1 - digs) * sizeof (mp_word)); for (ix = 0; ix < pa; ix++) { { register mp_digit tmpx, *tmpy; @@ -654,8 +654,8 @@ int fast_s_mp_sqr (mp_int * a, mp_int * b) * the inner product can be doubled using n doublings instead of * n**2 */ - memset (W, 0, newused * sizeof (mp_word)); - memset (W2, 0, newused * sizeof (mp_word)); + XMEMSET (W, 0, newused * sizeof (mp_word)); + XMEMSET (W2, 0, newused * sizeof (mp_word)); /* This computes the inner product. To simplify the inner N**2 loop * the multiplication by two is done afterwards in the N loop. @@ -1145,7 +1145,7 @@ mp_clear (mp_int * a) /* only do anything if a hasn't been freed previously */ if (a->dp != NULL) { /* first zero the digits */ - memset (a->dp, 0, sizeof (mp_digit) * a->used); + XMEMSET (a->dp, 0, sizeof (mp_digit) * a->used); /* free ram */ XFREE(a->dp); @@ -7538,7 +7538,7 @@ mp_zero (mp_int * a) { a->sign = MP_ZPOS; a->used = 0; - memset (a->dp, 0, sizeof (mp_digit) * a->alloc); + XMEMSET (a->dp, 0, sizeof (mp_digit) * a->alloc); } /* End: bn_mp_zero.c */ diff --git a/mycrypt.h b/mycrypt.h index 00965b4..9e3ff78 100644 --- a/mycrypt.h +++ b/mycrypt.h @@ -12,18 +12,18 @@ #include #ifdef __cplusplus -extern "C" { + "C" { #endif /* version */ -#define CRYPT 0x0096 -#define SCRYPT "0.96" +#define CRYPT 0x0097 +#define SCRYPT "0.97" /* max size of either a cipher/hash block or symmetric key [largest of the two] */ -#define MAXBLOCKSIZE 128 +#define MAXBLOCKSIZE 64 /* descriptor table size */ -#define TAB_SIZE 32 +#define TAB_SIZE 32 /* error codes [will be expanded in future releases] */ enum { diff --git a/mycrypt_argchk.h b/mycrypt_argchk.h index 8f38e54..46b0e30 100644 --- a/mycrypt_argchk.h +++ b/mycrypt_argchk.h @@ -7,7 +7,7 @@ #include /* this is the default LibTomCrypt macro */ -extern void crypt_argchk(char *v, char *s, int d); + void crypt_argchk(char *v, char *s, int d); #define _ARGCHK(x) if (!(x)) { crypt_argchk(#x, __FILE__, __LINE__); } #elif ARGTYPE == 1 diff --git a/mycrypt_cfg.h b/mycrypt_cfg.h index 4d6c5db..175c0ea 100644 --- a/mycrypt_cfg.h +++ b/mycrypt_cfg.h @@ -8,13 +8,17 @@ #define MYCRYPT_CFG_H /* you can change how memory allocation works ... */ -extern void *XMALLOC(size_t n); -extern void *REALLOC(void *p, size_t n); -extern void *XCALLOC(size_t n, size_t s); -extern void XFREE(void *p); + void *XMALLOC(size_t n); + void *REALLOC(void *p, size_t n); + void *XCALLOC(size_t n, size_t s); + void XFREE(void *p); /* change the clock function too */ -extern clock_t XCLOCK(void); + clock_t XCLOCK(void); + +/* various other functions */ +void *XMEMCPY(void *dest, const void *src, size_t n); +int XMEMCMP(const void *s1, const void *s2, size_t n); /* ch1-01-1 */ /* type of argument checking, 0=default, 1=fatal and 2=none */ diff --git a/mycrypt_cipher.h b/mycrypt_cipher.h index ec68bbd..65749db 100644 --- a/mycrypt_cipher.h +++ b/mycrypt_cipher.h @@ -179,7 +179,7 @@ typedef struct Symmetric_CTR { } symmetric_CTR; /* cipher descriptor table, last entry has "name == NULL" to mark the end of table */ -extern struct _cipher_descriptor { +extern struct _cipher_descriptor { char *name; unsigned char ID; int min_key_length, max_key_length, block_length, default_rounds; @@ -191,65 +191,65 @@ extern struct _cipher_descriptor { } cipher_descriptor[]; #ifdef BLOWFISH -extern int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int blowfish_test(void); -extern int blowfish_keysize(int *desired_keysize); -extern const struct _cipher_descriptor blowfish_desc; + int blowfish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void blowfish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void blowfish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int blowfish_test(void); + int blowfish_keysize(int *desired_keysize); + extern const struct _cipher_descriptor blowfish_desc; #endif #ifdef RC5 -extern int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int rc5_test(void); -extern int rc5_keysize(int *desired_keysize); -extern const struct _cipher_descriptor rc5_desc; + int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void rc5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void rc5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int rc5_test(void); + int rc5_keysize(int *desired_keysize); + extern const struct _cipher_descriptor rc5_desc; #endif #ifdef RC6 -extern int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int rc6_test(void); -extern int rc6_keysize(int *desired_keysize); -extern const struct _cipher_descriptor rc6_desc; + int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void rc6_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void rc6_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int rc6_test(void); + int rc6_keysize(int *desired_keysize); + extern const struct _cipher_descriptor rc6_desc; #endif #ifdef RC2 -extern int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void rc2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void rc2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int rc2_test(void); -extern int rc2_keysize(int *desired_keysize); -extern const struct _cipher_descriptor rc2_desc; + int rc2_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void rc2_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void rc2_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int rc2_test(void); + int rc2_keysize(int *desired_keysize); + extern const struct _cipher_descriptor rc2_desc; #endif #ifdef SAFERP -extern int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int saferp_test(void); -extern int saferp_keysize(int *desired_keysize); -extern const struct _cipher_descriptor saferp_desc; + int saferp_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void saferp_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void saferp_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int saferp_test(void); + int saferp_keysize(int *desired_keysize); + extern const struct _cipher_descriptor saferp_desc; #endif #ifdef SAFER -extern int safer_k64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern int safer_sk64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern int safer_k128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern int safer_sk128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void safer_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void safer_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int safer_k64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + int safer_sk64_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + int safer_k128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + int safer_sk128_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void safer_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void safer_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int safer_k64_test(void); -extern int safer_sk64_test(void); -extern int safer_sk128_test(void); + int safer_k64_test(void); + int safer_sk64_test(void); + int safer_sk128_test(void); -extern int safer_64_keysize(int *desired_keysize); -extern int safer_128_keysize(int *desired_keysize); -extern const struct _cipher_descriptor safer_k64_desc, safer_k128_desc, safer_sk64_desc, safer_sk128_desc; + int safer_64_keysize(int *desired_keysize); + int safer_128_keysize(int *desired_keysize); + extern const struct _cipher_descriptor safer_k64_desc, safer_k128_desc, safer_sk64_desc, safer_sk128_desc; #endif #ifdef RIJNDAEL @@ -265,132 +265,132 @@ extern const struct _cipher_descriptor safer_k64_desc, safer_k128_desc, safer_sk #define aes_enc_ecb_encrypt rijndael_enc_ecb_encrypt #define aes_enc_keysize rijndael_enc_keysize -extern int rijndael_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int rijndael_test(void); -extern int rijndael_keysize(int *desired_keysize); + int rijndael_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void rijndael_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void rijndael_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int rijndael_test(void); + int rijndael_keysize(int *desired_keysize); -extern int rijndael_enc_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void rijndael_enc_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern int rijndael_enc_keysize(int *desired_keysize); + int rijndael_enc_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void rijndael_enc_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + int rijndael_enc_keysize(int *desired_keysize); -extern const struct _cipher_descriptor rijndael_desc, aes_desc; -extern const struct _cipher_descriptor rijndael_enc_desc, aes_enc_desc; + extern const struct _cipher_descriptor rijndael_desc, aes_desc; + extern const struct _cipher_descriptor rijndael_enc_desc, aes_enc_desc; #endif #ifdef XTEA -extern int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int xtea_test(void); -extern int xtea_keysize(int *desired_keysize); -extern const struct _cipher_descriptor xtea_desc; + int xtea_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void xtea_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void xtea_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int xtea_test(void); + int xtea_keysize(int *desired_keysize); + extern const struct _cipher_descriptor xtea_desc; #endif #ifdef TWOFISH -extern int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int twofish_test(void); -extern int twofish_keysize(int *desired_keysize); -extern const struct _cipher_descriptor twofish_desc; + int twofish_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void twofish_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void twofish_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int twofish_test(void); + int twofish_keysize(int *desired_keysize); + extern const struct _cipher_descriptor twofish_desc; #endif #ifdef DES -extern int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int des_test(void); -extern int des_keysize(int *desired_keysize); + int des_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void des_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void des_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int des_test(void); + int des_keysize(int *desired_keysize); -extern int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int des3_test(void); -extern int des3_keysize(int *desired_keysize); + int des3_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void des3_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void des3_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int des3_test(void); + int des3_keysize(int *desired_keysize); -extern const struct _cipher_descriptor des_desc, des3_desc; + extern const struct _cipher_descriptor des_desc, des3_desc; #endif #ifdef CAST5 -extern int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int cast5_test(void); -extern int cast5_keysize(int *desired_keysize); -extern const struct _cipher_descriptor cast5_desc; + int cast5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void cast5_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void cast5_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int cast5_test(void); + int cast5_keysize(int *desired_keysize); + extern const struct _cipher_descriptor cast5_desc; #endif #ifdef NOEKEON -extern int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int noekeon_test(void); -extern int noekeon_keysize(int *desired_keysize); -extern const struct _cipher_descriptor noekeon_desc; + int noekeon_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void noekeon_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void noekeon_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int noekeon_test(void); + int noekeon_keysize(int *desired_keysize); + extern const struct _cipher_descriptor noekeon_desc; #endif #ifdef SKIPJACK -extern int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); -extern void skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); -extern void skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); -extern int skipjack_test(void); -extern int skipjack_keysize(int *desired_keysize); -extern const struct _cipher_descriptor skipjack_desc; + int skipjack_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_key *skey); + void skipjack_ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_key *key); + void skipjack_ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_key *key); + int skipjack_test(void); + int skipjack_keysize(int *desired_keysize); + extern const struct _cipher_descriptor skipjack_desc; #endif #ifdef ECB -extern int ecb_start(int cipher, const unsigned char *key, + int ecb_start(int cipher, const unsigned char *key, int keylen, int num_rounds, symmetric_ECB *ecb); -extern int ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_ECB *ecb); -extern int ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_ECB *ecb); + int ecb_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_ECB *ecb); + int ecb_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_ECB *ecb); #endif #ifdef CFB -extern int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, + int cfb_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_CFB *cfb); -extern int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb); -extern int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb); -extern int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb); -extern int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb); + int cfb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CFB *cfb); + int cfb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CFB *cfb); + int cfb_getiv(unsigned char *IV, unsigned long *len, symmetric_CFB *cfb); + int cfb_setiv(const unsigned char *IV, unsigned long len, symmetric_CFB *cfb); #endif #ifdef OFB -extern int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, + int ofb_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_OFB *ofb); -extern int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb); -extern int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb); -extern int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb); -extern int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb); + int ofb_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_OFB *ofb); + int ofb_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_OFB *ofb); + int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb); + int ofb_setiv(const unsigned char *IV, unsigned long len, symmetric_OFB *ofb); #endif #ifdef CBC -extern int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, + int cbc_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_CBC *cbc); -extern int cbc_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_CBC *cbc); -extern int cbc_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_CBC *cbc); -extern int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc); -extern int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc); + int cbc_encrypt(const unsigned char *pt, unsigned char *ct, symmetric_CBC *cbc); + int cbc_decrypt(const unsigned char *ct, unsigned char *pt, symmetric_CBC *cbc); + int cbc_getiv(unsigned char *IV, unsigned long *len, symmetric_CBC *cbc); + int cbc_setiv(const unsigned char *IV, unsigned long len, symmetric_CBC *cbc); #endif #ifdef CTR -extern int ctr_start(int cipher, const unsigned char *IV, const unsigned char *key, + int ctr_start(int cipher, const unsigned char *IV, const unsigned char *key, int keylen, int num_rounds, symmetric_CTR *ctr); -extern int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr); -extern int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr); -extern int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr); -extern int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr); + int ctr_encrypt(const unsigned char *pt, unsigned char *ct, unsigned long len, symmetric_CTR *ctr); + int ctr_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_CTR *ctr); + int ctr_getiv(unsigned char *IV, unsigned long *len, symmetric_CTR *ctr); + int ctr_setiv(const unsigned char *IV, unsigned long len, symmetric_CTR *ctr); #endif -extern int find_cipher(const char *name); -extern int find_cipher_any(const char *name, int blocklen, int keylen); -extern int find_cipher_id(unsigned char ID); + int find_cipher(const char *name); + int find_cipher_any(const char *name, int blocklen, int keylen); + int find_cipher_id(unsigned char ID); -extern int register_cipher(const struct _cipher_descriptor *cipher); -extern int unregister_cipher(const struct _cipher_descriptor *cipher); + int register_cipher(const struct _cipher_descriptor *cipher); + int unregister_cipher(const struct _cipher_descriptor *cipher); -extern int cipher_is_valid(int idx); + int cipher_is_valid(int idx); diff --git a/mycrypt_custom.h b/mycrypt_custom.h index 1624e67..980b799 100644 --- a/mycrypt_custom.h +++ b/mycrypt_custom.h @@ -9,12 +9,16 @@ #error mycrypt_custom.h should be included before mycrypt.h #endif -/* macros for various libc functions */ -#define XMALLOC malloc +/* macros for various libc functions you can change for embedded targets */ +#define XMALLOC malloc #define XREALLOC realloc -#define XCALLOC calloc -#define XFREE free -#define XCLOCK clock +#define XCALLOC calloc +#define XFREE free + +#define XMEMSET memset +#define XMEMCPY memcpy + +#define XCLOCK clock #define XCLOCKS_PER_SEC CLOCKS_PER_SEC /* Use small code where possible */ @@ -45,6 +49,10 @@ #define CAST5 #define NOEKEON #define SKIPJACK +/* SAFER code isn't public domain. It appears to be free to use + * but has been disabled by default to avoid any such problems + */ +//#define SAFER /* modes of operation */ #define CFB @@ -89,10 +97,19 @@ /* Public Key Neatoness */ #define MRSA -#define RSA_TIMING // enable RSA side channel timing prevention +/* enable RSA side channel timing prevention */ +#define RSA_TIMING + +/* Digital Signature Algorithm */ #define MDSA +/* Max diff between group and modulus size in bytes */ +#define MDSA_DELTA 512 +/* Max DSA group size in bytes (default allows 4k-bit groups) */ +#define MDSA_MAX_GROUP 512 + +/* Diffie-Hellman */ #define MDH -#define MECC +/* Supported Key Sizes */ #define DH768 #define DH1024 #define DH1280 @@ -102,15 +119,21 @@ #define DH2560 #define DH3072 #define DH4096 + +/* ECC */ +#define MECC +/* Supported Key Sizes */ #define ECC160 #define ECC192 #define ECC224 #define ECC256 #define ECC384 #define ECC521 + +/* Include the MPI functionality? (required by the PK algorithms) */ #define MPI -/* PKCS #1 and 5 stuff */ +/* PKCS #1 and #5 stuff */ #define PKCS_1 #define PKCS_5 diff --git a/mycrypt_hash.h b/mycrypt_hash.h index 93df9e9..498e1da 100644 --- a/mycrypt_hash.h +++ b/mycrypt_hash.h @@ -111,7 +111,7 @@ typedef union Hash_state { #endif } hash_state; -extern struct _hash_descriptor { +extern struct _hash_descriptor { char *name; unsigned char ID; unsigned long hashsize; /* digest output size in bytes */ @@ -126,118 +126,118 @@ extern struct _hash_descriptor { #ifdef WHIRLPOOL -extern void whirlpool_init(hash_state * md); -extern int whirlpool_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int whirlpool_done(hash_state * md, unsigned char *hash); -extern int whirlpool_test(void); -extern const struct _hash_descriptor whirlpool_desc; + void whirlpool_init(hash_state * md); + int whirlpool_process(hash_state * md, const unsigned char *buf, unsigned long len); + int whirlpool_done(hash_state * md, unsigned char *hash); + int whirlpool_test(void); + extern const struct _hash_descriptor whirlpool_desc; #endif #ifdef SHA512 -extern void sha512_init(hash_state * md); -extern int sha512_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int sha512_done(hash_state * md, unsigned char *hash); -extern int sha512_test(void); -extern const struct _hash_descriptor sha512_desc; + void sha512_init(hash_state * md); + int sha512_process(hash_state * md, const unsigned char *buf, unsigned long len); + int sha512_done(hash_state * md, unsigned char *hash); + int sha512_test(void); + extern const struct _hash_descriptor sha512_desc; #endif #ifdef SHA384 #ifndef SHA512 #error SHA512 is required for SHA384 #endif -extern void sha384_init(hash_state * md); + void sha384_init(hash_state * md); #define sha384_process sha512_process -extern int sha384_done(hash_state * md, unsigned char *hash); -extern int sha384_test(void); -extern const struct _hash_descriptor sha384_desc; + int sha384_done(hash_state * md, unsigned char *hash); + int sha384_test(void); + const struct _hash_descriptor sha384_desc; #endif #ifdef SHA256 -extern void sha256_init(hash_state * md); -extern int sha256_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int sha256_done(hash_state * md, unsigned char *hash); -extern int sha256_test(void); -extern const struct _hash_descriptor sha256_desc; + void sha256_init(hash_state * md); + int sha256_process(hash_state * md, const unsigned char *buf, unsigned long len); + int sha256_done(hash_state * md, unsigned char *hash); + int sha256_test(void); + extern const struct _hash_descriptor sha256_desc; #ifdef SHA224 #ifndef SHA256 #error SHA256 is required for SHA224 #endif -extern void sha224_init(hash_state * md); + void sha224_init(hash_state * md); #define sha224_process sha256_process -extern int sha224_done(hash_state * md, unsigned char *hash); -extern int sha224_test(void); -extern const struct _hash_descriptor sha224_desc; + int sha224_done(hash_state * md, unsigned char *hash); + int sha224_test(void); + extern const struct _hash_descriptor sha224_desc; #endif #endif #ifdef SHA1 -extern void sha1_init(hash_state * md); -extern int sha1_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int sha1_done(hash_state * md, unsigned char *hash); -extern int sha1_test(void); -extern const struct _hash_descriptor sha1_desc; + void sha1_init(hash_state * md); + int sha1_process(hash_state * md, const unsigned char *buf, unsigned long len); + int sha1_done(hash_state * md, unsigned char *hash); + int sha1_test(void); + extern const struct _hash_descriptor sha1_desc; #endif #ifdef MD5 -extern void md5_init(hash_state * md); -extern int md5_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int md5_done(hash_state * md, unsigned char *hash); -extern int md5_test(void); -extern const struct _hash_descriptor md5_desc; + void md5_init(hash_state * md); + int md5_process(hash_state * md, const unsigned char *buf, unsigned long len); + int md5_done(hash_state * md, unsigned char *hash); + int md5_test(void); + extern const struct _hash_descriptor md5_desc; #endif #ifdef MD4 -extern void md4_init(hash_state * md); -extern int md4_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int md4_done(hash_state * md, unsigned char *hash); -extern int md4_test(void); -extern const struct _hash_descriptor md4_desc; + void md4_init(hash_state * md); + int md4_process(hash_state * md, const unsigned char *buf, unsigned long len); + int md4_done(hash_state * md, unsigned char *hash); + int md4_test(void); + extern const struct _hash_descriptor md4_desc; #endif #ifdef MD2 -extern void md2_init(hash_state * md); -extern int md2_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int md2_done(hash_state * md, unsigned char *hash); -extern int md2_test(void); -extern const struct _hash_descriptor md2_desc; + void md2_init(hash_state * md); + int md2_process(hash_state * md, const unsigned char *buf, unsigned long len); + int md2_done(hash_state * md, unsigned char *hash); + int md2_test(void); + extern const struct _hash_descriptor md2_desc; #endif #ifdef TIGER -extern void tiger_init(hash_state * md); -extern int tiger_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int tiger_done(hash_state * md, unsigned char *hash); -extern int tiger_test(void); -extern const struct _hash_descriptor tiger_desc; + void tiger_init(hash_state * md); + int tiger_process(hash_state * md, const unsigned char *buf, unsigned long len); + int tiger_done(hash_state * md, unsigned char *hash); + int tiger_test(void); + extern const struct _hash_descriptor tiger_desc; #endif #ifdef RIPEMD128 -extern void rmd128_init(hash_state * md); -extern int rmd128_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int rmd128_done(hash_state * md, unsigned char *hash); -extern int rmd128_test(void); -extern const struct _hash_descriptor rmd128_desc; + void rmd128_init(hash_state * md); + int rmd128_process(hash_state * md, const unsigned char *buf, unsigned long len); + int rmd128_done(hash_state * md, unsigned char *hash); + int rmd128_test(void); + extern const struct _hash_descriptor rmd128_desc; #endif #ifdef RIPEMD160 -extern void rmd160_init(hash_state * md); -extern int rmd160_process(hash_state * md, const unsigned char *buf, unsigned long len); -extern int rmd160_done(hash_state * md, unsigned char *hash); -extern int rmd160_test(void); -extern const struct _hash_descriptor rmd160_desc; + void rmd160_init(hash_state * md); + int rmd160_process(hash_state * md, const unsigned char *buf, unsigned long len); + int rmd160_done(hash_state * md, unsigned char *hash); + int rmd160_test(void); + extern const struct _hash_descriptor rmd160_desc; #endif -extern int find_hash(const char *name); -extern int find_hash_id(unsigned char ID); -extern int find_hash_any(const char *name, int digestlen); -extern int register_hash(const struct _hash_descriptor *hash); -extern int unregister_hash(const struct _hash_descriptor *hash); -extern int hash_is_valid(int idx); + int find_hash(const char *name); + int find_hash_id(unsigned char ID); + int find_hash_any(const char *name, int digestlen); + int register_hash(const struct _hash_descriptor *hash); + int unregister_hash(const struct _hash_descriptor *hash); + int hash_is_valid(int idx); -extern int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen); -extern int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outlen); -extern int hash_file(int hash, const char *fname, unsigned char *dst, unsigned long *outlen); + int hash_memory(int hash, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *outlen); + int hash_filehandle(int hash, FILE *in, unsigned char *dst, unsigned long *outlen); + int hash_file(int hash, const char *fname, unsigned char *dst, unsigned long *outlen); /* a simple macro for making hash "process" functions */ #define HASH_PROCESS(func_name, compress_name, state_var, block_size) \ @@ -279,14 +279,14 @@ typedef struct Hmac_state { unsigned char key[MAXBLOCKSIZE]; } hmac_state; -extern int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen); -extern int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len); -extern int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen); -extern int hmac_test(void); -extern int hmac_memory(int hash, const unsigned char *key, unsigned long keylen, + int hmac_init(hmac_state *hmac, int hash, const unsigned char *key, unsigned long keylen); + int hmac_process(hmac_state *hmac, const unsigned char *buf, unsigned long len); + int hmac_done(hmac_state *hmac, unsigned char *hashOut, unsigned long *outlen); + int hmac_test(void); + int hmac_memory(int hash, const unsigned char *key, unsigned long keylen, const unsigned char *data, unsigned long len, unsigned char *dst, unsigned long *dstlen); -extern int hmac_file(int hash, const char *fname, const unsigned char *key, + int hmac_file(int hash, const char *fname, const unsigned char *key, unsigned long keylen, unsigned char *dst, unsigned long *dstlen); #endif @@ -303,15 +303,15 @@ typedef struct { symmetric_key key; } omac_state; -extern int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen); -extern int omac_process(omac_state *state, const unsigned char *buf, unsigned long len); -extern int omac_done(omac_state *state, unsigned char *out, unsigned long *outlen); -extern int omac_memory(int cipher, const unsigned char *key, unsigned long keylen, + int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned long keylen); + int omac_process(omac_state *state, const unsigned char *buf, unsigned long len); + int omac_done(omac_state *state, unsigned char *out, unsigned long *outlen); + int omac_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *msg, unsigned long msglen, unsigned char *out, unsigned long *outlen); -extern int omac_file(int cipher, const unsigned char *key, unsigned long keylen, + int omac_file(int cipher, const unsigned char *key, unsigned long keylen, const char *filename, unsigned char *out, unsigned long *outlen); -extern int omac_test(void); + int omac_test(void); #endif /* OMAC */ #ifdef PMAC @@ -330,22 +330,22 @@ typedef struct { buflen; /* number of bytes in the buffer */ } pmac_state; -extern int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen); -extern int pmac_process(pmac_state *state, const unsigned char *buf, unsigned long len); -extern int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen); + int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen); + int pmac_process(pmac_state *state, const unsigned char *buf, unsigned long len); + int pmac_done(pmac_state *state, unsigned char *out, unsigned long *outlen); -extern int pmac_memory(int cipher, const unsigned char *key, unsigned long keylen, + int pmac_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *msg, unsigned long msglen, unsigned char *out, unsigned long *outlen); -extern int pmac_file(int cipher, const unsigned char *key, unsigned long keylen, + int pmac_file(int cipher, const unsigned char *key, unsigned long keylen, const char *filename, unsigned char *out, unsigned long *outlen); -extern int pmac_test(void); + int pmac_test(void); /* internal functions */ -extern int pmac_ntz(unsigned long x); -extern void pmac_shift_xor(pmac_state *pmac); + int pmac_ntz(unsigned long x); + void pmac_shift_xor(pmac_state *pmac); #endif /* PMAC */ @@ -361,16 +361,16 @@ typedef struct { omac_state headeromac, ctomac; } eax_state; -extern int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, + int eax_init(eax_state *eax, int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce, unsigned long noncelen, const unsigned char *header, unsigned long headerlen); -extern int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length); -extern int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length); -extern int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length); -extern int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen); + int eax_encrypt(eax_state *eax, const unsigned char *pt, unsigned char *ct, unsigned long length); + int eax_decrypt(eax_state *eax, const unsigned char *ct, unsigned char *pt, unsigned long length); + int eax_addheader(eax_state *eax, const unsigned char *header, unsigned long length); + int eax_done(eax_state *eax, unsigned char *tag, unsigned long *taglen); -extern int eax_encrypt_authenticate_memory(int cipher, + int eax_encrypt_authenticate_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce, unsigned long noncelen, const unsigned char *header, unsigned long headerlen, @@ -378,7 +378,7 @@ extern int eax_encrypt_authenticate_memory(int cipher, unsigned char *ct, unsigned char *tag, unsigned long *taglen); -extern int eax_decrypt_verify_memory(int cipher, + int eax_decrypt_verify_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce, unsigned long noncelen, const unsigned char *header, unsigned long headerlen, @@ -387,7 +387,7 @@ extern int eax_decrypt_verify_memory(int cipher, unsigned char *tag, unsigned long taglen, int *res); -extern int eax_test(void); + int eax_test(void); #endif /* EAX MODE */ #ifdef OCB_MODE @@ -405,30 +405,30 @@ typedef struct { block_len; /* length of block */ } ocb_state; -extern int ocb_init(ocb_state *ocb, int cipher, + int ocb_init(ocb_state *ocb, int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce); -extern int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct); -extern int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt); + int ocb_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned char *ct); + int ocb_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned char *pt); -extern int ocb_done_encrypt(ocb_state *ocb, + int ocb_done_encrypt(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tag, unsigned long *taglen); -extern int ocb_done_decrypt(ocb_state *ocb, + int ocb_done_decrypt(ocb_state *ocb, const unsigned char *ct, unsigned long ctlen, unsigned char *pt, const unsigned char *tag, unsigned long taglen, int *res); -extern int ocb_encrypt_authenticate_memory(int cipher, + int ocb_encrypt_authenticate_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce, const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tag, unsigned long *taglen); -extern int ocb_decrypt_verify_memory(int cipher, + int ocb_decrypt_verify_memory(int cipher, const unsigned char *key, unsigned long keylen, const unsigned char *nonce, const unsigned char *ct, unsigned long ctlen, @@ -436,12 +436,12 @@ extern int ocb_decrypt_verify_memory(int cipher, const unsigned char *tag, unsigned long taglen, int *res); -extern int ocb_test(void); + int ocb_test(void); /* internal functions */ -extern void ocb_shift_xor(ocb_state *ocb, unsigned char *Z); -extern int ocb_ntz(unsigned long x); -extern int __ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, + void ocb_shift_xor(ocb_state *ocb, unsigned char *Z); + int ocb_ntz(unsigned long x); + int __ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode); #endif /* OCB_MODE */ diff --git a/mycrypt_kr.h b/mycrypt_kr.h deleted file mode 100644 index 6dc16cd..0000000 --- a/mycrypt_kr.h +++ /dev/null @@ -1,81 +0,0 @@ -#ifdef KR - -#if !defined(MRSA) || !defined(MDH) || !defined(MECC) - #error "Keyring code requires all three public key algorithms." -#endif - -#define MAXLEN 256 - -enum { - NON_KEY=0, - RSA_KEY, - DH_KEY, - ECC_KEY -}; - -typedef union { - rsa_key rsa; - dh_key dh; - ecc_key ecc; -} _pk_key; - -typedef struct Pk_key { - int key_type, /* PUBLIC, PRIVATE, PRIVATE_OPTIMIZED */ - system; /* RSA, ECC or DH ? */ - - unsigned char - name[MAXLEN], /* various info's about this key */ - email[MAXLEN], - description[MAXLEN]; - - unsigned long ID; /* CRC32 of the name/email/description together */ - - _pk_key key; - - struct Pk_key *next; /* linked list chain */ -} pk_key; - -extern int kr_init(pk_key **pk); - -extern unsigned long kr_crc(const unsigned char *name, const unsigned char *email, const unsigned char *description); - -extern pk_key *kr_find(pk_key *pk, unsigned long ID); -extern pk_key *kr_find_name(pk_key *pk, const char *name); - -extern int kr_add(pk_key *pk, int key_type, int sys, const unsigned char *name, - const unsigned char *email, const unsigned char *description, const _pk_key *key); - -extern int kr_del(pk_key **_pk, unsigned long ID); -extern int kr_clear(pk_key **pk); -extern int kr_make_key(pk_key *pk, prng_state *prng, int wprng, - int sys, int keysize, const unsigned char *name, - const unsigned char *email, const unsigned char *description); - -extern int kr_export(pk_key *pk, unsigned long ID, int key_type, unsigned char *out, unsigned long *outlen); -extern int kr_import(pk_key *pk, const unsigned char *in, unsigned long inlen); - -extern int kr_load(pk_key **pk, FILE *in, symmetric_CTR *ctr); -extern int kr_save(pk_key *pk, FILE *out, symmetric_CTR *ctr); - -extern int kr_encrypt_key(pk_key *pk, unsigned long ID, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng, int hash); - -extern int kr_decrypt_key(pk_key *pk, const unsigned char *in, - unsigned char *out, unsigned long *outlen); - -extern int kr_sign_hash(pk_key *pk, unsigned long ID, - const unsigned char *in, unsigned long inlen, - unsigned char *out, unsigned long *outlen, - prng_state *prng, int wprng); - -extern int kr_verify_hash(pk_key *pk, const unsigned char *in, - const unsigned char *hash, unsigned long hashlen, - int *stat); - -extern int kr_fingerprint(pk_key *pk, unsigned long ID, int hash, - unsigned char *out, unsigned long *outlen); - -#endif - diff --git a/mycrypt_misc.h b/mycrypt_misc.h index b5e804c..b9f9dbd 100644 --- a/mycrypt_misc.h +++ b/mycrypt_misc.h @@ -1,17 +1,17 @@ /* ---- BASE64 Routines ---- */ #ifdef BASE64 -extern int base64_encode(const unsigned char *in, unsigned long len, + int base64_encode(const unsigned char *in, unsigned long len, unsigned char *out, unsigned long *outlen); -extern int base64_decode(const unsigned char *in, unsigned long len, + int base64_decode(const unsigned char *in, unsigned long len, unsigned char *out, unsigned long *outlen); #endif /* ---- MEM routines ---- */ -extern void zeromem(void *dst, size_t len); -extern void burn_stack(unsigned long len); + void zeromem(void *dst, size_t len); + void burn_stack(unsigned long len); -extern const char *error_to_string(int err); -extern int mpi_to_ltc_error(int err); + const char *error_to_string(int err); + int mpi_to_ltc_error(int err); -extern const char *crypt_build_settings; + extern const char *crypt_build_settings; diff --git a/mycrypt_pk.h b/mycrypt_pk.h index 9b7e5ec..148ead3 100644 --- a/mycrypt_pk.h +++ b/mycrypt_pk.h @@ -44,8 +44,8 @@ } \ } -extern int is_prime(mp_int *, int *); -extern int rand_prime(mp_int *N, long len, prng_state *prng, int wprng); + int is_prime(mp_int *, int *); + int rand_prime(mp_int *N, long len, prng_state *prng, int wprng); #else #ifdef MRSA @@ -72,8 +72,8 @@ extern int rand_prime(mp_int *N, long len, prng_state *prng, int wprng); /* ---- PACKET ---- */ #ifdef PACKET -extern void packet_store_header(unsigned char *dst, int section, int subsection); -extern int packet_valid_header(unsigned char *src, int section, int subsection); + void packet_store_header(unsigned char *dst, int section, int subsection); + int packet_valid_header(unsigned char *src, int section, int subsection); #endif @@ -93,16 +93,16 @@ typedef struct Rsa_key { mp_int e, d, N, qP, pQ, dP, dQ, p, q; } rsa_key; -extern int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key); + int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key); -extern int rsa_exptmod(const unsigned char *in, unsigned long inlen, + 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); #ifdef RSA_TIMING -extern int tim_exptmod(prng_state *prng, int prng_idx, + int tim_exptmod(prng_state *prng, int prng_idx, mp_int *c, mp_int *e, mp_int *d, mp_int *n, mp_int *m); #else @@ -111,7 +111,7 @@ extern int tim_exptmod(prng_state *prng, int prng_idx, #endif -extern void rsa_free(rsa_key *key); + void rsa_free(rsa_key *key); int rsa_encrypt_key(const unsigned char *inkey, unsigned long inlen, unsigned char *outkey, unsigned long *outlen, @@ -150,33 +150,33 @@ typedef struct Dh_key { mp_int x, y; } dh_key; -extern int dh_test(void); -extern void dh_sizes(int *low, int *high); -extern int dh_get_size(dh_key *key); + int dh_test(void); + void dh_sizes(int *low, int *high); + int dh_get_size(dh_key *key); -extern int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key); -extern void dh_free(dh_key *key); + int dh_make_key(prng_state *prng, int wprng, int keysize, dh_key *key); + void dh_free(dh_key *key); -extern int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key); -extern int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key); + int dh_export(unsigned char *out, unsigned long *outlen, int type, dh_key *key); + int dh_import(const unsigned char *in, unsigned long inlen, dh_key *key); -extern int dh_shared_secret(dh_key *private_key, dh_key *public_key, + int dh_shared_secret(dh_key *private_key, dh_key *public_key, unsigned char *out, unsigned long *outlen); -extern int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, + int dh_encrypt_key(const unsigned char *inkey, unsigned long keylen, unsigned char *out, unsigned long *len, prng_state *prng, int wprng, int hash, dh_key *key); -extern int dh_decrypt_key(const unsigned char *in, unsigned long inlen, + int dh_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *outkey, unsigned long *keylen, dh_key *key); -extern int dh_sign_hash(const unsigned char *in, unsigned long inlen, + int dh_sign_hash(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, prng_state *prng, int wprng, dh_key *key); -extern int dh_verify_hash(const unsigned char *sig, unsigned long siglen, + int dh_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long hashlen, int *stat, dh_key *key); @@ -195,33 +195,33 @@ typedef struct { mp_int k; } ecc_key; -extern int ecc_test(void); -extern void ecc_sizes(int *low, int *high); -extern int ecc_get_size(ecc_key *key); + int ecc_test(void); + void ecc_sizes(int *low, int *high); + int ecc_get_size(ecc_key *key); -extern int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key); -extern void ecc_free(ecc_key *key); + int ecc_make_key(prng_state *prng, int wprng, int keysize, ecc_key *key); + void ecc_free(ecc_key *key); -extern int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key); -extern int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key); + int ecc_export(unsigned char *out, unsigned long *outlen, int type, ecc_key *key); + int ecc_import(const unsigned char *in, unsigned long inlen, ecc_key *key); -extern int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, + int ecc_shared_secret(ecc_key *private_key, ecc_key *public_key, unsigned char *out, unsigned long *outlen); -extern int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, + int ecc_encrypt_key(const unsigned char *inkey, unsigned long keylen, unsigned char *out, unsigned long *len, prng_state *prng, int wprng, int hash, ecc_key *key); -extern int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, + int ecc_decrypt_key(const unsigned char *in, unsigned long inlen, unsigned char *outkey, unsigned long *keylen, ecc_key *key); -extern int ecc_sign_hash(const unsigned char *in, unsigned long inlen, + int ecc_sign_hash(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, prng_state *prng, int wprng, ecc_key *key); -extern int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, + int ecc_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long hashlen, int *stat, ecc_key *key); #endif @@ -233,21 +233,21 @@ typedef struct { mp_int g, q, p, x, y; } dsa_key; -extern int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); -extern void dsa_free(dsa_key *key); + int dsa_make_key(prng_state *prng, int wprng, int group_size, int modulus_size, dsa_key *key); + void dsa_free(dsa_key *key); -extern int dsa_sign_hash(const unsigned char *in, unsigned long inlen, + int dsa_sign_hash(const unsigned char *in, unsigned long inlen, unsigned char *out, unsigned long *outlen, prng_state *prng, int wprng, dsa_key *key); -extern int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, + int dsa_verify_hash(const unsigned char *sig, unsigned long siglen, const unsigned char *hash, unsigned long inlen, int *stat, dsa_key *key); -extern int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key); + int dsa_import(const unsigned char *in, unsigned long inlen, dsa_key *key); -extern int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key); + int dsa_export(unsigned char *out, unsigned long *outlen, int type, dsa_key *key); -extern int dsa_verify_key(dsa_key *key, int *stat); + int dsa_verify_key(dsa_key *key, int *stat); #endif diff --git a/mycrypt_prng.h b/mycrypt_prng.h index b96fa43..64d862f 100644 --- a/mycrypt_prng.h +++ b/mycrypt_prng.h @@ -24,43 +24,43 @@ extern struct _prng_descriptor { } prng_descriptor[]; #ifdef YARROW -extern int yarrow_start(prng_state *prng); -extern int yarrow_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); -extern int yarrow_ready(prng_state *prng); -extern unsigned long yarrow_read(unsigned char *buf, unsigned long len, prng_state *prng); -extern const struct _prng_descriptor yarrow_desc; + int yarrow_start(prng_state *prng); + int yarrow_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); + int yarrow_ready(prng_state *prng); + unsigned long yarrow_read(unsigned char *buf, unsigned long len, prng_state *prng); + extern const struct _prng_descriptor yarrow_desc; #endif #ifdef RC4 -extern int rc4_start(prng_state *prng); -extern int rc4_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); -extern int rc4_ready(prng_state *prng); -extern unsigned long rc4_read(unsigned char *buf, unsigned long len, prng_state *prng); -extern const struct _prng_descriptor rc4_desc; + int rc4_start(prng_state *prng); + int rc4_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); + int rc4_ready(prng_state *prng); + unsigned long rc4_read(unsigned char *buf, unsigned long len, prng_state *prng); + extern const struct _prng_descriptor rc4_desc; #endif #ifdef SPRNG -extern int sprng_start(prng_state *prng); -extern int sprng_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); -extern int sprng_ready(prng_state *prng); -extern unsigned long sprng_read(unsigned char *buf, unsigned long len, prng_state *prng); -extern const struct _prng_descriptor sprng_desc; + int sprng_start(prng_state *prng); + int sprng_add_entropy(const unsigned char *buf, unsigned long len, prng_state *prng); + int sprng_ready(prng_state *prng); + unsigned long sprng_read(unsigned char *buf, unsigned long len, prng_state *prng); + extern const struct _prng_descriptor sprng_desc; #endif -extern int find_prng(const char *name); -extern int register_prng(const struct _prng_descriptor *prng); -extern int unregister_prng(const struct _prng_descriptor *prng); -extern int prng_is_valid(int idx); + int find_prng(const char *name); + int register_prng(const struct _prng_descriptor *prng); + int unregister_prng(const struct _prng_descriptor *prng); + int prng_is_valid(int idx); /* Slow RNG you **might** be able to use to seed a PRNG with. Be careful as this * might not work on all platforms as planned */ /* ch2-02-1 */ -extern unsigned long rng_get_bytes(unsigned char *buf, + unsigned long rng_get_bytes(unsigned char *buf, unsigned long len, void (*callback)(void)); /* ch2-02-1 */ -extern int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); + int rng_make_prng(int bits, int wprng, prng_state *prng, void (*callback)(void)); diff --git a/ocb_decrypt_verify_memory.c b/ocb_decrypt_verify_memory.c index f0e29fa..2e15b55 100644 --- a/ocb_decrypt_verify_memory.c +++ b/ocb_decrypt_verify_memory.c @@ -23,8 +23,7 @@ int ocb_decrypt_verify_memory(int cipher, int *res) { int err; - ocb_state ocb; - + ocb_state *ocb; _ARGCHK(key != NULL); _ARGCHK(nonce != NULL); @@ -33,20 +32,34 @@ int ocb_decrypt_verify_memory(int cipher, _ARGCHK(tag != NULL); _ARGCHK(res != NULL); - if ((err = ocb_init(&ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { - return err; + /* allocate memory */ + ocb = XMALLOC(sizeof(ocb_state)); + if (ocb == NULL) { + return CRYPT_MEM; } - while (ctlen > (unsigned long)ocb.block_len) { - if ((err = ocb_decrypt(&ocb, ct, pt)) != CRYPT_OK) { - return err; + if ((err = ocb_init(ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { + goto __ERR; + } + + while (ctlen > (unsigned long)ocb->block_len) { + if ((err = ocb_decrypt(ocb, ct, pt)) != CRYPT_OK) { + goto __ERR; } - ctlen -= ocb.block_len; - pt += ocb.block_len; - ct += ocb.block_len; + ctlen -= ocb->block_len; + pt += ocb->block_len; + ct += ocb->block_len; } - return ocb_done_decrypt(&ocb, ct, ctlen, pt, tag, taglen, res); + err = ocb_done_decrypt(ocb, ct, ctlen, pt, tag, taglen, res); +__ERR: +#ifdef CLEAN_STACK + zeromem(ocb, sizeof(ocb_state)); +#endif + + XFREE(ocb); + + return err; } #endif diff --git a/ocb_done_decrypt.c b/ocb_done_decrypt.c index 97ba393..697beea 100644 --- a/ocb_done_decrypt.c +++ b/ocb_done_decrypt.c @@ -20,7 +20,7 @@ int ocb_done_decrypt(ocb_state *ocb, const unsigned char *tag, unsigned long taglen, int *res) { int err; - unsigned char tagbuf[MAXBLOCKSIZE]; + unsigned char *tagbuf; unsigned long tagbuflen; _ARGCHK(ocb != NULL); @@ -29,22 +29,33 @@ int ocb_done_decrypt(ocb_state *ocb, _ARGCHK(tag != NULL); _ARGCHK(res != NULL); + /* default to failed */ *res = 0; - tagbuflen = sizeof(tagbuf); + /* allocate memory */ + tagbuf = XMALLOC(MAXBLOCKSIZE); + if (tagbuf == NULL) { + return CRYPT_MEM; + } + + tagbuflen = MAXBLOCKSIZE; if ((err = __ocb_done(ocb, ct, ctlen, pt, tagbuf, &tagbuflen, 1)) != CRYPT_OK) { - return err; + goto __ERR; } if (taglen <= tagbuflen && memcmp(tagbuf, tag, taglen) == 0) { *res = 1; } + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(tagbuf, sizeof(tagbuf)); + zeromem(tagbuf, MAXBLOCKSIZE); #endif - return CRYPT_OK; + XFREE(tagbuf); + + return err; } #endif diff --git a/ocb_encrypt_authenticate_memory.c b/ocb_encrypt_authenticate_memory.c index 839da02..73afd3f 100644 --- a/ocb_encrypt_authenticate_memory.c +++ b/ocb_encrypt_authenticate_memory.c @@ -22,7 +22,7 @@ int ocb_encrypt_authenticate_memory(int cipher, unsigned char *tag, unsigned long *taglen) { int err; - ocb_state ocb; + ocb_state *ocb; _ARGCHK(key != NULL); _ARGCHK(nonce != NULL); @@ -31,20 +31,34 @@ int ocb_encrypt_authenticate_memory(int cipher, _ARGCHK(tag != NULL); _ARGCHK(taglen != NULL); - if ((err = ocb_init(&ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { - return err; + /* allocate ram */ + ocb = XMALLOC(sizeof(ocb_state)); + if (ocb == NULL) { + return CRYPT_MEM; } - while (ptlen > (unsigned long)ocb.block_len) { - if ((err = ocb_encrypt(&ocb, pt, ct)) != CRYPT_OK) { - return err; + if ((err = ocb_init(ocb, cipher, key, keylen, nonce)) != CRYPT_OK) { + goto __ERR; + } + + while (ptlen > (unsigned long)ocb->block_len) { + if ((err = ocb_encrypt(ocb, pt, ct)) != CRYPT_OK) { + goto __ERR; } - ptlen -= ocb.block_len; - pt += ocb.block_len; - ct += ocb.block_len; + ptlen -= ocb->block_len; + pt += ocb->block_len; + ct += ocb->block_len; } - return ocb_done_encrypt(&ocb, pt, ptlen, ct, tag, taglen); + err = ocb_done_encrypt(ocb, pt, ptlen, ct, tag, taglen); +__ERR: +#ifdef CLEAN_STACK + zeromem(ocb, sizeof(ocb_state)); +#endif + + XFREE(ocb); + + return err; } #endif diff --git a/ocb_init.c b/ocb_init.c index bfb5a87..6087207 100644 --- a/ocb_init.c +++ b/ocb_init.c @@ -73,7 +73,7 @@ int ocb_init(ocb_state *ocb, int cipher, cipher_descriptor[cipher].ecb_encrypt(ocb->R, ocb->R, &ocb->key); /* find Ls[i] = L << i for i == 0..31 */ - memcpy(ocb->Ls[0], ocb->L, ocb->block_len); + XMEMCPY(ocb->Ls[0], ocb->L, ocb->block_len); for (x = 1; x < 32; x++) { m = ocb->Ls[x-1][0] >> 7; for (y = 0; y < ocb->block_len-1; y++) { @@ -104,7 +104,7 @@ int ocb_init(ocb_state *ocb, int cipher, } /* set Li, checksum */ - zeromem(ocb->Li, ocb->block_len); + zeromem(ocb->Li, ocb->block_len); zeromem(ocb->checksum, ocb->block_len); /* set other params */ diff --git a/ofb_getiv.c b/ofb_getiv.c index 864de02..fee5768 100644 --- a/ofb_getiv.c +++ b/ofb_getiv.c @@ -21,7 +21,7 @@ int ofb_getiv(unsigned char *IV, unsigned long *len, symmetric_OFB *ofb) if ((unsigned long)ofb->blocklen > *len) { return CRYPT_BUFFER_OVERFLOW; } - memcpy(IV, ofb->IV, ofb->blocklen); + XMEMCPY(IV, ofb->IV, ofb->blocklen); *len = ofb->blocklen; return CRYPT_OK; diff --git a/omac_init.c b/omac_init.c index 3945630..cc933d0 100644 --- a/omac_init.c +++ b/omac_init.c @@ -59,7 +59,7 @@ int omac_init(omac_state *omac, int cipher, const unsigned char *key, unsigned l /* copy up as require */ if (x == 0) { - memcpy(omac->Lu[1], omac->Lu[0], sizeof(omac->Lu[0])); + XMEMCPY(omac->Lu[1], omac->Lu[0], sizeof(omac->Lu[0])); } } diff --git a/omac_memory.c b/omac_memory.c index 1cca891..ca194c9 100644 --- a/omac_memory.c +++ b/omac_memory.c @@ -19,24 +19,38 @@ int omac_memory(int cipher, unsigned char *out, unsigned long *outlen) { int err; - omac_state omac; + omac_state *omac; - _ARGCHK(key != NULL); - _ARGCHK(msg != NULL); - _ARGCHK(out != NULL); + _ARGCHK(key != NULL); + _ARGCHK(msg != NULL); + _ARGCHK(out != NULL); _ARGCHK(outlen != NULL); - if ((err = omac_init(&omac, cipher, key, keylen)) != CRYPT_OK) { - return err; - } - if ((err = omac_process(&omac, msg, msglen)) != CRYPT_OK) { - return err; - } - if ((err = omac_done(&omac, out, outlen)) != CRYPT_OK) { - return err; + /* allocate ram for omac state */ + omac = XMALLOC(sizeof(omac_state)); + if (omac == NULL) { + return CRYPT_MEM; } - return CRYPT_OK; + /* omac process the message */ + if ((err = omac_init(omac, cipher, key, keylen)) != CRYPT_OK) { + goto __ERR; + } + if ((err = omac_process(omac, msg, msglen)) != CRYPT_OK) { + goto __ERR; + } + if ((err = omac_done(omac, out, outlen)) != CRYPT_OK) { + goto __ERR; + } + + err = CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(omac, sizeof(omac_state)); +#endif + + XFREE(omac); + return err; } #endif diff --git a/omac_process.c b/omac_process.c index 8da1527..0817359 100644 --- a/omac_process.c +++ b/omac_process.c @@ -40,7 +40,7 @@ int omac_process(omac_state *state, const unsigned char *buf, unsigned long len) /* add bytes */ n = MIN(len, (unsigned long)(state->blklen - state->buflen)); - memcpy(state->block + state->buflen, buf, n); + XMEMCPY(state->block + state->buflen, buf, n); state->buflen += n; len -= n; buf += n; diff --git a/pkcs_1_mgf1.c b/pkcs_1_mgf1.c index b21d928..3add990 100644 --- a/pkcs_1_mgf1.c +++ b/pkcs_1_mgf1.c @@ -20,8 +20,8 @@ int pkcs_1_mgf1(const unsigned char *seed, unsigned long seedlen, { unsigned long hLen, counter, x; int err; - hash_state md; - unsigned char buf[MAXBLOCKSIZE]; + hash_state *md; + unsigned char *buf; _ARGCHK(seed != NULL); _ARGCHK(mask != NULL); @@ -34,6 +34,19 @@ int pkcs_1_mgf1(const unsigned char *seed, unsigned long seedlen, /* get hash output size */ hLen = hash_descriptor[hash_idx].hashsize; + /* allocate memory */ + md = XMALLOC(sizeof(hash_state)); + buf = XMALLOC(hLen); + if (md == NULL || buf == NULL) { + if (md != NULL) { + XFREE(md); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; + } + /* start counter */ counter = 0; @@ -43,15 +56,15 @@ int pkcs_1_mgf1(const unsigned char *seed, unsigned long seedlen, ++counter; /* get hash of seed || counter */ - hash_descriptor[hash_idx].init(&md); - if ((err = hash_descriptor[hash_idx].process(&md, seed, seedlen)) != CRYPT_OK) { - return err; + hash_descriptor[hash_idx].init(md); + if ((err = hash_descriptor[hash_idx].process(md, seed, seedlen)) != CRYPT_OK) { + goto __ERR; } - if ((err = hash_descriptor[hash_idx].process(&md, buf, 4)) != CRYPT_OK) { - return err; + if ((err = hash_descriptor[hash_idx].process(md, buf, 4)) != CRYPT_OK) { + goto __ERR; } - if ((err = hash_descriptor[hash_idx].done(&md, buf)) != CRYPT_OK) { - return err; + if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) { + goto __ERR; } /* store it */ @@ -60,7 +73,17 @@ int pkcs_1_mgf1(const unsigned char *seed, unsigned long seedlen, } } - return CRYPT_OK; + err = CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(buf, hLen); + zeromem(md, sizeof(hash_state)); +#endif + + XFREE(buf); + XFREE(md); + + return err; } #endif /* PKCS_1 */ diff --git a/pkcs_1_oaep_decode.c b/pkcs_1_oaep_decode.c index 55f2e1d..66c9b47 100644 --- a/pkcs_1_oaep_decode.c +++ b/pkcs_1_oaep_decode.c @@ -20,7 +20,7 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, unsigned char *out, unsigned long *outlen, int *res) { - unsigned char DB[1024], seed[MAXBLOCKSIZE], mask[sizeof(DB)]; + unsigned char *DB, *seed, *mask; unsigned long hLen, x, y, modulus_len; int err; @@ -39,9 +39,28 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, hLen = hash_descriptor[hash_idx].hashsize; modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); + /* allocate ram for DB/mask/salt of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + seed = XMALLOC(modulus_len); + if (DB == NULL || mask == NULL || seed == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (seed != NULL) { + XFREE(seed); + } + return CRYPT_MEM; + } + + /* test message size */ - if (modulus_len >= sizeof(DB) || msglen != modulus_len) { - return CRYPT_PK_INVALID_SIZE; + if (msglen != modulus_len) { + err = CRYPT_PK_INVALID_SIZE; + goto __ERR; } /* ok so it's now in the form @@ -54,7 +73,8 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* must have leading 0x00 byte */ if (msg[0] != 0x00) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } /* now read the masked seed */ @@ -69,7 +89,7 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* compute MGF1 of maskedDB (hLen) */ if ((err = pkcs_1_mgf1(DB, modulus_len - hLen - 1, hash_idx, mask, hLen)) != CRYPT_OK) { - return err; + goto __ERR; } /* XOR against seed */ @@ -79,7 +99,7 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* compute MGF1 of seed (k - hlen - 1) */ if ((err = pkcs_1_mgf1(seed, hLen, hash_idx, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - return err; + goto __ERR; } /* xor against DB */ @@ -90,21 +110,22 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* now DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes */ /* compute lhash and store it in seed [reuse temps!] */ - x = sizeof(seed); + x = modulus_len; if (lparam != NULL) { if ((err = hash_memory(hash_idx, lparam, lparamlen, seed, &x)) != CRYPT_OK) { - return err; + goto __ERR; } } else { /* can't pass hash_memory a NULL so use DB with zero length */ if ((err = hash_memory(hash_idx, DB, 0, seed, &x)) != CRYPT_OK) { - return err; + goto __ERR; } } /* compare the lhash'es */ if (memcmp(seed, DB, hLen) != 0) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } /* now zeroes before a 0x01 */ @@ -114,12 +135,14 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, /* error out if wasn't 0x01 */ if (x == (modulus_len - hLen - 1) || DB[x] != 0x01) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } /* rest is the message (and skip 0x01) */ if (msglen - ++x > *outlen) { - return CRYPT_BUFFER_OVERFLOW; + err = CRYPT_BUFFER_OVERFLOW; + goto __ERR; } /* copy message */ @@ -128,16 +151,22 @@ int pkcs_1_oaep_decode(const unsigned char *msg, unsigned long msglen, out[y++] = DB[x++]; } -#ifdef CLEAN_STACK - zeromem(DB, sizeof(DB)); - zeromem(seed, sizeof(seed)); - zeromem(mask, sizeof(mask)); -#endif - /* valid packet */ *res = 1; - return CRYPT_OK; + err = CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(DB, modulus_len); + zeromem(seed, modulus_len); + zeromem(mask, modulus_len); +#endif + + XFREE(seed); + XFREE(mask); + XFREE(DB); + + return err; } #endif /* PKCS_1 */ diff --git a/pkcs_1_oaep_encode.c b/pkcs_1_oaep_encode.c index 0cc76f4..2ddc0a3 100644 --- a/pkcs_1_oaep_encode.c +++ b/pkcs_1_oaep_encode.c @@ -20,7 +20,7 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, int prng_idx, int hash_idx, unsigned char *out, unsigned long *outlen) { - unsigned char DB[1024], seed[MAXBLOCKSIZE], mask[sizeof(DB)]; + unsigned char *DB, *seed, *mask; unsigned long hLen, x, y, modulus_len; int err; @@ -41,22 +41,41 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, hLen = hash_descriptor[hash_idx].hashsize; modulus_len = (modulus_bitlen >> 3) + (modulus_bitlen & 7 ? 1 : 0); + /* allocate ram for DB/mask/salt of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + seed = XMALLOC(modulus_len); + if (DB == NULL || mask == NULL || seed == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (seed != NULL) { + XFREE(seed); + } + return CRYPT_MEM; + } + + /* test message size */ - if (modulus_len >= sizeof(DB) || msglen > (modulus_len - 2*hLen - 2)) { - return CRYPT_PK_INVALID_SIZE; + if (msglen > (modulus_len - 2*hLen - 2)) { + err = CRYPT_PK_INVALID_SIZE; + goto __ERR; } /* get lhash */ // DB == lhash || PS || 0x01 || M, PS == k - mlen - 2hlen - 2 zeroes - x = sizeof(DB); + x = modulus_len; if (lparam != NULL) { if ((err = hash_memory(hash_idx, lparam, lparamlen, DB, &x)) != CRYPT_OK) { - return err; + goto __ERR; } } else { /* can't pass hash_memory a NULL so use DB with zero length */ if ((err = hash_memory(hash_idx, DB, 0, DB, &x)) != CRYPT_OK) { - return err; + goto __ERR; } } @@ -76,12 +95,13 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, /* now choose a random seed */ if (prng_descriptor[prng_idx].read(seed, hLen, prng) != hLen) { - return CRYPT_ERROR_READPRNG; + err = CRYPT_ERROR_READPRNG; + goto __ERR; } /* compute MGF1 of seed (k - hlen - 1) */ if ((err = pkcs_1_mgf1(seed, hLen, hash_idx, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - return err; + goto __ERR; } /* xor against DB */ @@ -91,7 +111,7 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, /* compute MGF1 of maskedDB (hLen) */ if ((err = pkcs_1_mgf1(DB, modulus_len - hLen - 1, hash_idx, mask, hLen)) != CRYPT_OK) { - return err; + goto __ERR; } /* XOR against seed */ @@ -101,7 +121,8 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, /* create string of length modulus_len */ if (*outlen < modulus_len) { - return CRYPT_BUFFER_OVERFLOW; + err = CRYPT_BUFFER_OVERFLOW; + goto __ERR; } /* start output which is 0x00 || maskedSeed || maskedDB */ @@ -114,14 +135,20 @@ int pkcs_1_oaep_encode(const unsigned char *msg, unsigned long msglen, out[x++] = DB[y]; } *outlen = x; - + + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(DB, sizeof(DB)); - zeromem(seed, sizeof(seed)); - zeromem(mask, sizeof(mask)); + zeromem(DB, modulus_len); + zeromem(seed, modulus_len); + zeromem(mask, modulus_len); #endif - return CRYPT_OK; + XFREE(seed); + XFREE(mask); + XFREE(DB); + + return err; } #endif /* PKCS_1 */ diff --git a/pkcs_1_pss_decode.c b/pkcs_1_pss_decode.c index a6de65f..64854c4 100644 --- a/pkcs_1_pss_decode.c +++ b/pkcs_1_pss_decode.c @@ -19,7 +19,7 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, unsigned long saltlen, int hash_idx, unsigned long modulus_bitlen, int *res) { - unsigned char DB[1024], mask[sizeof(DB)], salt[sizeof(DB)], hash[sizeof(DB)]; + unsigned char *DB, *mask, *salt, *hash; unsigned long x, y, hLen, modulus_len; int err; hash_state md; @@ -38,15 +38,38 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, hLen = hash_descriptor[hash_idx].hashsize; modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); + /* allocate ram for DB/mask/salt/hash of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + salt = XMALLOC(modulus_len); + hash = XMALLOC(modulus_len); + if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (salt != NULL) { + XFREE(salt); + } + if (hash != NULL) { + XFREE(hash); + } + return CRYPT_MEM; + } + /* check sizes */ - if ((saltlen > sizeof(salt)) || (modulus_len > sizeof(DB)) || + if ((saltlen > modulus_len) || (modulus_len < hLen + saltlen + 2) || (siglen != modulus_len)) { - return CRYPT_INVALID_ARG; + err = CRYPT_INVALID_ARG; + goto __ERR; } /* ensure the 0xBC byte */ if (sig[siglen-1] != 0xBC) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } /* copy out the DB */ @@ -61,12 +84,13 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, /* check the MSB */ if ((sig[0] & ~(0xFF >> ((modulus_len<<3) - (modulus_bitlen-1)))) != 0) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } /* generate mask of length modulus_len - hLen - 1 from hash */ if ((err = pkcs_1_mgf1(hash, hLen, hash_idx, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - return err; + goto __ERR; } /* xor against DB */ @@ -82,28 +106,30 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, /* check for zeroes and 0x01 */ for (x = 0; x < modulus_len - saltlen - hLen - 2; x++) { if (DB[x] != 0x00) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } } if (DB[x++] != 0x01) { - return CRYPT_OK; + err = CRYPT_OK; + goto __ERR; } /* M = (eight) 0x00 || msghash || salt, mask = H(M) */ hash_descriptor[hash_idx].init(&md); zeromem(mask, 8); if ((err = hash_descriptor[hash_idx].process(&md, mask, 8)) != CRYPT_OK) { - return err; + goto __ERR; } if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) { - return err; + goto __ERR; } if ((err = hash_descriptor[hash_idx].process(&md, DB+x, saltlen)) != CRYPT_OK) { - return err; + goto __ERR; } if ((err = hash_descriptor[hash_idx].done(&md, mask)) != CRYPT_OK) { - return err; + goto __ERR; } /* mask == hash means valid signature */ @@ -111,14 +137,21 @@ int pkcs_1_pss_decode(const unsigned char *msghash, unsigned long msghashlen, *res = 1; } + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(DB, sizeof(DB)); - zeromem(mask, sizeof(mask)); - zeromem(salt, sizeof(salt)); - zeromem(hash, sizeof(hash)); + zeromem(DB, modulus_len); + zeromem(mask, modulus_len); + zeromem(salt, modulus_len); + zeromem(hash, modulus_len); #endif - return CRYPT_OK; + XFREE(hash); + XFREE(salt); + XFREE(mask); + XFREE(DB); + + return err; } #endif /* PKCS_1 */ diff --git a/pkcs_1_pss_encode.c b/pkcs_1_pss_encode.c index d902892..4ee1d51 100644 --- a/pkcs_1_pss_encode.c +++ b/pkcs_1_pss_encode.c @@ -20,7 +20,7 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, unsigned long modulus_bitlen, unsigned char *out, unsigned long *outlen) { - unsigned char DB[1024], mask[sizeof(DB)], salt[sizeof(DB)], hash[sizeof(DB)]; + unsigned char *DB, *mask, *salt, *hash; unsigned long x, y, hLen, modulus_len; int err; hash_state md; @@ -40,15 +40,39 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, hLen = hash_descriptor[hash_idx].hashsize; modulus_len = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); + /* allocate ram for DB/mask/salt/hash of size modulus_len */ + DB = XMALLOC(modulus_len); + mask = XMALLOC(modulus_len); + salt = XMALLOC(modulus_len); + hash = XMALLOC(modulus_len); + if (DB == NULL || mask == NULL || salt == NULL || hash == NULL) { + if (DB != NULL) { + XFREE(DB); + } + if (mask != NULL) { + XFREE(mask); + } + if (salt != NULL) { + XFREE(salt); + } + if (hash != NULL) { + XFREE(hash); + } + return CRYPT_MEM; + } + + /* check sizes */ - if ((saltlen > sizeof(salt)) || (modulus_len > sizeof(DB)) || (modulus_len < hLen + saltlen + 2)) { - return CRYPT_INVALID_ARG; + if ((saltlen > modulus_len) || (modulus_len < hLen + saltlen + 2)) { + err = CRYPT_INVALID_ARG; + goto __ERR; } /* generate random salt */ if (saltlen > 0) { if (prng_descriptor[prng_idx].read(salt, saltlen, prng) != saltlen) { - return CRYPT_ERROR_READPRNG; + err = CRYPT_ERROR_READPRNG; + goto __ERR; } } @@ -56,16 +80,16 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, hash_descriptor[hash_idx].init(&md); zeromem(DB, 8); if ((err = hash_descriptor[hash_idx].process(&md, DB, 8)) != CRYPT_OK) { - return err; + goto __ERR; } if ((err = hash_descriptor[hash_idx].process(&md, msghash, msghashlen)) != CRYPT_OK) { - return err; + goto __ERR; } if ((err = hash_descriptor[hash_idx].process(&md, salt, saltlen)) != CRYPT_OK) { - return err; + goto __ERR; } if ((err = hash_descriptor[hash_idx].done(&md, hash)) != CRYPT_OK) { - return err; + goto __ERR; } /* generate DB = PS || 0x01 || salt, PS == modulus_len - saltlen - hLen - 2 zero bytes */ @@ -79,7 +103,7 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, /* generate mask of length modulus_len - hLen - 1 from hash */ if ((err = pkcs_1_mgf1(hash, hLen, hash_idx, mask, modulus_len - hLen - 1)) != CRYPT_OK) { - return err; + goto __ERR; } /* xor against DB */ @@ -89,7 +113,8 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, /* output is DB || hash || 0xBC */ if (*outlen < modulus_len) { - return CRYPT_BUFFER_OVERFLOW; + err = CRYPT_BUFFER_OVERFLOW; + goto __ERR; } /* DB */ @@ -108,15 +133,21 @@ int pkcs_1_pss_encode(const unsigned char *msghash, unsigned long msghashlen, /* store output size */ *outlen = modulus_len; - + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(DB, sizeof(DB)); - zeromem(mask, sizeof(mask)); - zeromem(salt, sizeof(salt)); - zeromem(hash, sizeof(hash)); + zeromem(DB, modulus_len); + zeromem(mask, modulus_len); + zeromem(salt, modulus_len); + zeromem(hash, modulus_len); #endif - return CRYPT_OK; + XFREE(hash); + XFREE(salt); + XFREE(mask); + XFREE(DB); + + return err; } #endif /* PKCS_1 */ diff --git a/pkcs_1_v15_es_decode.c b/pkcs_1_v15_es_decode.c index 98ae554..7de4c15 100644 --- a/pkcs_1_v15_es_decode.c +++ b/pkcs_1_v15_es_decode.c @@ -28,13 +28,13 @@ int pkcs_1_v15_es_decode(const unsigned char *msg, unsigned long msglen, /* default to failed */ *res = 0; - /* must be at least 12 bytes long */ - if (msglen < 12) { + modulus_bytelen = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); + + /* must be at least modulus_bytelen bytes long */ + if (msglen != modulus_bytelen) { return CRYPT_INVALID_ARG; } - modulus_bytelen = (modulus_bitlen>>3) + (modulus_bitlen & 7 ? 1 : 0); - /* should start with 0x00 0x02 */ if (msg[0] != 0x00 || msg[1] != 0x02) { return CRYPT_OK; @@ -52,7 +52,7 @@ int pkcs_1_v15_es_decode(const unsigned char *msg, unsigned long msglen, if (x + outlen > modulus_bytelen) { return CRYPT_PK_INVALID_SIZE; } - memcpy(out, msg + x, outlen); + XMEMCPY(out, msg + x, outlen); *res = 1; return CRYPT_OK; } diff --git a/pkcs_1_v15_es_encode.c b/pkcs_1_v15_es_encode.c index 1fd0aaa..1794774 100644 --- a/pkcs_1_v15_es_encode.c +++ b/pkcs_1_v15_es_encode.c @@ -46,7 +46,7 @@ int pkcs_1_v15_es_encode(const unsigned char *msg, unsigned long msglen, } x += y; out[x++] = 0x00; - memcpy(out+x, msg, msglen); + XMEMCPY(out+x, msg, msglen); *outlen = modulus_bytelen; return CRYPT_OK; diff --git a/pkcs_5_1.c b/pkcs_5_1.c index d7ae0e1..b87f195 100644 --- a/pkcs_5_1.c +++ b/pkcs_5_1.c @@ -20,8 +20,8 @@ int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, { int err; unsigned long x; - hash_state md; - unsigned char buf[MAXBLOCKSIZE]; + hash_state *md; + unsigned char *buf; _ARGCHK(password != NULL); _ARGCHK(salt != NULL); @@ -33,17 +33,36 @@ int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, return err; } + /* allocate memory */ + md = XMALLOC(sizeof(hash_state)); + buf = XMALLOC(MAXBLOCKSIZE); + if (md == NULL || buf == NULL) { + if (md != NULL) { + XFREE(md); + } + if (buf != NULL) { + XFREE(buf); + } + return CRYPT_MEM; + } + /* hash initial password + salt */ - hash_descriptor[hash_idx].init(&md); - hash_descriptor[hash_idx].process(&md, password, password_len); - hash_descriptor[hash_idx].process(&md, salt, 8); - hash_descriptor[hash_idx].done(&md, buf); + hash_descriptor[hash_idx].init(md); + if ((err = hash_descriptor[hash_idx].process(md, password, password_len)) != CRYPT_OK) { + goto __ERR; + } + if ((err = hash_descriptor[hash_idx].process(md, salt, 8)) != CRYPT_OK) { + goto __ERR; + } + if ((err = hash_descriptor[hash_idx].done(md, buf)) != CRYPT_OK) { + goto __ERR; + } while (--iteration_count) { // code goes here. - x = sizeof(buf); + x = MAXBLOCKSIZE; if ((err = hash_memory(hash_idx, buf, hash_descriptor[hash_idx].hashsize, buf, &x)) != CRYPT_OK) { - return err; + goto __ERR; } } @@ -52,12 +71,17 @@ int pkcs_5_alg1(const unsigned char *password, unsigned long password_len, out[x] = buf[x]; } *outlen = x; - + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); + zeromem(buf, MAXBLOCKSIZE); + zeromem(md, sizeof(hash_state)); #endif - return CRYPT_OK; + XFREE(buf); + XFREE(md); + + return err; } #endif diff --git a/pkcs_5_2.c b/pkcs_5_2.c index 46bf75b..7bc2786 100644 --- a/pkcs_5_2.c +++ b/pkcs_5_2.c @@ -20,8 +20,8 @@ int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, { int err, itts; unsigned long stored, left, x, y, blkno; - unsigned char buf[2][MAXBLOCKSIZE]; - hmac_state hmac; + unsigned char *buf[2]; + hmac_state *hmac; _ARGCHK(password != NULL); _ARGCHK(salt != NULL); @@ -33,37 +33,51 @@ int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, return err; } + buf[0] = XMALLOC(MAXBLOCKSIZE * 2); + hmac = XMALLOC(sizeof(hmac_state)); + if (hmac == NULL || buf[0] == NULL) { + if (hmac != NULL) { + XFREE(hmac); + } + if (buf[0] != NULL) { + XFREE(buf[0]); + } + return CRYPT_MEM; + } + /* buf[1] points to the second block of MAXBLOCKSIZE bytes */ + buf[1] = buf[0] + MAXBLOCKSIZE; + left = *outlen; blkno = 1; stored = 0; while (left != 0) { /* process block number blkno */ - zeromem(buf, sizeof(buf)); + zeromem(buf, MAXBLOCKSIZE*2); /* store current block number and increment for next pass */ STORE32H(blkno, buf[1]); ++blkno; /* get PRF(P, S||int(blkno)) */ - if ((err = hmac_init(&hmac, hash_idx, password, password_len)) != CRYPT_OK) { - return err; + if ((err = hmac_init(hmac, hash_idx, password, password_len)) != CRYPT_OK) { + goto __ERR; } - if ((err = hmac_process(&hmac, salt, salt_len)) != CRYPT_OK) { - return err; + if ((err = hmac_process(hmac, salt, salt_len)) != CRYPT_OK) { + goto __ERR; } - if ((err = hmac_process(&hmac, buf[1], 4)) != CRYPT_OK) { - return err; + if ((err = hmac_process(hmac, buf[1], 4)) != CRYPT_OK) { + goto __ERR; } - x = sizeof(buf[0]); - if ((err = hmac_done(&hmac, buf[0], &x)) != CRYPT_OK) { - return err; + x = MAXBLOCKSIZE; + if ((err = hmac_done(hmac, buf[0], &x)) != CRYPT_OK) { + goto __ERR; } /* now compute repeated and XOR it in buf[1] */ - memcpy(buf[1], buf[0], x); + XMEMCPY(buf[1], buf[0], x); for (itts = 2; itts < iteration_count; ++itts) { if ((err = hmac_memory(hash_idx, password, password_len, buf[0], x, buf[0], &x)) != CRYPT_OK) { - return err; + goto __ERR; } for (y = 0; y < x; y++) { buf[1][y] ^= buf[0][y]; @@ -78,10 +92,17 @@ int pkcs_5_alg2(const unsigned char *password, unsigned long password_len, } *outlen = stored; + err = CRYPT_OK; +__ERR: #ifdef CLEAN_STACK - zeromem(buf, sizeof(buf)); + zeromem(buf[0], MAXBLOCKSIZE*2); + zeromem(hmac, sizeof(hmac_state)); #endif - return CRYPT_OK; + + XFREE(hmac); + XFREE(buf[0]); + + return err; } #endif diff --git a/pmac_init.c b/pmac_init.c index b4ef111..2f96927 100644 --- a/pmac_init.c +++ b/pmac_init.c @@ -35,7 +35,7 @@ static const struct { int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned long keylen) { int poly, x, y, m, err; - unsigned char L[MAXBLOCKSIZE]; + unsigned char *L; _ARGCHK(pmac != NULL); _ARGCHK(key != NULL); @@ -61,12 +61,18 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l return err; } + /* allocate L */ + L = XMALLOC(pmac->block_len); + if (L == NULL) { + return CRYPT_MEM; + } + /* find L = E[0] */ zeromem(L, pmac->block_len); cipher_descriptor[cipher].ecb_encrypt(L, L, &pmac->key); /* find Ls[i] = L << i for i == 0..31 */ - memcpy(pmac->Ls[0], L, pmac->block_len); + XMEMCPY(pmac->Ls[0], L, pmac->block_len); for (x = 1; x < 32; x++) { m = pmac->Ls[x-1][0] >> 7; for (y = 0; y < pmac->block_len-1; y++) { @@ -105,9 +111,11 @@ int pmac_init(pmac_state *pmac, int cipher, const unsigned char *key, unsigned l zeromem(pmac->checksum, sizeof(pmac->checksum)); #ifdef CLEAN_STACK - zeromem(L, sizeof(L)); + zeromem(L, pmac->block_len); #endif + XFREE(L); + return CRYPT_OK; } diff --git a/pmac_memory.c b/pmac_memory.c index c279d71..af2b197 100644 --- a/pmac_memory.c +++ b/pmac_memory.c @@ -20,25 +20,37 @@ int pmac_memory(int cipher, unsigned char *out, unsigned long *outlen) { int err; - pmac_state pmac; + pmac_state *pmac; _ARGCHK(key != NULL); _ARGCHK(msg != NULL); _ARGCHK(out != NULL); _ARGCHK(outlen != NULL); - - if ((err = pmac_init(&pmac, cipher, key, keylen)) != CRYPT_OK) { - return err; + /* allocate ram for pmac state */ + pmac = XMALLOC(sizeof(pmac_state)); + if (pmac == NULL) { + return CRYPT_MEM; } - if ((err = pmac_process(&pmac, msg, msglen)) != CRYPT_OK) { - return err; + + if ((err = pmac_init(pmac, cipher, key, keylen)) != CRYPT_OK) { + goto __ERR; } - if ((err = pmac_done(&pmac, out, outlen)) != CRYPT_OK) { - return err; + if ((err = pmac_process(pmac, msg, msglen)) != CRYPT_OK) { + goto __ERR; + } + if ((err = pmac_done(pmac, out, outlen)) != CRYPT_OK) { + goto __ERR; } - return CRYPT_OK; + err = CRYPT_OK; +__ERR: +#ifdef CLEAN_STACK + zeromem(pmac, sizeof(pmac_state)); +#endif + + XFREE(pmac); + return err; } #endif diff --git a/pmac_process.c b/pmac_process.c index ff2c3fe..84b8e58 100644 --- a/pmac_process.c +++ b/pmac_process.c @@ -46,7 +46,7 @@ int pmac_process(pmac_state *state, const unsigned char *buf, unsigned long len) /* add bytes */ n = MIN(len, (unsigned long)(state->block_len - state->buflen)); - memcpy(state->block + state->buflen, buf, n); + XMEMCPY(state->block + state->buflen, buf, n); state->buflen += n; len -= n; buf += n; diff --git a/pretty.build b/pretty.build new file mode 100644 index 0000000..0046d34 --- /dev/null +++ b/pretty.build @@ -0,0 +1,82 @@ +#!/bin/perl -w +# +# Cute little builder for perl +# Total waste of development time... +# +# This will build all the object files and then the archive .a file +# requires GCC, GNU make and a sense of humour. +# +# Tom St Denis +use strict; + +my $count = 0; +my $starttime = time; +my $rate = 0; +print "Scanning for source files...\n"; +foreach my $filename (glob "*.c") { + if (!($filename =~ "aes_tab.c")) { + if (!($filename =~ "twofish_tab.c")) { + if (!($filename =~ "whirltab.c")) { + if (!($filename =~ "sha224.c")) { + if (!($filename =~ "sha384.c")) { + if (!($filename =~ "dh_sys.c")) { + if (!($filename =~ "ecc_sys.c")) { + ++$count; + }}}}}}} +} +print "Source files to build: $count\nBuilding...\n"; +my $i = 0; +my $lines = 0; +my $filesbuilt = 0; +foreach my $filename (glob "*.c") { + if (!($filename =~ "aes_tab.c")) { + if (!($filename =~ "twofish_tab.c")) { + if (!($filename =~ "whirltab.c")) { + if (!($filename =~ "sha224.c")) { + if (!($filename =~ "sha384.c")) { + if (!($filename =~ "dh_sys.c")) { + if (!($filename =~ "ecc_sys.c")) { + printf("Building %3.2f%%, ", (++$i/$count)*100.0); + if ($i % 4 == 0) { print "/, "; } + if ($i % 4 == 1) { print "-, "; } + if ($i % 4 == 2) { print "\\, "; } + if ($i % 4 == 3) { print "|, "; } + if ($rate > 0) { + my $tleft = ($count - $i) / $rate; + my $tsec = $tleft%60; + my $tmin = ($tleft/60)%60; + my $thour = ($tleft/3600)%60; + printf("%2d:%02d:%02d left, ", $thour, $tmin, $tsec); + } + my $cnt = ($i/$count)*30.0; + my $x = 0; + print "["; + for (; $x < $cnt; $x++) { print "#"; } + for (; $x < 30; $x++) { print " "; } + print "]\r"; + my $tmp = $filename; + $tmp =~ s/\.c/".o"/ge; + if (open(SRC, "<$tmp")) { + close SRC; + } else { + !system("make $tmp > /dev/null 2>/dev/null") or die "\nERROR: Failed to make $tmp!!!\n"; + open( SRC, "<$filename" ) or die "Couldn't open $filename for reading: $!"; + ++$lines while (); + close SRC or die "Error closing $filename after reading: $!"; + ++$filesbuilt; + } + + # update timer + if (time != $starttime) { + my $delay = time - $starttime; + $rate = $i/$delay; + } + }}}}}}} +} + +# finish building the library +printf("\nFinished building source (%d seconds, %3.2f files per second).\n", time - $starttime, $rate); +print "Compiled approximately $filesbuilt files and $lines lines of code.\n"; +print "Doing final make (building archive...)\n"; +!system("make > /dev/null 2>/dev/null") or die "\nERROR: Failed to perform last make command!!!\n"; +print "done.\n"; \ No newline at end of file diff --git a/rc4.c b/rc4.c index 9d2f6b7..e218f9b 100644 --- a/rc4.c +++ b/rc4.c @@ -56,7 +56,7 @@ int rc4_ready(prng_state *prng) _ARGCHK(prng != NULL); /* extract the key */ - memcpy(key, prng->rc4.buf, 256); + XMEMCPY(key, prng->rc4.buf, 256); keylen = prng->rc4.x; /* make RC4 perm and shuffle */ diff --git a/rc5.c b/rc5.c index ab79535..124deb9 100644 --- a/rc5.c +++ b/rc5.c @@ -81,7 +81,7 @@ int rc5_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_ke /* setup the S array */ t = (ulong32)(2 * (num_rounds + 1)); - memcpy(S, stab, t * sizeof(*S)); + XMEMCPY(S, stab, t * sizeof(*S)); /* mix buffer */ s = 3 * MAX(t, j); diff --git a/rc6.c b/rc6.c index 8cc165c..62a2cf5 100644 --- a/rc6.c +++ b/rc6.c @@ -71,7 +71,7 @@ int rc6_setup(const unsigned char *key, int keylen, int num_rounds, symmetric_ke } /* setup the S array */ - memcpy(S, stab, 44 * sizeof(stab[0])); + XMEMCPY(S, stab, 44 * sizeof(stab[0])); /* mix buffer */ s = 3 * MAX(44, j); diff --git a/rsa_decrypt_key.c b/rsa_decrypt_key.c index 8d63d46..f8ac656 100644 --- a/rsa_decrypt_key.c +++ b/rsa_decrypt_key.c @@ -23,6 +23,7 @@ int rsa_decrypt_key(const unsigned char *in, unsigned long inlen, { unsigned long modulus_bitlen, modulus_bytelen, x; int err; + unsigned char *tmp; _ARGCHK(outkey != NULL); _ARGCHK(keylen != NULL); @@ -43,15 +44,24 @@ int rsa_decrypt_key(const unsigned char *in, unsigned long inlen, return CRYPT_INVALID_PACKET; } + /* allocate ram */ + tmp = XMALLOC(inlen); + if (tmp == NULL) { + return CRYPT_MEM; + } + /* rsa decode the packet */ - x = *keylen; - if ((err = rsa_exptmod(in, inlen, outkey, &x, PK_PRIVATE, prng, prng_idx, key)) != CRYPT_OK) { + x = inlen; + if ((err = rsa_exptmod(in, inlen, tmp, &x, PK_PRIVATE, prng, prng_idx, key)) != CRYPT_OK) { + XFREE(tmp); return err; } /* now OAEP decode the packet */ - return pkcs_1_oaep_decode(outkey, x, lparam, lparamlen, modulus_bitlen, hash_idx, - outkey, keylen, res); + err = pkcs_1_oaep_decode(tmp, x, lparam, lparamlen, modulus_bitlen, hash_idx, + outkey, keylen, res); + XFREE(tmp); + return err; } #endif /* MRSA */ diff --git a/rsa_exptmod.c b/rsa_exptmod.c index fbf49d4..1f6daae 100644 --- a/rsa_exptmod.c +++ b/rsa_exptmod.c @@ -28,10 +28,12 @@ int rsa_exptmod(const unsigned char *in, unsigned long inlen, _ARGCHK(outlen != NULL); _ARGCHK(key != NULL); + /* valid prng? */ if ((err = prng_is_valid(prng_idx)) != CRYPT_OK) { return err; } + /* is the key of the right type for the operation? */ if (which == PK_PRIVATE && (key->type != PK_PRIVATE && key->type != PK_PRIVATE_OPTIMIZED)) { return CRYPT_PK_NOT_PRIVATE; } diff --git a/rsa_make_key.c b/rsa_make_key.c index 3a06ca7..e96bea3 100644 --- a/rsa_make_key.c +++ b/rsa_make_key.c @@ -65,40 +65,43 @@ int rsa_make_key(prng_state *prng, int wprng, int size, long e, rsa_key *key) goto error; } - if ((err = mp_set_int(&key->e, e)) != MP_OKAY) { goto error2; } /* key->e = e */ - if ((err = mp_invmod(&key->e, &tmp1, &key->d)) != MP_OKAY) { goto error2; } /* key->d = 1/e mod lcm(p-1,q-1) */ - if ((err = mp_mul(&p, &q, &key->N)) != MP_OKAY) { goto error2; } /* key->N = pq */ + if ((err = mp_set_int(&key->e, e)) != MP_OKAY) { goto error2; } /* key->e = e */ + if ((err = mp_invmod(&key->e, &tmp1, &key->d)) != MP_OKAY) { goto error2; } /* key->d = 1/e mod lcm(p-1,q-1) */ + if ((err = mp_mul(&p, &q, &key->N)) != MP_OKAY) { goto error2; } /* key->N = pq */ /* optimize for CRT now */ /* find d mod q-1 and d mod p-1 */ - if ((err = mp_sub_d(&p, 1, &tmp1)) != MP_OKAY) { goto error2; } /* tmp1 = q-1 */ - if ((err = mp_sub_d(&q, 1, &tmp2)) != MP_OKAY) { goto error2; } /* tmp2 = p-1 */ + if ((err = mp_sub_d(&p, 1, &tmp1)) != MP_OKAY) { goto error2; } /* tmp1 = q-1 */ + if ((err = mp_sub_d(&q, 1, &tmp2)) != MP_OKAY) { goto error2; } /* tmp2 = p-1 */ - if ((err = mp_mod(&key->d, &tmp1, &key->dP)) != MP_OKAY) { goto error2; } /* dP = d mod p-1 */ - if ((err = mp_mod(&key->d, &tmp2, &key->dQ)) != MP_OKAY) { goto error2; } /* dQ = d mod q-1 */ + if ((err = mp_mod(&key->d, &tmp1, &key->dP)) != MP_OKAY) { goto error2; } /* dP = d mod p-1 */ + if ((err = mp_mod(&key->d, &tmp2, &key->dQ)) != MP_OKAY) { goto error2; } /* dQ = d mod q-1 */ - if ((err = mp_invmod(&q, &p, &key->qP)) != MP_OKAY) { goto error2; } /* qP = 1/q mod p */ - if ((err = mp_mulmod(&key->qP, &q, &key->N, &key->qP)) != MP_OKAY) { goto error2; } /* qP = q * (1/q mod p) mod N */ + if ((err = mp_invmod(&q, &p, &key->qP)) != MP_OKAY) { goto error2; } /* qP = 1/q mod p */ + if ((err = mp_mulmod(&key->qP, &q, &key->N, &key->qP)) != MP_OKAY) { goto error2; } /* qP = q * (1/q mod p) mod N */ - if ((err = mp_invmod(&p, &q, &key->pQ)) != MP_OKAY) { goto error2; } /* pQ = 1/p mod q */ - if ((err = mp_mulmod(&key->pQ, &p, &key->N, &key->pQ)) != MP_OKAY) { goto error2; } /* pQ = p * (1/p mod q) mod N */ + if ((err = mp_invmod(&p, &q, &key->pQ)) != MP_OKAY) { goto error2; } /* pQ = 1/p mod q */ + if ((err = mp_mulmod(&key->pQ, &p, &key->N, &key->pQ)) != MP_OKAY) { goto error2; } /* pQ = p * (1/p mod q) mod N */ - if ((err = mp_copy(&p, &key->p)) != MP_OKAY) { goto error2; } - if ((err = mp_copy(&q, &key->q)) != MP_OKAY) { goto error2; } + if ((err = mp_copy(&p, &key->p)) != MP_OKAY) { goto error2; } + if ((err = mp_copy(&q, &key->q)) != MP_OKAY) { goto error2; } /* shrink ram required */ - if ((err = mp_shrink(&key->e)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->d)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->N)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->dQ)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->dP)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->qP)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->pQ)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->p)) != MP_OKAY) { goto error2; } - if ((err = mp_shrink(&key->q)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->e)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->d)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->N)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->dQ)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->dP)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->qP)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->pQ)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->p)) != MP_OKAY) { goto error2; } + if ((err = mp_shrink(&key->q)) != MP_OKAY) { goto error2; } - err = CRYPT_OK; + /* set key type (in this case it's CRT optimized) */ key->type = PK_PRIVATE_OPTIMIZED; + + /* return ok and free temps */ + err = CRYPT_OK; goto done; error2: mp_clear_multi(&key->d, &key->e, &key->N, &key->dQ, &key->dP, diff --git a/rsa_verify_hash.c b/rsa_verify_hash.c index 223ccda..5e3664b 100644 --- a/rsa_verify_hash.c +++ b/rsa_verify_hash.c @@ -48,7 +48,7 @@ int rsa_verify_hash(const unsigned char *sig, unsigned long siglen, } /* allocate temp buffer for decoded sig */ - tmpbuf = XCALLOC(1, modulus_bytelen + 1); + tmpbuf = XMALLOC(siglen); if (tmpbuf == NULL) { return CRYPT_MEM; } diff --git a/s_ocb_done.c b/s_ocb_done.c index 90ed65c..d4a7748 100644 --- a/s_ocb_done.c +++ b/s_ocb_done.c @@ -25,7 +25,7 @@ int __ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, unsigned char *ct, unsigned char *tag, unsigned long *taglen, int mode) { - unsigned char Z[MAXBLOCKSIZE], Y[MAXBLOCKSIZE], X[MAXBLOCKSIZE]; + unsigned char *Z, *Y, *X; int err, x; _ARGCHK(ocb != NULL); @@ -41,9 +41,26 @@ int __ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, return CRYPT_INVALID_ARG; } + /* allocate ram */ + Z = XMALLOC(MAXBLOCKSIZE); + Y = XMALLOC(MAXBLOCKSIZE); + X = XMALLOC(MAXBLOCKSIZE); + if (X == NULL || Y == NULL || Z == NULL) { + if (X != NULL) { + XFREE(X); + } + if (Y != NULL) { + XFREE(Y); + } + if (Z != NULL) { + XFREE(Z); + } + return CRYPT_MEM; + } + /* compute X[m] = len(pt[m]) XOR Lr XOR Z[m] */ ocb_shift_xor(ocb, X); - memcpy(Z, X, ocb->block_len); + XMEMCPY(Z, X, ocb->block_len); X[ocb->block_len-1] ^= (ptlen*8)&255; X[ocb->block_len-2] ^= ((ptlen*8)>>8)&255; @@ -90,11 +107,16 @@ int __ocb_done(ocb_state *ocb, const unsigned char *pt, unsigned long ptlen, *taglen = x; #ifdef CLEAN_STACK - zeromem(X, sizeof(X)); - zeromem(Y, sizeof(Y)); - zeromem(Z, sizeof(Z)); + zeromem(X, MAXBLOCKSIZE); + zeromem(Y, MAXBLOCKSIZE); + zeromem(Z, MAXBLOCKSIZE); zeromem(ocb, sizeof(*ocb)); #endif + + XFREE(X); + XFREE(Y); + XFREE(Z); + return CRYPT_OK; } diff --git a/sha224.c b/sha224.c index d013551..fb9f09e 100644 --- a/sha224.c +++ b/sha224.c @@ -50,7 +50,7 @@ int sha224_done(hash_state * md, unsigned char *hash) int err; err = sha256_done(md, buf); - memcpy(hash, buf, 28); + XMEMCPY(hash, buf, 28); #ifdef CLEAN_STACK zeromem(buf, sizeof(buf)); #endif diff --git a/sha256.c b/sha256.c index ef2ae5e..02bce05 100644 --- a/sha256.c +++ b/sha256.c @@ -104,7 +104,7 @@ static void sha256_compress(hash_state * md, unsigned char *buf) RND(S[0],S[1],S[2],S[3],S[4],S[5],S[6],S[7],i); t = S[7]; S[7] = S[6]; S[6] = S[5]; S[5] = S[4]; S[4] = S[3]; S[3] = S[2]; S[2] = S[1]; S[1] = S[0]; S[0] = t; - } + } #else #define RND(a,b,c,d,e,f,g,h,i,ki) \ t0 = h + Sigma1(e) + Ch(e, f, g) + ki + W[i]; \ diff --git a/sha384.c b/sha384.c index 120289a..d771fc8 100644 --- a/sha384.c +++ b/sha384.c @@ -58,7 +58,7 @@ int sha384_done(hash_state * md, unsigned char *hash) } sha512_done(md, buf); - memcpy(hash, buf, 48); + XMEMCPY(hash, buf, 48); #ifdef CLEAN_STACK zeromem(buf, sizeof(buf)); #endif diff --git a/tim_exptmod.c b/tim_exptmod.c index 865d458..67fe445 100644 --- a/tim_exptmod.c +++ b/tim_exptmod.c @@ -34,13 +34,13 @@ int tim_exptmod(prng_state *prng, int prng_idx, } /* pick random r */ - rtmp = XMALLOC(MAX_RSA_SIZE/8); + rlen = mp_unsigned_bin_size(n); + rtmp = XMALLOC(rlen); if (rtmp == NULL) { return CRYPT_MEM; } - - rlen = mp_unsigned_bin_size(n); + /* read in random value "r" */ if (prng_descriptor[prng_idx].read(rtmp, rlen, prng) != rlen) { XFREE(rtmp); return CRYPT_ERROR_READPRNG;