[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