1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis 2 * 3 * LibTomCrypt is a library that provides various cryptographic 4 * algorithms in a highly modular and flexible manner. 5 * 6 * The library is free for all purposes without any express 7 * guarantee it works. 8 * 9 * Tom St Denis, tomstdenis (at) gmail.com, http://libtomcrypt.com 10 */ 11 #include "tomcrypt.h" 12 13 #ifdef MPI 14 #include <stdarg.h> 15 16 int ltc_init_multi(void **a, ...) 17 { 18 void **cur = a; 19 int np = 0; 20 va_list args; 21 22 va_start(args, a); 23 while (cur != NULL) { 24 if (mp_init(cur) != CRYPT_OK) { 25 /* failed */ 26 va_list clean_list; 27 28 va_start(clean_list, a); 29 cur = a; 30 while (np--) { 31 mp_clear(*cur); 32 cur = va_arg(clean_list, void**); 33 } 34 va_end(clean_list); 35 return CRYPT_MEM; 36 } 37 ++np; 38 cur = va_arg(args, void**); 39 } 40 va_end(args); 41 return CRYPT_OK; 42 } 43 44 void ltc_deinit_multi(void *a, ...) 45 { 46 void *cur = a; 47 va_list args; 48 49 va_start(args, a); 50 while (cur != NULL) { 51 mp_clear(cur); 52 cur = va_arg(args, void *); 53 } 54 va_end(args); 55 } 56 57 #endif 58 59 /* $Source: /cvs/libtom/libtomcrypt/src/math/multi.c,v $ */ 60 /* $Revision: 1.5 $ */ 61 /* $Date: 2006/03/31 14:15:35 $ */ 62