summaryrefslogtreecommitdiffstats
path: root/src/tests/vm/child-linear.c
diff options
context:
space:
mode:
Diffstat (limited to 'src/tests/vm/child-linear.c')
-rw-r--r--src/tests/vm/child-linear.c36
1 files changed, 36 insertions, 0 deletions
diff --git a/src/tests/vm/child-linear.c b/src/tests/vm/child-linear.c
new file mode 100644
index 0000000..eca3e3f
--- /dev/null
+++ b/src/tests/vm/child-linear.c
@@ -0,0 +1,36 @@
+/* Child process of page-parallel.
+ Encrypts 1 MB of zeros, then decrypts it, and ensures that
+ the zeros are back. */
+
+#include <string.h>
+#include "tests/arc4.h"
+#include "tests/lib.h"
+#include "tests/main.h"
+
+const char *test_name = "child-linear";
+
+#define SIZE (1024 * 1024)
+static char buf[SIZE];
+
+int
+main (int argc, char *argv[])
+{
+ const char *key = argv[argc - 1];
+ struct arc4 arc4;
+ size_t i;
+
+ /* Encrypt zeros. */
+ arc4_init (&arc4, key, strlen (key));
+ arc4_crypt (&arc4, buf, SIZE);
+
+ /* Decrypt back to zeros. */
+ arc4_init (&arc4, key, strlen (key));
+ arc4_crypt (&arc4, buf, SIZE);
+
+ /* Check that it's all zeros. */
+ for (i = 0; i < SIZE; i++)
+ if (buf[i] != '\0')
+ fail ("byte %zu != 0", i);
+
+ return 0x42;
+}