ECDSA : test vectors from RFC 4754
diff --git a/tests/suites/helpers.function b/tests/suites/helpers.function
index 2f1b26c..208e7e6 100644
--- a/tests/suites/helpers.function
+++ b/tests/suites/helpers.function
@@ -218,3 +218,49 @@
 
     return( 0 );
 }
+
+/**
+ * This function returns a buffer given as a hex string.
+ *
+ * The buffer is reversed so that the following are equivalent:
+ *   mpi_fill_random( x, len, not_rnd, str );
+ *   mpi_read_string( x, 16, str );
+ * (So, not random at all. Usefull to match test vectors.)
+ * Based on unhexify(), just reversed (changes marked by "sic")
+ */
+static int not_rnd( void *in, unsigned char *out, size_t len )
+{
+    unsigned char *obuf;
+    const char *ibuf = in;
+    unsigned char c, c2;
+    assert( len == strlen(ibuf) / 2 );
+    assert(!(strlen(ibuf) %1)); // must be even number of bytes
+
+    obuf = out + (len - 1); // sic
+    while (*ibuf != 0)
+    {
+        c = *ibuf++;
+        if( c >= '0' && c <= '9' )
+            c -= '0';
+        else if( c >= 'a' && c <= 'f' )
+            c -= 'a' - 10;
+        else if( c >= 'A' && c <= 'F' )
+            c -= 'A' - 10;
+        else
+            assert( 0 );
+
+        c2 = *ibuf++;
+        if( c2 >= '0' && c2 <= '9' )
+            c2 -= '0';
+        else if( c2 >= 'a' && c2 <= 'f' )
+            c2 -= 'a' - 10;
+        else if( c2 >= 'A' && c2 <= 'F' )
+            c2 -= 'A' - 10;
+        else
+            assert( 0 );
+
+        *obuf-- = ( c << 4 ) | c2; // sic
+    }
+
+    return( 0 );
+}