rend_test_helpers.c 2.1 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465
  1. #include "rend_test_helpers.h"
  2. #include "test.h"
  3. #include "rendcommon.h"
  4. /** TODO: Description */
  5. void
  6. generate_desc(int time_diff, rend_encoded_v2_service_descriptor_t **desc, char **service_id, int intro_points)
  7. {
  8. rend_service_descriptor_t *generated = NULL;
  9. smartlist_t *descs = smartlist_new();
  10. time_t now;
  11. now = time(NULL) + time_diff;
  12. create_descriptor(&generated, service_id, intro_points);
  13. generated->timestamp = now;
  14. rend_encode_v2_descriptors(descs, generated, now, 0, REND_NO_AUTH, NULL, NULL);
  15. *desc = ((rend_encoded_v2_service_descriptor_t *)smartlist_get(descs, 0));
  16. smartlist_free(descs);
  17. rend_service_descriptor_free(generated);
  18. }
  19. /** TODO: Description */
  20. void
  21. create_descriptor(rend_service_descriptor_t **generated, char **service_id, int intro_points)
  22. {
  23. crypto_pk_t *pk1 = NULL;
  24. crypto_pk_t *pk2 = NULL;
  25. int i;
  26. *service_id = tor_malloc(REND_SERVICE_ID_LEN_BASE32+1);
  27. pk1 = pk_generate(0);
  28. pk2 = pk_generate(1);
  29. *generated = tor_malloc_zero(sizeof(rend_service_descriptor_t));
  30. (*generated)->pk = crypto_pk_dup_key(pk1);
  31. rend_get_service_id((*generated)->pk, *service_id);
  32. (*generated)->version = 2;
  33. (*generated)->protocols = 42;
  34. (*generated)->intro_nodes = smartlist_new();
  35. for (i = 0; i < intro_points; i++) {
  36. rend_intro_point_t *intro = tor_malloc_zero(sizeof(rend_intro_point_t));
  37. crypto_pk_t *okey = pk_generate(2 + i);
  38. intro->extend_info = tor_malloc_zero(sizeof(extend_info_t));
  39. intro->extend_info->onion_key = okey;
  40. crypto_pk_get_digest(intro->extend_info->onion_key,
  41. intro->extend_info->identity_digest);
  42. intro->extend_info->nickname[0] = '$';
  43. base16_encode(intro->extend_info->nickname + 1,
  44. sizeof(intro->extend_info->nickname) - 1,
  45. intro->extend_info->identity_digest, DIGEST_LEN);
  46. tor_addr_from_ipv4h(&intro->extend_info->addr, crypto_rand_int(65536));
  47. intro->extend_info->port = 1 + crypto_rand_int(65535);
  48. intro->intro_key = crypto_pk_dup_key(pk2);
  49. smartlist_add((*generated)->intro_nodes, intro);
  50. }
  51. crypto_pk_free(pk1);
  52. crypto_pk_free(pk2);
  53. }