]> git.codecow.com Git - Monocypher.git/commitdiff
allow more memory for Argon2i tests
authorLoup Vaillant <loup@loup-vaillant.fr>
Wed, 8 Mar 2017 22:40:31 +0000 (23:40 +0100)
committerLoup Vaillant <loup@loup-vaillant.fr>
Wed, 8 Mar 2017 22:40:31 +0000 (23:40 +0100)
test.c

diff --git a/test.c b/test.c
index 357d49272b695a60ee18f4cf5b1252f8a3c1ae5d..b2205232717fbf72ad97f28c773a2ee683288517 100644 (file)
--- a/test.c
+++ b/test.c
@@ -4,7 +4,7 @@
 #include "monocypher.h"
 #include "sha512.h"
 
-#define FOR(i, start, end) for (size_t i = start; i < end; i++)
+#define FOR(i, start, end) for (size_t (i) = (start); (i) < (end); (i)++)
 #define sv static void
 typedef  int8_t   i8;
 typedef uint8_t   u8;
@@ -86,9 +86,9 @@ sv stream_drop(stream *s)
 /// Vector of octets ///
 ////////////////////////
 typedef struct {
-    u8 *buf;
-    size_t   buf_size;
-    size_t   size;
+    u8     *buf;
+    size_t  buf_size;
+    size_t  size;
 } vector;
 
 static vector vec_new(size_t buf_size)
@@ -276,20 +276,22 @@ sv poly1305(const vector in[], vector *out)
 
 sv argon2i(const vector in[], vector *out)
 {
-        const vector *nb_blocks     = in;
-        const vector *nb_iterations = in + 1;
-        const vector *password      = in + 2;
-        const vector *salt          = in + 3;
-        const vector *key           = in + 4;
-        const vector *ad            = in + 5;
-        void         *work_area     = alloc(nb_blocks->buf[0] * 1024);
-        crypto_argon2i(out     ->buf, out      ->size,
-                       work_area    , nb_blocks->buf[0], nb_iterations->buf[0],
-                       password->buf, password ->size,
-                       salt    ->buf, salt     ->size,
-                       key     ->buf, key      ->size,
-                       ad      ->buf, ad       ->size);
-        free(work_area);
+    u32 nb_blocks = 0;
+    u32 nb_iterations = 0;
+    FOR (i, 0, in[0].size) {nb_blocks     <<= 8; nb_blocks     += in[0].buf[i];}
+    FOR (i, 0, in[1].size) {nb_iterations <<= 8; nb_iterations += in[1].buf[i];}
+    const vector *password      = in + 2;
+    const vector *salt          = in + 3;
+    const vector *key           = in + 4;
+    const vector *ad            = in + 5;
+    void         *work_area     = alloc(nb_blocks * 1024);
+    crypto_argon2i(out->buf, out->size,
+                   work_area, nb_blocks, nb_iterations,
+                   password->buf, password->size,
+                   salt    ->buf, salt    ->size,
+                   key     ->buf, key     ->size,
+                   ad      ->buf, ad      ->size);
+    free(work_area);
 }
 
 sv x25519(const vector in[], vector *out)