diff der_get_multi_integer.c @ 143:5d99163f7e32 libtomcrypt-orig

import of libtomcrypt 0.99
author Matt Johnston <matt@ucc.asn.au>
date Sun, 19 Dec 2004 11:34:45 +0000
parents
children
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/der_get_multi_integer.c	Sun Dec 19 11:34:45 2004 +0000
@@ -0,0 +1,50 @@
+/* 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, [email protected], http://libtomcrypt.org
+ */
+#include <stdarg.h>
+#include "mycrypt.h"
+
+/* will read multiple DER INTEGER encoded mp_ints from src
+ * of upto [inlen] bytes.  It will store the number of bytes
+ * read back into [inlen].
+ */
+int der_get_multi_integer(const unsigned char *src, unsigned long *inlen, 
+                  mp_int *num, ...)
+{
+   va_list        args;
+   mp_int        *next;
+   unsigned long  wrote, len;
+   int            err;
+
+   _ARGCHK(src    != NULL);
+   _ARGCHK(inlen  != NULL);
+
+   /* setup va list */
+   next  = num;
+   len   = *inlen;
+   wrote = 0;
+   va_start(args, num);
+
+   while (next != NULL) {
+       if ((err = der_decode_integer(src, inlen, next)) != CRYPT_OK) {
+          va_end(args);
+          return err;
+       }
+       wrote += *inlen;
+       src   += *inlen;
+       len   -= *inlen;
+       *inlen = len;
+        next     = va_arg(args, mp_int*);
+   }
+   va_end(args);
+   *inlen = wrote;
+   return CRYPT_OK;
+}
+