[tor-commits] [stem/master] Randomize created hidden service descriptor fields

atagar at torproject.org atagar at torproject.org
Sat Jul 1 19:19:44 UTC 2017


commit 1986f7dfbd9f4281e4c7165041b0e0137f31a74e
Author: Damian Johnson <atagar at torproject.org>
Date:   Sat Jul 1 12:15:04 2017 -0700

    Randomize created hidden service descriptor fields
---
 stem/descriptor/hidden_service_descriptor.py      | 29 ++++++++++-------------
 test/unit/descriptor/hidden_service_descriptor.py |  3 ---
 2 files changed, 13 insertions(+), 19 deletions(-)

diff --git a/stem/descriptor/hidden_service_descriptor.py b/stem/descriptor/hidden_service_descriptor.py
index f9a5e35..c78c9f0 100644
--- a/stem/descriptor/hidden_service_descriptor.py
+++ b/stem/descriptor/hidden_service_descriptor.py
@@ -31,7 +31,6 @@ import stem.util.connection
 import stem.util.str_tools
 
 from stem.descriptor import (
-  CRYPTO_BLOB,
   PGP_BLOCK_END,
   Descriptor,
   _descriptor_content,
@@ -42,6 +41,8 @@ from stem.descriptor import (
   _parse_simple_line,
   _parse_timestamp_line,
   _parse_key_block,
+  _random_date,
+  _random_crypto_blob,
 )
 
 try:
@@ -82,20 +83,6 @@ SINGLE_INTRODUCTION_POINT_FIELDS = [
 BASIC_AUTH = 1
 STEALTH_AUTH = 2
 
-HIDDEN_SERVICE_HEADER = (
-  ('rendezvous-service-descriptor', 'y3olqqblqw2gbh6phimfuiroechjjafa'),
-  ('version', '2'),
-  ('permanent-key', '\n-----BEGIN RSA PUBLIC KEY-----%s-----END RSA PUBLIC KEY-----' % CRYPTO_BLOB),
-  ('secret-id-part', 'e24kgecavwsznj7gpbktqsiwgvngsf4e'),
-  ('publication-time', '2015-02-23 20:00:00'),
-  ('protocol-versions', '2,3'),
-  ('introduction-points', '\n-----BEGIN MESSAGE-----\n-----END MESSAGE-----'),
-)
-
-HIDDEN_SERVICE_FOOTER = (
-  ('signature', '\n-----BEGIN SIGNATURE-----%s-----END SIGNATURE-----' % CRYPTO_BLOB),
-)
-
 
 class IntroductionPoints(collections.namedtuple('IntroductionPoints', INTRODUCTION_POINTS_ATTR.keys())):
   """
@@ -255,7 +242,17 @@ class HiddenServiceDescriptor(Descriptor):
     if sign:
       raise NotImplementedError('Signing of %s not implemented' % cls.__name__)
 
-    return _descriptor_content(attr, exclude, sign, HIDDEN_SERVICE_HEADER, HIDDEN_SERVICE_FOOTER)
+    return _descriptor_content(attr, exclude, sign, (
+      ('rendezvous-service-descriptor', 'y3olqqblqw2gbh6phimfuiroechjjafa'),
+      ('version', '2'),
+      ('permanent-key', _random_crypto_blob('RSA PUBLIC KEY')),
+      ('secret-id-part', 'e24kgecavwsznj7gpbktqsiwgvngsf4e'),
+      ('publication-time', _random_date()),
+      ('protocol-versions', '2,3'),
+      ('introduction-points', '\n-----BEGIN MESSAGE-----\n-----END MESSAGE-----'),
+    ), (
+      ('signature', _random_crypto_blob('SIGNATURE')),
+    ))
 
   @classmethod
   def create(cls, attr = None, exclude = (), validate = True, sign = False):
diff --git a/test/unit/descriptor/hidden_service_descriptor.py b/test/unit/descriptor/hidden_service_descriptor.py
index 09d8de5..1e8c135 100644
--- a/test/unit/descriptor/hidden_service_descriptor.py
+++ b/test/unit/descriptor/hidden_service_descriptor.py
@@ -418,14 +418,11 @@ class TestHiddenServiceDescriptor(unittest.TestCase):
 
     self.assertEqual('y3olqqblqw2gbh6phimfuiroechjjafa', desc.descriptor_id)
     self.assertEqual(2, desc.version)
-    self.assertTrue(stem.descriptor.CRYPTO_BLOB in desc.permanent_key)
     self.assertEqual('e24kgecavwsznj7gpbktqsiwgvngsf4e', desc.secret_id_part)
-    self.assertEqual(datetime.datetime(2015, 2, 23, 20, 0, 0), desc.published)
     self.assertEqual([2, 3], desc.protocol_versions)
     self.assertEqual('-----BEGIN MESSAGE-----\n-----END MESSAGE-----', desc.introduction_points_encoded)
     self.assertEqual([], desc.introduction_points_auth)
     self.assertEqual(b'', desc.introduction_points_content)
-    self.assertTrue(stem.descriptor.CRYPTO_BLOB in desc.signature)
     self.assertEqual([], desc.introduction_points())
 
   def test_unrecognized_line(self):





More information about the tor-commits mailing list