[Author Prev][Author Next][Thread Prev][Thread Next][Author Index][Thread Index]

[tor-commits] [tor/master] Unit tests for test_routerkeys_write_fingerprint



commit 886d4be14977f6033442161901a6cdd2ad0a5076
Author: Nick Mathewson <nickm@xxxxxxxxxxxxxx>
Date:   Wed Feb 26 13:42:21 2014 -0500

    Unit tests for test_routerkeys_write_fingerprint
---
 src/or/router.c            |    2 +-
 src/or/router.h            |    1 +
 src/test/include.am        |    1 +
 src/test/test.c            |    2 ++
 src/test/test_routerkeys.c |   84 ++++++++++++++++++++++++++++++++++++++++++++
 5 files changed, 89 insertions(+), 1 deletion(-)

diff --git a/src/or/router.c b/src/or/router.c
index 2b58de8..6fa9f65 100644
--- a/src/or/router.c
+++ b/src/or/router.c
@@ -688,7 +688,7 @@ router_initialize_tls_context(void)
  * it to 'fingerprint' (or 'hashed-fingerprint'). Return 0 on success, or
  * -1 if Tor should die,
  */
-static int
+STATIC int
 router_write_fingerprint(int hashed)
 {
   char *keydir = NULL, *cp = NULL;
diff --git a/src/or/router.h b/src/or/router.h
index 74b673f..6307246 100644
--- a/src/or/router.h
+++ b/src/or/router.h
@@ -147,6 +147,7 @@ smartlist_t *router_get_all_orports(const routerinfo_t *ri);
 #ifdef ROUTER_PRIVATE
 /* Used only by router.c and test.c */
 STATIC void get_platform_str(char *platform, size_t len);
+STATIC int router_write_fingerprint(int hashed);
 #endif
 
 #endif
diff --git a/src/test/include.am b/src/test/include.am
index 5f978b5..e7aebac 100644
--- a/src/test/include.am
+++ b/src/test/include.am
@@ -35,6 +35,7 @@ src_test_test_SOURCES = \
 	src/test/test_options.c \
 	src/test/test_pt.c \
 	src/test/test_replay.c \
+	src/test/test_routerkeys.c \
 	src/test/test_socks.c \
 	src/test/test_util.c \
 	src/test/test_config.c \
diff --git a/src/test/test.c b/src/test/test.c
index 45f7c09..2529e29 100644
--- a/src/test/test.c
+++ b/src/test/test.c
@@ -1629,6 +1629,7 @@ extern struct testcase_t logging_tests[];
 extern struct testcase_t backtrace_tests[];
 extern struct testcase_t hs_tests[];
 extern struct testcase_t nodelist_tests[];
+extern struct testcase_t routerkeys_tests[];
 
 static struct testgroup_t testgroups[] = {
   { "", test_array },
@@ -1654,6 +1655,7 @@ static struct testgroup_t testgroups[] = {
   { "control/", controller_event_tests },
   { "hs/", hs_tests },
   { "nodelist/", nodelist_tests },
+  { "routerkeys/", routerkeys_tests },
   END_OF_GROUPS
 };
 
diff --git a/src/test/test_routerkeys.c b/src/test/test_routerkeys.c
new file mode 100644
index 0000000..ff52a7e
--- /dev/null
+++ b/src/test/test_routerkeys.c
@@ -0,0 +1,84 @@
+/* Copyright (c) 2001-2004, Roger Dingledine.
+ * Copyright (c) 2004-2006, Roger Dingledine, Nick Mathewson.
+ * Copyright (c) 2007-2013, The Tor Project, Inc. */
+/* See LICENSE for licensing information */
+
+#include "orconfig.h"
+#define ROUTER_PRIVATE
+#include "or.h"
+#include "config.h"
+#include "router.h"
+#include "util.h"
+#include "crypto.h"
+
+#include "test.h"
+
+static void
+test_routerkeys_write_fingerprint(void *arg)
+{
+  crypto_pk_t *key = pk_generate(2);
+  or_options_t *options = get_options_mutable();
+  const char *ddir = get_fname("write_fingerprint");
+  char *cp = NULL, *cp2 = NULL;
+  char fp[FINGERPRINT_LEN+1];
+
+  (void)arg;
+
+  tt_assert(key);
+
+  options->ORPort_set = 1; /* So that we can get the server ID key */
+  options->DataDirectory = tor_strdup(ddir);
+  options->Nickname = tor_strdup("haflinger");
+  set_server_identity_key(key);
+  set_client_identity_key(crypto_pk_dup_key(key));
+
+  check_private_dir(ddir, CPD_CREATE, NULL);
+  tt_int_op(crypto_pk_cmp_keys(get_server_identity_key(),key),==,0);
+
+  /* Write fingerprint file */
+  tt_int_op(0, ==, router_write_fingerprint(0));
+  cp = read_file_to_str(get_fname("write_fingerprint/fingerprint"),
+                        0, NULL);
+  crypto_pk_get_fingerprint(key, fp, 0);
+  tor_asprintf(&cp2, "haflinger %s\n", fp);
+  tt_str_op(cp, ==, cp2);
+  tor_free(cp);
+  tor_free(cp2);
+
+  /* Write hashed-fingerprint file */
+  tt_int_op(0, ==, router_write_fingerprint(1));
+  cp = read_file_to_str(get_fname("write_fingerprint/hashed-fingerprint"),
+                        0, NULL);
+  crypto_pk_get_hashed_fingerprint(key, fp);
+  tor_asprintf(&cp2, "haflinger %s\n", fp);
+  tt_str_op(cp, ==, cp2);
+  tor_free(cp);
+  tor_free(cp2);
+
+  /* Replace outdated file */
+  write_str_to_file(get_fname("write_fingerprint/hashed-fingerprint"),
+                    "junk goes here", 0);
+  tt_int_op(0, ==, router_write_fingerprint(1));
+  cp = read_file_to_str(get_fname("write_fingerprint/hashed-fingerprint"),
+                        0, NULL);
+  crypto_pk_get_hashed_fingerprint(key, fp);
+  tor_asprintf(&cp2, "haflinger %s\n", fp);
+  tt_str_op(cp, ==, cp2);
+  tor_free(cp);
+  tor_free(cp2);
+
+ done:
+  crypto_pk_free(key);
+  set_client_identity_key(NULL);
+  tor_free(cp);
+  tor_free(cp2);
+}
+
+#define TEST(name, flags)                                       \
+  { #name , test_routerkeys_ ## name, (flags), NULL, NULL }
+
+struct testcase_t routerkeys_tests[] = {
+  TEST(write_fingerprint, TT_FORK),
+  END_OF_TESTCASES
+};
+



_______________________________________________
tor-commits mailing list
tor-commits@xxxxxxxxxxxxxxxxxxxx
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits