Home | History | Annotate | Download | only in math
      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