[tor-commits] [tor/master] hs-v3: Add a lookup service current descriptor function

nickm at torproject.org nickm at torproject.org
Wed Dec 6 00:44:53 UTC 2017


commit 0a3b2954487480114201758e02b3560e46ea1cca
Author: David Goulet <dgoulet at torproject.org>
Date:   Tue Nov 7 16:00:40 2017 -0500

    hs-v3: Add a lookup service current descriptor function
    
    This will be used by the control port command "GETINFO
    hs/service/desc/id/<ADDR>" which returns the encoded current descriptor for
    the given onion address.
    
    Signed-off-by: David Goulet <dgoulet at torproject.org>
---
 src/or/hs_service.c | 25 +++++++++++++++++++++++++
 src/or/hs_service.h |  2 ++
 2 files changed, 27 insertions(+)

diff --git a/src/or/hs_service.c b/src/or/hs_service.c
index 8e2f52dcf..349aa265d 100644
--- a/src/or/hs_service.c
+++ b/src/or/hs_service.c
@@ -2900,6 +2900,31 @@ service_add_fnames_to_list(const hs_service_t *service, smartlist_t *list)
 /* Public API */
 /* ========== */
 
+/* Using the ed25519 public key pk, find a service for that key and return the
+ * current encoded descriptor as a newly allocated string or NULL if not
+ * found. This is used by the control port subsystem. */
+char *
+hs_service_lookup_current_desc(const ed25519_public_key_t *pk)
+{
+  const hs_service_t *service;
+
+  tor_assert(pk);
+
+  service = find_service(hs_service_map, pk);
+  if (service && service->desc_current) {
+    char *encoded_desc = NULL;
+    /* No matter what is the result (which should never be a failure), return
+     * the encoded variable, if success it will contain the right thing else
+     * it will be NULL. */
+    hs_desc_encode_descriptor(service->desc_current->desc,
+                              &service->desc_current->signing_kp,
+                              &encoded_desc);
+    return encoded_desc;
+  }
+
+  return NULL;
+}
+
 /* Return the number of service we have configured and usable. */
 unsigned int
 hs_service_get_num_services(void)
diff --git a/src/or/hs_service.h b/src/or/hs_service.h
index ed1053d85..e78cc4c2b 100644
--- a/src/or/hs_service.h
+++ b/src/or/hs_service.h
@@ -271,6 +271,8 @@ int hs_service_receive_introduce2(origin_circuit_t *circ,
 
 void hs_service_intro_circ_has_closed(origin_circuit_t *circ);
 
+char *hs_service_lookup_current_desc(const ed25519_public_key_t *pk);
+
 #ifdef HS_SERVICE_PRIVATE
 
 #ifdef TOR_UNIT_TESTS





More information about the tor-commits mailing list