aboutsummaryrefslogtreecommitdiff
path: root/src/test/rend_test_helpers.c
diff options
context:
space:
mode:
authorOla Bini <ola@olabini.se>2015-09-15 16:21:50 +0200
committerOla Bini <ola@olabini.se>2015-09-15 16:21:50 +0200
commitade5005853c17b3ae5923c194680442e0f86db4d (patch)
tree5f49844c3e2062b99468fb2d2d0a4bf5224d6b58 /src/test/rend_test_helpers.c
parenta444b11323799536b4cd7902e29f711b0806293a (diff)
downloadtor-ade5005853c17b3ae5923c194680442e0f86db4d.tar.gz
tor-ade5005853c17b3ae5923c194680442e0f86db4d.zip
Add tests for the rend cache
Diffstat (limited to 'src/test/rend_test_helpers.c')
-rw-r--r--src/test/rend_test_helpers.c65
1 files changed, 65 insertions, 0 deletions
diff --git a/src/test/rend_test_helpers.c b/src/test/rend_test_helpers.c
new file mode 100644
index 0000000000..06e40a0153
--- /dev/null
+++ b/src/test/rend_test_helpers.c
@@ -0,0 +1,65 @@
+#include "rend_test_helpers.h"
+
+#include "test.h"
+#include "rendcommon.h"
+
+/** TODO: Description */
+void
+generate_desc(int time_diff, rend_encoded_v2_service_descriptor_t **desc, char **service_id, int intro_points)
+{
+ rend_service_descriptor_t *generated = NULL;
+ smartlist_t *descs = smartlist_new();
+ time_t now;
+
+ now = time(NULL) + time_diff;
+ create_descriptor(&generated, service_id, intro_points);
+ generated->timestamp = now;
+
+ rend_encode_v2_descriptors(descs, generated, now, 0, REND_NO_AUTH, NULL, NULL);
+ *desc = ((rend_encoded_v2_service_descriptor_t *)smartlist_get(descs, 0));
+
+ smartlist_free(descs);
+ rend_service_descriptor_free(generated);
+}
+
+
+/** TODO: Description */
+void
+create_descriptor(rend_service_descriptor_t **generated, char **service_id, int intro_points)
+{
+ crypto_pk_t *pk1 = NULL;
+ crypto_pk_t *pk2 = NULL;
+ int i;
+
+ *service_id = tor_malloc(REND_SERVICE_ID_LEN_BASE32+1);
+ pk1 = pk_generate(0);
+ pk2 = pk_generate(1);
+
+ *generated = tor_malloc_zero(sizeof(rend_service_descriptor_t));
+ (*generated)->pk = crypto_pk_dup_key(pk1);
+ rend_get_service_id((*generated)->pk, *service_id);
+
+ (*generated)->version = 2;
+ (*generated)->protocols = 42;
+ (*generated)->intro_nodes = smartlist_new();
+
+ for (i = 0; i < intro_points; i++) {
+ rend_intro_point_t *intro = tor_malloc_zero(sizeof(rend_intro_point_t));
+ crypto_pk_t *okey = pk_generate(2 + i);
+ intro->extend_info = tor_malloc_zero(sizeof(extend_info_t));
+ intro->extend_info->onion_key = okey;
+ crypto_pk_get_digest(intro->extend_info->onion_key,
+ intro->extend_info->identity_digest);
+ intro->extend_info->nickname[0] = '$';
+ base16_encode(intro->extend_info->nickname + 1,
+ sizeof(intro->extend_info->nickname) - 1,
+ intro->extend_info->identity_digest, DIGEST_LEN);
+ tor_addr_from_ipv4h(&intro->extend_info->addr, crypto_rand_int(65536));
+ intro->extend_info->port = 1 + crypto_rand_int(65535);
+ intro->intro_key = crypto_pk_dup_key(pk2);
+ smartlist_add((*generated)->intro_nodes, intro);
+ }
+
+ crypto_pk_free(pk1);
+ crypto_pk_free(pk2);
+}