diff options
author | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-06 13:00:59 +0200 |
---|---|---|
committer | Nikos Mavrogiannopoulos <nmav@gnutls.org> | 2010-07-06 13:00:59 +0200 |
commit | d12ecf68276ab0e57ea578d763f23b2143e57ed8 (patch) | |
tree | 9ddf4b21c9a918e4d97679a259ea6dcd9de742c7 /libtomcrypt/math/multi.c | |
parent | b6d0f4da862e17344fca35db8d9ed0dce39e757f (diff) | |
download | cryptodev-linux-d12ecf68276ab0e57ea578d763f23b2143e57ed8.tar.gz cryptodev-linux-d12ecf68276ab0e57ea578d763f23b2143e57ed8.tar.xz cryptodev-linux-d12ecf68276ab0e57ea578d763f23b2143e57ed8.zip |
Added libtomcrypt
Diffstat (limited to 'libtomcrypt/math/multi.c')
-rw-r--r-- | libtomcrypt/math/multi.c | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/libtomcrypt/math/multi.c b/libtomcrypt/math/multi.c new file mode 100644 index 0000000..29e810d --- /dev/null +++ b/libtomcrypt/math/multi.c @@ -0,0 +1,61 @@ +/* LibTomCrypt, modular cryptographic library -- Tom St Denis + * + * LibTomCrypt is a library that provides various cryptographic + * algorithms in a highly modular and flexible manner. + * + * The library is free for all purposes without any express + * guarantee it works. + * + * Tom St Denis, tomstdenis@gmail.com, http://libtom.org + */ +#include "tomcrypt.h" + +#ifdef MPI +#include <stdarg.h> + +int ltc_init_multi(void **a, ...) +{ + void **cur = a; + int np = 0; + va_list args; + + va_start(args, a); + while (cur != NULL) { + if (mp_init(cur) != CRYPT_OK) { + /* failed */ + va_list clean_list; + + va_start(clean_list, a); + cur = a; + while (np--) { + mp_clear(*cur); + cur = va_arg(clean_list, void**); + } + va_end(clean_list); + return CRYPT_MEM; + } + ++np; + cur = va_arg(args, void**); + } + va_end(args); + return CRYPT_OK; +} + +void ltc_deinit_multi(void *a, ...) +{ + void *cur = a; + va_list args; + + va_start(args, a); + while (cur != NULL) { + mp_clear(cur); + cur = va_arg(args, void *); + } + va_end(args); +} + +#endif + +/* $Source: /cvs/libtom/libtomcrypt/src/math/multi.c,v $ */ +/* $Revision: 1.6 $ */ +/* $Date: 2006/12/28 01:27:23 $ */ |