aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--.gitignore1
-rw-r--r--tests/GNUmakefile2
-rw-r--r--tests/test-rpc_get_random.c69
3 files changed, 71 insertions, 1 deletions
diff --git a/.gitignore b/.gitignore
index 5a3bff4..6919235 100644
--- a/.gitignore
+++ b/.gitignore
@@ -18,5 +18,6 @@ tests/test-rsa
tests/test-rsa-*.der
tests/test-trng
tests/test-rpc_get_version
+tests/test-rpc_get_random
utils/cores
utils/eim_peek_poke
diff --git a/tests/GNUmakefile b/tests/GNUmakefile
index 63db700..65c7a25 100644
--- a/tests/GNUmakefile
+++ b/tests/GNUmakefile
@@ -40,7 +40,7 @@ ifndef RPC_SERVER
endif
endif
ifdef RPC_CLIENT
- BIN += test-rpc_hash test-rpc_pkey test-rpc_get_version
+ BIN += test-rpc_hash test-rpc_pkey test-rpc_get_version test-rpc_get_random
endif
ifdef RPC_SERVER
BIN += test-rpc_server
diff --git a/tests/test-rpc_get_random.c b/tests/test-rpc_get_random.c
new file mode 100644
index 0000000..9e9765d
--- /dev/null
+++ b/tests/test-rpc_get_random.c
@@ -0,0 +1,69 @@
+/*
+ * test-rpc_get_random.c
+ * ---------------------
+ * Test code for RPC interface to Cryptech hash cores.
+ *
+ * Copyright (c) 2016, NORDUnet A/S
+ * All rights reserved.
+ *
+ * Redistribution and use in source and binary forms, with or without
+ * modification, are permitted provided that the following conditions are
+ * met:
+ * - Redistributions of source code must retain the above copyright notice,
+ * this list of conditions and the following disclaimer.
+ *
+ * - Redistributions in binary form must reproduce the above copyright
+ * notice, this list of conditions and the following disclaimer in the
+ * documentation and/or other materials provided with the distribution.
+ *
+ * - Neither the name of the NORDUnet nor the names of its contributors may
+ * be used to endorse or promote products derived from this software
+ * without specific prior written permission.
+ *
+ * THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS
+ * IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED
+ * TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A
+ * PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
+ * HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
+ * SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED
+ * TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR
+ * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF
+ * LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING
+ * NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS
+ * SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+ */
+
+#include <stdio.h>
+#include <stdlib.h>
+
+#include <hal.h>
+
+#define DEFAULT_LEN 16
+
+static void hexdump(uint8_t *buf, int len)
+{
+ for (int i = 0; i < len; ++i)
+ printf("%02x%c", buf[i], ((i & 0x07) == 0x07) ? '\n' : ' ');
+ if ((len & 0x07) != 0)
+ printf("\n");
+}
+
+int main(int argc, char *argv[])
+{
+ int len = 0;
+ if (argc > 1)
+ len = atoi(argv[1]);
+ if (len <= 0) /* no arg, or bad arg */
+ len = DEFAULT_LEN;
+
+ uint8_t rnd[len];
+
+#define check(op) { hal_error_t err; if ((err = (op)) != HAL_OK) { printf("%s: %s\n", #op, hal_error_string(err)); return 1; } }
+
+ check(hal_rpc_client_init());
+ check(hal_rpc_get_random(rnd, sizeof(rnd)));
+
+ hexdump(rnd, len);
+
+ return 0;
+}