[tor-commits] [stem/master] Parse signature field

2019-08-24 Thread atagar
commit 6b16f966b1f7d617e396cd9357cfc6766bf3dc78
Author: Damian Johnson 
Date:   Sat Aug 24 16:10:56 2019 -0700

Parse signature field
---
 stem/descriptor/hidden_service.py | 12 
 test/unit/descriptor/hidden_service_v3.py |  1 +
 2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 48cfa807..1ab450fd 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -130,7 +130,7 @@ def _parse_file(descriptor_file, desc_type = None, validate 
= False, **kwargs):
   # block following it.
 
   while True:
-descriptor_content = _read_until_keywords('signature', descriptor_file)
+descriptor_content = _read_until_keywords('signature', descriptor_file, 
True)
 
 if desc_type == HiddenServiceDescriptorV2:
   block_end_prefix = PGP_BLOCK_END.split(' ', 1)[0]
@@ -180,13 +180,14 @@ _parse_rendezvous_service_descriptor_line = 
_parse_simple_line('rendezvous-servi
 _parse_permanent_key_line = _parse_key_block('permanent-key', 'permanent_key', 
'RSA PUBLIC KEY')
 _parse_secret_id_part_line = _parse_simple_line('secret-id-part', 
'secret_id_part')
 _parse_publication_time_line = _parse_timestamp_line('publication-time', 
'published')
-_parse_signature_line = _parse_key_block('signature', 'signature', 'SIGNATURE')
+_parse_v2_signature_line = _parse_key_block('signature', 'signature', 
'SIGNATURE')
 
 _parse_v3_version_line = _parse_int_line('hs-descriptor', 'version', 
allow_negative = False)
 _parse_lifetime_line = _parse_int_line('descriptor-lifetime', 'lifetime', 
allow_negative = False)
 _parse_signing_key_line = _parse_key_block('descriptor-signing-key-cert', 
'signing_cert', 'ED25519 CERT')
 _parse_revision_counter_line = _parse_int_line('revision-counter', 
'revision_counter', allow_negative = False)
 _parse_superencrypted_line = _parse_key_block('superencrypted', 
'superencrypted', 'MESSAGE')
+_parse_v3_signature_line = _parse_simple_line('signature', 'signature')
 
 
 class BaseHiddenServiceDescriptor(Descriptor):
@@ -243,7 +244,7 @@ class 
HiddenServiceDescriptorV2(BaseHiddenServiceDescriptor):
 'introduction_points_encoded': (None, _parse_introduction_points_line),
 'introduction_points_auth': ([], _parse_introduction_points_line),
 'introduction_points_content': (None, _parse_introduction_points_line),
-'signature': (None, _parse_signature_line),
+'signature': (None, _parse_v2_signature_line),
   }
 
   PARSER_FOR_LINE = {
@@ -254,7 +255,7 @@ class 
HiddenServiceDescriptorV2(BaseHiddenServiceDescriptor):
 'publication-time': _parse_publication_time_line,
 'protocol-versions': _parse_protocol_versions_line,
 'introduction-points': _parse_introduction_points_line,
-'signature': _parse_signature_line,
+'signature': _parse_v2_signature_line,
   }
 
   @classmethod
@@ -468,6 +469,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
   :var str signing_cert: **\\*** cross-certifier for the short-term descriptor 
signing key
   :var int revision_counter: **\\*** descriptor revision number
   :var str superencrypted: **\\*** encrypted HS-DESC-ENC payload
+  :var str signature: **\\*** signature of this descriptor
 
   **\\*** attribute is either required when we're parsed with validation or has
   a default value, others are left as **None** if undefined
@@ -483,6 +485,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 'signing_cert': (None, _parse_signing_key_line),
 'revision_counter': (None, _parse_revision_counter_line),
 'superencrypted': (None, _parse_superencrypted_line),
+'signature': (None, _parse_v3_signature_line),
   }
 
   PARSER_FOR_LINE = {
@@ -491,6 +494,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 'descriptor-signing-key-cert': _parse_signing_key_line,
 'revision-counter': _parse_revision_counter_line,
 'superencrypted': _parse_superencrypted_line,
+'signature': _parse_v3_signature_line,
   }
 
   @classmethod
diff --git a/test/unit/descriptor/hidden_service_v3.py 
b/test/unit/descriptor/hidden_service_v3.py
index ea7d40c9..d441c8cc 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -41,6 +41,7 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
 self.assertEqual(EXPECTED_SIGNING_CERT, desc.signing_cert)
 self.assertEqual(15, desc.revision_counter)
 self.assertTrue('k9uKnDpxhkH0h1h' in desc.superencrypted)
+
self.assertEqual('wdc7ffr+dPZJ/mIQ1l4WYqNABcmsm6SHW/NL3M3wG7bjjqOJWoPR5TimUXxH52n5Zk0Gc7hl/hz3YYmAx5MvAg',
 desc.signature)
 
   def test_invalid_version(self):
 """



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Parse revision counter field

2019-08-24 Thread atagar
commit e4f364941e89821ab8953698c28c3276d4f76cea
Author: Damian Johnson 
Date:   Sat Aug 24 15:43:24 2019 -0700

Parse revision counter field
---
 stem/descriptor/hidden_service.py |  4 
 test/unit/descriptor/hidden_service_v3.py | 15 +++
 2 files changed, 19 insertions(+)

diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 84b8d5e7..5336b1bd 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -185,6 +185,7 @@ _parse_signature_line = _parse_key_block('signature', 
'signature', 'SIGNATURE')
 _parse_v3_version_line = _parse_int_line('hs-descriptor', 'version', 
allow_negative = False)
 _parse_lifetime_line = _parse_int_line('descriptor-lifetime', 'lifetime', 
allow_negative = False)
 _parse_signing_key_line = _parse_key_block('descriptor-signing-key-cert', 
'signing_cert', 'ED25519 CERT')
+_parse_revision_counter_line = _parse_int_line('revision-counter', 
'revision_counter', allow_negative = False)
 
 
 class BaseHiddenServiceDescriptor(Descriptor):
@@ -464,6 +465,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
   :var int version: **\\*** hidden service descriptor version
   :var int lifetime: **\\*** minutes after publication this descriptor is valid
   :var str signing_cert: **\\*** cross-certifier for the short-term descriptor 
signing key
+  :var int revision_counter: **\\*** descriptor revision number
 
   **\\*** attribute is either required when we're parsed with validation or has
   a default value, others are left as **None** if undefined
@@ -477,12 +479,14 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 'version': (None, _parse_v3_version_line),
 'lifetime': (None, _parse_lifetime_line),
 'signing_cert': (None, _parse_signing_key_line),
+'revision_counter': (None, _parse_revision_counter_line),
   }
 
   PARSER_FOR_LINE = {
 'hs-descriptor': _parse_v3_version_line,
 'descriptor-lifetime': _parse_lifetime_line,
 'descriptor-signing-key-cert': _parse_signing_key_line,
+'revision-counter': _parse_revision_counter_line,
   }
 
   @classmethod
diff --git a/test/unit/descriptor/hidden_service_v3.py 
b/test/unit/descriptor/hidden_service_v3.py
index 07a8e32c..5a5f53d4 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -39,6 +39,7 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
 self.assertEqual(3, desc.version)
 self.assertEqual(180, desc.lifetime)
 self.assertEqual(EXPECTED_SIGNING_CERT, desc.signing_cert)
+self.assertEqual(15, desc.revision_counter)
 
   def test_invalid_version(self):
 """
@@ -67,3 +68,17 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
 
 for test_value in test_values:
   expect_invalid_attr(self, {'descriptor-lifetime': test_value}, 
'lifetime')
+
+  def test_invalid_revision_counter(self):
+"""
+Checks that our revision counter field expects a numeric value.
+"""
+
+test_values = (
+  '',
+  '-10',
+  'hello',
+)
+
+for test_value in test_values:
+  expect_invalid_attr(self, {'revision-counter': test_value}, 
'revision_counter')



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Hidden service v3 descriptor support

2019-08-24 Thread atagar
commit 6790035c5756a8022e389f2cb95d2afb78d8c953
Merge: acfcc58b 5b1fc94f
Author: Damian Johnson 
Date:   Sat Aug 24 17:17:15 2019 -0700

Hidden service v3 descriptor support

Support for the outer later of v3 hidden service descriptors...

  https://trac.torproject.org/projects/tor/ticket/31369
  https://gitweb.torproject.org/torspec.git/tree/rend-spec-v3.txt#n1046

This does *not* include support for reading HS-DESC-ENC (superencrypted 
blobs)
nor validating the signature. Patches welcome for both!

 docs/api.rst   |   2 +-
 docs/api/descriptor/hidden_service.rst |   5 +
 docs/api/descriptor/hidden_service_descriptor.rst  |   5 -
 docs/change_log.rst|  10 +-
 docs/contents.rst  |   3 +-
 docs/tutorials/mirror_mirror_on_the_wall.rst   |   2 +-
 docs/tutorials/over_the_river.rst  |   2 +-
 stem/control.py|   2 +-
 stem/descriptor/__init__.py|  38 +-
 stem/descriptor/extrainfo_descriptor.py|  15 +-
 stem/descriptor/hidden_service.py  | 552 +
 stem/descriptor/hidden_service_descriptor.py   | 446 +
 stem/descriptor/server_descriptor.py   |  34 +-
 stem/response/events.py|   4 +-
 test/settings.cfg  |  11 +-
 test/unit/descriptor/data/hidden_service_v3| 223 +
 ..._service_descriptor.py => hidden_service_v2.py} |  60 +--
 test/unit/descriptor/hidden_service_v3.py  | 109 
 18 files changed, 987 insertions(+), 536 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Helper for parsing integer lines

2019-08-24 Thread atagar
commit 546c18a0fc96ab04a7302cd925d1968e10af0a75
Author: Damian Johnson 
Date:   Sat Aug 24 15:28:33 2019 -0700

Helper for parsing integer lines

We've done this in quite a few spots, so time for a helper.
---
 stem/descriptor/__init__.py | 17 +++
 stem/descriptor/extrainfo_descriptor.py | 15 ++---
 stem/descriptor/hidden_service.py   | 38 -
 stem/descriptor/server_descriptor.py| 34 -
 4 files changed, 42 insertions(+), 62 deletions(-)

diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 1b5e53bc..3a3d1838 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -657,6 +657,23 @@ def _parse_bytes_line(keyword, attribute):
   return _parse
 
 
+def _parse_int_line(keyword, attribute, allow_negative = True):
+  def _parse(descriptor, entries):
+value = _value(keyword, entries)
+
+try:
+  int_val = int(value)
+except ValueError:
+  raise ValueError('%s must have a numeric value: %s' % (keyword, value))
+
+if not allow_negative and int_val < 0:
+  raise ValueError('%s must have a positive value: %s' % (keyword, value))
+
+setattr(descriptor, attribute, int_val)
+
+  return _parse
+
+
 def _parse_timestamp_line(keyword, attribute):
   # "" -MM-DD HH:MM:SS
 
diff --git a/stem/descriptor/extrainfo_descriptor.py 
b/stem/descriptor/extrainfo_descriptor.py
index 82e3154f..d55b8eef 100644
--- a/stem/descriptor/extrainfo_descriptor.py
+++ b/stem/descriptor/extrainfo_descriptor.py
@@ -88,6 +88,7 @@ from stem.descriptor import (
   _value,
   _values,
   _parse_simple_line,
+  _parse_int_line,
   _parse_timestamp_line,
   _parse_forty_character_hex,
   _parse_key_block,
@@ -306,19 +307,6 @@ def _parse_transport_line(descriptor, entries):
   descriptor.transport = transports
 
 
-def _parse_cell_circuits_per_decline_line(descriptor, entries):
-  # "cell-circuits-per-decile" num
-
-  value = _value('cell-circuits-per-decile', entries)
-
-  if not value.isdigit():
-raise ValueError('Non-numeric cell-circuits-per-decile value: %s' % value)
-  elif int(value) < 0:
-raise ValueError('Negative cell-circuits-per-decile value: %s' % value)
-
-  descriptor.cell_circuits_per_decile = int(value)
-
-
 def _parse_padding_counts_line(descriptor, entries):
   # "padding-counts" -MM-DD HH:MM:SS (NSEC s) key=val key=val...
 
@@ -538,6 +526,7 @@ _parse_dirreq_v3_share_line = 
functools.partial(_parse_dirreq_share_line, 'dirre
 _parse_cell_processed_cells_line = functools.partial(_parse_cell_line, 
'cell-processed-cells', 'cell_processed_cells')
 _parse_cell_queued_cells_line = functools.partial(_parse_cell_line, 
'cell-queued-cells', 'cell_queued_cells')
 _parse_cell_time_in_queue_line = functools.partial(_parse_cell_line, 
'cell-time-in-queue', 'cell_time_in_queue')
+_parse_cell_circuits_per_decline_line = 
_parse_int_line('cell-circuits-per-decile', 'cell_circuits_per_decile', 
allow_negative = False)
 _parse_published_line = _parse_timestamp_line('published', 'published')
 _parse_geoip_start_time_line = _parse_timestamp_line('geoip-start-time', 
'geoip_start_time')
 _parse_cell_stats_end_line = 
functools.partial(_parse_timestamp_and_interval_line, 'cell-stats-end', 
'cell_stats_end', 'cell_stats_interval')
diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 44bf114b..4af40d46 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -42,6 +42,7 @@ from stem.descriptor import (
   _bytes_for_block,
   _value,
   _parse_simple_line,
+  _parse_int_line,
   _parse_timestamp_line,
   _parse_key_block,
   _random_date,
@@ -144,31 +145,6 @@ def _parse_file(descriptor_file, desc_type = None, 
validate = False, **kwargs):
   break  # done parsing file
 
 
-def _parse_version_line(descriptor, entries):
-  if isinstance(descriptor, HiddenServiceDescriptorV2):
-keyword = 'version'
-  elif isinstance(descriptor, HiddenServiceDescriptorV3):
-keyword = 'hs-descriptor'
-  else:
-raise ValueError('BUG: unexpected descriptor type (%s)' % 
type(descriptor).__name__)
-
-  value = _value(keyword, entries)
-
-  if value.isdigit():
-descriptor.version = int(value)
-  else:
-raise ValueError('%s line must have a positive integer value: %s' % 
(keyword, value))
-
-
-def _parse_lifetime(descriptor, entries):
-  value = _value('descriptor-lifetime', entries)
-
-  if value.isdigit():
-descriptor.lifetime = int(value)
-  else:
-raise ValueError('descriptor-lifetime line must have a positive integer 
value: %s' % value)
-
-
 def _parse_protocol_versions_line(descriptor, entries):
   value = _value('protocol-versions', entries)
 
@@ -199,12 +175,16 @@ def _parse_introduction_points_line(descriptor, entries):
 raise ValueError("'introduction-points' isn't base64 encoded content:\n%s" 
% block_contents)
 
 
+_parse_v2_version_line = _parse_int_line('version', 

[tor-commits] [stem/master] Validate mandatory fields are present

2019-08-24 Thread atagar
commit 5b1fc94f6cb6719ff9bc2ab2c3c5620ac158d08b
Author: Damian Johnson 
Date:   Sat Aug 24 16:21:24 2019 -0700

Validate mandatory fields are present
---
 docs/change_log.rst  |  3 ++-
 docs/contents.rst|  1 +
 docs/tutorials/mirror_mirror_on_the_wall.rst |  2 +-
 stem/descriptor/hidden_service.py| 32 +++-
 test/unit/descriptor/hidden_service_v2.py|  4 ++--
 test/unit/descriptor/hidden_service_v3.py| 25 +-
 6 files changed, 57 insertions(+), 10 deletions(-)

diff --git a/docs/change_log.rst b/docs/change_log.rst
index d9c6bfa3..c5b5051e 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -60,6 +60,7 @@ The following are only available within Stem's `git repository
  * **Descriptors**
 
   * Added the `stem.descriptor.collector `_ 
module (:trac:`17979`)
+  * Added `v3 hidden service descriptor support 
`_ (:trac:`31369`)
   * `Bandwidth file support `_ 
(:trac:`29056`)
   * `stem.descriptor.remote `_ methods now raise 
:class:`stem.DownloadFailed`
   * Check Ed25519 validity though the cryptography module rather than PyNaCl 
(:trac:`22022`)
@@ -364,7 +365,7 @@ And last, Stem also now runs directly under both python2 
and python3 without a
  * **Descriptors**
 
   * Lazy-loading descriptors, improving performance by 25-70% depending on 
what type it is (:trac:`14011`)
-  * Added `support for hidden service descriptors 
`_ (:trac:`15004`)
+  * Added `support for hidden service descriptors 
`_ (:trac:`15004`)
   * When reading sanitised bridge descriptors (server or extrainfo), 
:func:`~stem.descriptor.__init__.parse_file` treated the whole file as a single 
descriptor
   * The :class:`~stem.descriptor.networkstatus.DirectoryAuthority` 
'fingerprint' attribute was actually its 'v3ident'
   * Added consensus' new package attribute (:spec:`ab64534`)
diff --git a/docs/contents.rst b/docs/contents.rst
index 98e80a5f..87e75220 100644
--- a/docs/contents.rst
+++ b/docs/contents.rst
@@ -14,6 +14,7 @@ Contents
tutorials/down_the_rabbit_hole
tutorials/double_double_toil_and_trouble
 
+   tutorials/examples/bandwidth_stats
tutorials/examples/check_digests
tutorials/examples/compare_flags
tutorials/examples/download_descriptor
diff --git a/docs/tutorials/mirror_mirror_on_the_wall.rst 
b/docs/tutorials/mirror_mirror_on_the_wall.rst
index 699625e4..f16df19b 100644
--- a/docs/tutorials/mirror_mirror_on_the_wall.rst
+++ b/docs/tutorials/mirror_mirror_on_the_wall.rst
@@ -34,7 +34,7 @@ Descriptor Type
 `Microdescriptor <../api/descriptor/microdescriptor.html>`_
  Minimalistic document that just includes the information necessary for Tor 
clients to work.
 `Network Status Document <../api/descriptor/networkstatus.html>`_  
  Though Tor relays are decentralized, the directories that track the overall 
network are not. These central points are called **directory authorities**, and 
every hour they publish a document called a **consensus** (aka, network status 
document). The consensus in turn is made up of **router status entries**.
 `Router Status Entry <../api/descriptor/router_status_entry.html>`_
  Relay information provided by the directory authorities including flags, 
heuristics used for relay selection, etc.
-`Hidden Service Descriptor <../api/descriptor/hidden_service.html>`_  
Information pertaining to a `Hidden Service 
`_. These can only be 
`queried through the tor process 
`_.
+`Hidden Service Descriptor <../api/descriptor/hidden_service.html>`_   
  Information pertaining to a `Hidden Service 
`_. These can only be 
`queried through the tor process 
`_.
 

 ===
 
 .. _where-do-descriptors-come-from:
diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 1ab450fd..52e1b0b1 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -2,15 +2,17 @@
 # See LICENSE for licensing information
 
 """
-Parsing for Tor hidden service descriptors as described in Tor's `rend-spec
-`_.
+Parsing for Tor hidden service descriptors as described in Tor's `version 2
+`_ and
+`version 3 `_
+rend-spec.
 
 Unlike other descriptor types these describe a hidden service rather than a
 relay. They're created by the service, and can only be fetched via relays with
 the HSDir flag.
 
 These are only available through the Controller's
-:func:`~stem.control.get_hidden_service_descriptor` method.
+:func:`~stem.control.Controller.get_hidden_service_descriptor` method.
 
 **Module Overview:**
 

[tor-commits] [stem/master] Parse superencrypted field

2019-08-24 Thread atagar
commit 431883878bf26fe31f03ea5d5916038c199d7f3e
Author: Damian Johnson 
Date:   Sat Aug 24 15:54:09 2019 -0700

Parse superencrypted field
---
 stem/descriptor/hidden_service.py | 4 
 test/unit/descriptor/hidden_service_v3.py | 1 +
 2 files changed, 5 insertions(+)

diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 5336b1bd..48cfa807 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -186,6 +186,7 @@ _parse_v3_version_line = _parse_int_line('hs-descriptor', 
'version', allow_negat
 _parse_lifetime_line = _parse_int_line('descriptor-lifetime', 'lifetime', 
allow_negative = False)
 _parse_signing_key_line = _parse_key_block('descriptor-signing-key-cert', 
'signing_cert', 'ED25519 CERT')
 _parse_revision_counter_line = _parse_int_line('revision-counter', 
'revision_counter', allow_negative = False)
+_parse_superencrypted_line = _parse_key_block('superencrypted', 
'superencrypted', 'MESSAGE')
 
 
 class BaseHiddenServiceDescriptor(Descriptor):
@@ -466,6 +467,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
   :var int lifetime: **\\*** minutes after publication this descriptor is valid
   :var str signing_cert: **\\*** cross-certifier for the short-term descriptor 
signing key
   :var int revision_counter: **\\*** descriptor revision number
+  :var str superencrypted: **\\*** encrypted HS-DESC-ENC payload
 
   **\\*** attribute is either required when we're parsed with validation or has
   a default value, others are left as **None** if undefined
@@ -480,6 +482,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 'lifetime': (None, _parse_lifetime_line),
 'signing_cert': (None, _parse_signing_key_line),
 'revision_counter': (None, _parse_revision_counter_line),
+'superencrypted': (None, _parse_superencrypted_line),
   }
 
   PARSER_FOR_LINE = {
@@ -487,6 +490,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 'descriptor-lifetime': _parse_lifetime_line,
 'descriptor-signing-key-cert': _parse_signing_key_line,
 'revision-counter': _parse_revision_counter_line,
+'superencrypted': _parse_superencrypted_line,
   }
 
   @classmethod
diff --git a/test/unit/descriptor/hidden_service_v3.py 
b/test/unit/descriptor/hidden_service_v3.py
index 5a5f53d4..ea7d40c9 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -40,6 +40,7 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
 self.assertEqual(180, desc.lifetime)
 self.assertEqual(EXPECTED_SIGNING_CERT, desc.signing_cert)
 self.assertEqual(15, desc.revision_counter)
+self.assertTrue('k9uKnDpxhkH0h1h' in desc.superencrypted)
 
   def test_invalid_version(self):
 """



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Parse version field

2019-08-24 Thread atagar
commit e47abb9f6ed81f39bcb09cd4e8bfb202488f695f
Author: Damian Johnson 
Date:   Thu Aug 22 16:48:04 2019 -0700

Parse version field

Trivial parsing for the first field. Mostly still just wiring things up.
---
 stem/descriptor/hidden_service.py | 49 ++-
 test/unit/descriptor/hidden_service_v3.py | 34 ++---
 2 files changed, 78 insertions(+), 5 deletions(-)

diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 1ed100ef..4baad548 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -145,7 +145,14 @@ def _parse_file(descriptor_file, desc_type = None, 
validate = False, **kwargs):
 
 
 def _parse_version_line(descriptor, entries):
-  value = _value('version', entries)
+  if isinstance(descriptor, HiddenServiceDescriptorV2):
+keyword = 'version'
+  elif isinstance(descriptor, HiddenServiceDescriptorV3):
+keyword = 'hs-descriptor'
+  else:
+raise ValueError('BUG: unexpected descriptor type (%s)' % 
type(descriptor).__name__)
+
+  value = _value(keyword, entries)
 
   if value.isdigit():
 descriptor.version = int(value)
@@ -463,12 +470,52 @@ class 
HiddenServiceDescriptorV2(BaseHiddenServiceDescriptor):
 class HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
   """
   Version 3 hidden service descriptor.
+
+  :var int version: **\\*** hidden service descriptor version
+
+  **\\*** attribute is either required when we're parsed with validation or has
+  a default value, others are left as **None** if undefined
   """
 
   # TODO: requested this @type on 
https://trac.torproject.org/projects/tor/ticket/31481
 
   TYPE_ANNOTATION_NAME = 'hidden-service-descriptor-3'
 
+  ATTRIBUTES = {
+'version': (None, _parse_version_line),
+  }
+
+  PARSER_FOR_LINE = {
+'hs-descriptor': _parse_version_line,
+  }
+
+  @classmethod
+  def content(cls, attr = None, exclude = (), sign = False):
+if sign:
+  raise NotImplementedError('Signing of %s not implemented' % cls.__name__)
+
+return _descriptor_content(attr, exclude, (
+  ('hs-descriptor', '3'),
+  ('descriptor-lifetime', '180'),
+  ('descriptor-signing-key-cert', _random_crypto_blob('ED25519 CERT')),
+  ('revision-counter', '15'),
+  ('superencrypted', _random_crypto_blob('MESSAGE')),
+  ('signature', 
'wdc7ffr+dPZJ/mIQ1l4WYqNABcmsm6SHW/NL3M3wG7bjjqOJWoPR5TimUXxH52n5Zk0Gc7hl/hz3YYmAx5MvAg'),
+), ())
+
+  @classmethod
+  def create(cls, attr = None, exclude = (), validate = True, sign = False):
+return cls(cls.content(attr, exclude, sign), validate = validate, 
skip_crypto_validation = not sign)
+
+  def __init__(self, raw_contents, validate = False, skip_crypto_validation = 
False):
+super(HiddenServiceDescriptorV3, self).__init__(raw_contents, lazy_load = 
not validate)
+entries = _descriptor_components(raw_contents, validate)
+
+if validate:
+  self._parse(entries, validate)
+else:
+  self._entries = entries
+
 
 # TODO: drop this alias in stem 2.x
 
diff --git a/test/unit/descriptor/hidden_service_v3.py 
b/test/unit/descriptor/hidden_service_v3.py
index 757c1944..04a95a6d 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -2,18 +2,44 @@
 Unit tests for stem.descriptor.hidden_service for version 3.
 """
 
+import functools
 import unittest
 
 import stem.descriptor
 
-from test.unit.descriptor import get_resource
+from stem.descriptor.hidden_service import HiddenServiceDescriptorV3
+
+from test.unit.descriptor import (
+  get_resource,
+  base_expect_invalid_attr,
+)
+
+expect_invalid_attr = functools.partial(base_expect_invalid_attr, 
HiddenServiceDescriptorV3, 'version', 3)
 
 
 class TestHiddenServiceDescriptorV3(unittest.TestCase):
-  def test_stub(self):
-# TODO: replace with actual field assertions as the class gets implemented
+  def test_for_riseup(self):
+"""
+Parse riseup's descriptor...
+
+  vww6ybal4bd7szmgncyruucpgfkqahzddi37ktceo3ah7ngmcopnpyyd.onion
+"""
 
 with open(get_resource('hidden_service_v3'), 'rb') as descriptor_file:
   desc = next(stem.descriptor.parse_file(descriptor_file, 
'hidden-service-descriptor-3 1.0', validate = True))
 
-self.assertTrue('hs-descriptor 3' in str(desc))
+self.assertEqual(3, desc.version)
+
+  def test_invalid_version(self):
+"""
+Checks that our version field expects a numeric value.
+"""
+
+test_values = (
+  '',
+  '-10',
+  'hello',
+)
+
+for test_value in test_values:
+  expect_invalid_attr(self, {'hs-descriptor': test_value}, 'version')



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Stub hidden service descriptor v3

2019-08-24 Thread atagar
commit 26ed95d4b09505fa1320b0e8de0cc271776fe95d
Author: Damian Johnson 
Date:   Thu Aug 22 15:55:46 2019 -0700

Stub hidden service descriptor v3

Doesn't do anything yet - just getting the class and such wired up.
---
 stem/descriptor/__init__.py |  13 +-
 stem/descriptor/hidden_service.py   |  32 +++-
 test/settings.cfg   |   1 +
 test/unit/descriptor/data/hidden_service_v3 | 223 
 test/unit/descriptor/hidden_service_v2.py   |  26 ++--
 test/unit/descriptor/hidden_service_v3.py   |  19 +++
 6 files changed, 288 insertions(+), 26 deletions(-)

diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index 9415454c..1b5e53bc 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -532,18 +532,19 @@ def _parse_metrics_file(descriptor_type, major_version, 
minor_version, descripto
 for desc in stem.descriptor.networkstatus._parse_file(descriptor_file, 
document_type, validate = validate, document_handler = document_handler, 
**kwargs):
   yield desc
   elif descriptor_type == 
stem.descriptor.tordnsel.TorDNSEL.TYPE_ANNOTATION_NAME and major_version == 1:
-document_type = stem.descriptor.tordnsel.TorDNSEL
-
 for desc in stem.descriptor.tordnsel._parse_file(descriptor_file, validate 
= validate, **kwargs):
   yield desc
   elif descriptor_type == 
stem.descriptor.hidden_service.HiddenServiceDescriptorV2.TYPE_ANNOTATION_NAME 
and major_version == 1:
-document_type = stem.descriptor.hidden_service.HiddenServiceDescriptorV2
+desc_type = stem.descriptor.hidden_service.HiddenServiceDescriptorV2
 
-for desc in stem.descriptor.hidden_service._parse_file(descriptor_file, 
validate = validate, **kwargs):
+for desc in stem.descriptor.hidden_service._parse_file(descriptor_file, 
desc_type, validate = validate, **kwargs):
   yield desc
-  elif descriptor_type == 
stem.descriptor.bandwidth_file.BandwidthFile.TYPE_ANNOTATION_NAME and 
major_version == 1:
-document_type = stem.descriptor.bandwidth_file.BandwidthFile
+  elif descriptor_type == 
stem.descriptor.hidden_service.HiddenServiceDescriptorV3.TYPE_ANNOTATION_NAME 
and major_version == 1:
+desc_type = stem.descriptor.hidden_service.HiddenServiceDescriptorV3
 
+for desc in stem.descriptor.hidden_service._parse_file(descriptor_file, 
desc_type, validate = validate, **kwargs):
+  yield desc
+  elif descriptor_type == 
stem.descriptor.bandwidth_file.BandwidthFile.TYPE_ANNOTATION_NAME and 
major_version == 1:
 for desc in stem.descriptor.bandwidth_file._parse_file(descriptor_file, 
validate = validate, **kwargs):
   yield desc
   else:
diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index ab5699f6..1ed100ef 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -17,7 +17,8 @@ These are only available through the Controller's
 ::
 
   BaseHiddenServiceDescriptor - Common parent for hidden service descriptors
-+- HiddenServiceDescriptorV2 - Version 2 hidden service descriptor
+|- HiddenServiceDescriptorV2 - Version 2 hidden service descriptor
++- HiddenServiceDescriptorV3 - Version 3 hidden service descriptor
 
 .. versionadded:: 1.4.0
 """
@@ -103,11 +104,12 @@ class DecryptionFailure(Exception):
   """
 
 
-def _parse_file(descriptor_file, validate = False, **kwargs):
+def _parse_file(descriptor_file, desc_type = None, validate = False, **kwargs):
   """
   Iterates over the hidden service descriptors in a file.
 
   :param file descriptor_file: file with descriptor content
+  :param class desc_type: BaseHiddenServiceDescriptor subclass
   :param bool validate: checks the validity of the descriptor's content if
 **True**, skips these checks otherwise
   :param dict kwargs: additional arguments for the descriptor constructor
@@ -120,18 +122,24 @@ def _parse_file(descriptor_file, validate = False, 
**kwargs):
 * **IOError** if the file can't be read
   """
 
+  if desc_type is None:
+desc_type = HiddenServiceDescriptorV2
+
+  # Hidden service v3 ends with a signature line, whereas v2 has a pgp style
+  # block following it.
+
   while True:
 descriptor_content = _read_until_keywords('signature', descriptor_file)
 
-# we've reached the 'signature', now include the pgp style block
-block_end_prefix = PGP_BLOCK_END.split(' ', 1)[0]
-descriptor_content += _read_until_keywords(block_end_prefix, 
descriptor_file, True)
+if desc_type == HiddenServiceDescriptorV2:
+  block_end_prefix = PGP_BLOCK_END.split(' ', 1)[0]
+  descriptor_content += _read_until_keywords(block_end_prefix, 
descriptor_file, True)
 
 if descriptor_content:
   if descriptor_content[0].startswith(b'@type'):
 descriptor_content = descriptor_content[1:]
 
-  yield HiddenServiceDescriptorV2(bytes.join(b'', descriptor_content), 
validate, **kwargs)
+  yield desc_type(bytes.join(b'', 

[tor-commits] [stem/master] Parse lifetime field

2019-08-24 Thread atagar
commit eb36c093b44950a784e102ef18029aa3915ad9c7
Author: Damian Johnson 
Date:   Thu Aug 22 17:03:19 2019 -0700

Parse lifetime field

Trivial from a parsing perspective but I gotta admit, I'm kinda confused how
this is useful since unlike v2 the descriptor doesn't note its publication
time.
---
 stem/descriptor/hidden_service.py | 14 +-
 test/unit/descriptor/hidden_service_v3.py | 15 +++
 2 files changed, 28 insertions(+), 1 deletion(-)

diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 4baad548..44bf114b 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -157,7 +157,16 @@ def _parse_version_line(descriptor, entries):
   if value.isdigit():
 descriptor.version = int(value)
   else:
-raise ValueError('version line must have a positive integer value: %s' % 
value)
+raise ValueError('%s line must have a positive integer value: %s' % 
(keyword, value))
+
+
+def _parse_lifetime(descriptor, entries):
+  value = _value('descriptor-lifetime', entries)
+
+  if value.isdigit():
+descriptor.lifetime = int(value)
+  else:
+raise ValueError('descriptor-lifetime line must have a positive integer 
value: %s' % value)
 
 
 def _parse_protocol_versions_line(descriptor, entries):
@@ -472,6 +481,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
   Version 3 hidden service descriptor.
 
   :var int version: **\\*** hidden service descriptor version
+  :var int lifetime: **\\*** minutes after publication this descriptor is valid
 
   **\\*** attribute is either required when we're parsed with validation or has
   a default value, others are left as **None** if undefined
@@ -483,10 +493,12 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 
   ATTRIBUTES = {
 'version': (None, _parse_version_line),
+'lifetime': (None, _parse_lifetime),
   }
 
   PARSER_FOR_LINE = {
 'hs-descriptor': _parse_version_line,
+'descriptor-lifetime': _parse_lifetime,
   }
 
   @classmethod
diff --git a/test/unit/descriptor/hidden_service_v3.py 
b/test/unit/descriptor/hidden_service_v3.py
index 04a95a6d..b7a23c86 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -29,6 +29,7 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
   desc = next(stem.descriptor.parse_file(descriptor_file, 
'hidden-service-descriptor-3 1.0', validate = True))
 
 self.assertEqual(3, desc.version)
+self.assertEqual(180, desc.lifetime)
 
   def test_invalid_version(self):
 """
@@ -43,3 +44,17 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
 
 for test_value in test_values:
   expect_invalid_attr(self, {'hs-descriptor': test_value}, 'version')
+
+  def test_invalid_lifetime(self):
+"""
+Checks that our lifetime field expects a numeric value.
+"""
+
+test_values = (
+  '',
+  '-10',
+  'hello',
+)
+
+for test_value in test_values:
+  expect_invalid_attr(self, {'descriptor-lifetime': test_value}, 
'lifetime')



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Parse signing certificate field

2019-08-24 Thread atagar
commit 2a98ba70f1e8a0ba7b3e0b1141ad69cfec98fba5
Author: Damian Johnson 
Date:   Sat Aug 24 15:37:43 2019 -0700

Parse signing certificate field
---
 stem/descriptor/hidden_service.py | 10 +++---
 test/unit/descriptor/hidden_service_v3.py |  9 +
 2 files changed, 16 insertions(+), 3 deletions(-)

diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 4af40d46..84b8d5e7 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -183,7 +183,8 @@ _parse_publication_time_line = 
_parse_timestamp_line('publication-time', 'publis
 _parse_signature_line = _parse_key_block('signature', 'signature', 'SIGNATURE')
 
 _parse_v3_version_line = _parse_int_line('hs-descriptor', 'version', 
allow_negative = False)
-_parse_lifetime = _parse_int_line('descriptor-lifetime', 'lifetime', 
allow_negative = False)
+_parse_lifetime_line = _parse_int_line('descriptor-lifetime', 'lifetime', 
allow_negative = False)
+_parse_signing_key_line = _parse_key_block('descriptor-signing-key-cert', 
'signing_cert', 'ED25519 CERT')
 
 
 class BaseHiddenServiceDescriptor(Descriptor):
@@ -462,6 +463,7 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 
   :var int version: **\\*** hidden service descriptor version
   :var int lifetime: **\\*** minutes after publication this descriptor is valid
+  :var str signing_cert: **\\*** cross-certifier for the short-term descriptor 
signing key
 
   **\\*** attribute is either required when we're parsed with validation or has
   a default value, others are left as **None** if undefined
@@ -473,12 +475,14 @@ class 
HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
 
   ATTRIBUTES = {
 'version': (None, _parse_v3_version_line),
-'lifetime': (None, _parse_lifetime),
+'lifetime': (None, _parse_lifetime_line),
+'signing_cert': (None, _parse_signing_key_line),
   }
 
   PARSER_FOR_LINE = {
 'hs-descriptor': _parse_v3_version_line,
-'descriptor-lifetime': _parse_lifetime,
+'descriptor-lifetime': _parse_lifetime_line,
+'descriptor-signing-key-cert': _parse_signing_key_line,
   }
 
   @classmethod
diff --git a/test/unit/descriptor/hidden_service_v3.py 
b/test/unit/descriptor/hidden_service_v3.py
index b7a23c86..07a8e32c 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -16,6 +16,14 @@ from test.unit.descriptor import (
 
 expect_invalid_attr = functools.partial(base_expect_invalid_attr, 
HiddenServiceDescriptorV3, 'version', 3)
 
+EXPECTED_SIGNING_CERT = """\
+-BEGIN ED25519 CERT-
+AQgABqKwAQVql1QZETyEwJjg+Cv6f2w/cp+c3juj01NPBaJqihboAQAgBACx+FKK
+oDrFE1+ztSxzN8sApKOb5UuDtoe/E03DxZU5+r/K5AV6G0hYn21V7Xbu2pZHvIkT
+2oVY4hypWNJE58eFBRFRzBA0J2h0GyFs1pIuRh5QDJuxB5j92V0aRCNZFgM=
+-END ED25519 CERT-\
+"""
+
 
 class TestHiddenServiceDescriptorV3(unittest.TestCase):
   def test_for_riseup(self):
@@ -30,6 +38,7 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
 
 self.assertEqual(3, desc.version)
 self.assertEqual(180, desc.lifetime)
+self.assertEqual(EXPECTED_SIGNING_CERT, desc.signing_cert)
 
   def test_invalid_version(self):
 """



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [stem/master] Rename stem.descriptor.hidden_service_descriptor module

2019-08-24 Thread atagar
commit f307434824f74550b836927f3c02a4bac53c6c7c
Author: Damian Johnson 
Date:   Tue Aug 20 15:23:58 2019 -0700

Rename stem.descriptor.hidden_service_descriptor module

Dropping the redundant '_descriptor' suffix from this module name. The old 
name
still works as an alias.
---
 docs/api.rst   |   2 +-
 docs/api/descriptor/hidden_service.rst |   5 +
 docs/api/descriptor/hidden_service_descriptor.rst  |   5 -
 docs/change_log.rst|   7 +-
 docs/contents.rst  |   2 +-
 docs/tutorials/mirror_mirror_on_the_wall.rst   |   2 +-
 docs/tutorials/over_the_river.rst  |   2 +-
 stem/control.py|   2 +-
 stem/descriptor/__init__.py|  12 +-
 stem/descriptor/hidden_service.py  | 441 
 stem/descriptor/hidden_service_descriptor.py   | 446 +
 stem/response/events.py|   4 +-
 test/settings.cfg  |  10 +-
 ...den_service_descriptor.py => hidden_service.py} |   4 +-
 14 files changed, 474 insertions(+), 470 deletions(-)

diff --git a/docs/api.rst b/docs/api.rst
index a8ba7e24..cbbf0dd0 100644
--- a/docs/api.rst
+++ b/docs/api.rst
@@ -35,7 +35,7 @@ remotely like Tor does.
  * `stem.descriptor.microdescriptor `_ - 
Minimalistic counterpart for server descriptors.
  * `stem.descriptor.networkstatus `_ - 
Network status documents which make up the Tor consensus.
  * `stem.descriptor.router_status_entry 
`_ - Relay entries within a network 
status document.
- * `stem.descriptor.hidden_service_descriptor 
`_ - Descriptors generated for 
hidden services.
+ * `stem.descriptor.hidden_service `_ - 
Descriptors generated for hidden services.
  * `stem.descriptor.bandwidth_file `_ - 
Bandwidth authority metrics.
  * `stem.descriptor.tordnsel `_ - `TorDNSEL 
`_ exit lists.
  * `stem.descriptor.certificate `_ - `Ed25519 
certificates `_.
diff --git a/docs/api/descriptor/hidden_service.rst 
b/docs/api/descriptor/hidden_service.rst
new file mode 100644
index ..21b9bd7b
--- /dev/null
+++ b/docs/api/descriptor/hidden_service.rst
@@ -0,0 +1,5 @@
+Hidden Service Descriptor
+=
+
+.. automodule:: stem.descriptor.hidden_service
+
diff --git a/docs/api/descriptor/hidden_service_descriptor.rst 
b/docs/api/descriptor/hidden_service_descriptor.rst
deleted file mode 100644
index 145203e6..
--- a/docs/api/descriptor/hidden_service_descriptor.rst
+++ /dev/null
@@ -1,5 +0,0 @@
-Hidden Service Descriptor
-=
-
-.. automodule:: stem.descriptor.hidden_service_descriptor
-
diff --git a/docs/change_log.rst b/docs/change_log.rst
index c244d7d2..d9c6bfa3 100644
--- a/docs/change_log.rst
+++ b/docs/change_log.rst
@@ -52,16 +52,16 @@ The following are only available within Stem's `git 
repository
   * Controller events could fail to be delivered in a timely fashion 
(:trac:`27173`)
   * Adjusted :func:`~stem.control.Controller.get_microdescriptors` fallback to 
also use '.new' cache files (:trac:`28508`)
   * ExitPolicies could raise TypeError when read concurrently (:trac:`29899`)
-  * **STALE_DESC** :data:`~stem.Flag` (:spec:`d14164d8`)
+  * **STALE_DESC** :data:`~stem.Flag` (:spec:`d14164d`)
   * **DORMANT** and **ACTIVE** :data:`~stem.Signal` (:spec:`4421149`)
   * **QUERY_RATE_LIMITED** :data:`~stem.HSDescReason` (:spec:`bd80679`)
-  * **EXTOR** and **HTTPTUNNEL** :data:`~stem.Listener`
+  * **EXTOR** and **HTTPTUNNEL** :data:`~stem.control.Listener`
 
  * **Descriptors**
 
   * Added the `stem.descriptor.collector `_ 
module (:trac:`17979`)
   * `Bandwidth file support `_ 
(:trac:`29056`)
-  * `stem.descriptor.remote `_ now raise 
:class:`stem.DownloadFailed`
+  * `stem.descriptor.remote `_ methods now raise 
:class:`stem.DownloadFailed`
   * Check Ed25519 validity though the cryptography module rather than PyNaCl 
(:trac:`22022`)
   * Download compressed descriptors by default (:trac:`29186`)
   * Added :class:`~stem.descriptor.Compression` class
@@ -78,6 +78,7 @@ The following are only available within Stem's `git repository
   * Replaced the **digest** attribute of 
:class:`~stem.descriptor.microdescriptor.Microdescriptor` with a method by the 
same name (:trac:`28398`)
   * Default the **version_flavor** attribute of 
:class:`~stem.descriptor.networkstatus.NetworkStatusDocumentV3` to 'ns' 
(:spec:`d97f8d9`)
   * DescriptorDownloader crashed if **use_mirrors** is set (:trac:`28393`)
+  * Renamed stem.descriptor.hidden_service_descriptor to 
stem.descriptor.hidden_service
   * Don't download from Serge, a bridge authority that frequently timeout
   * Updated dizum authority's address (:trac:`31406`)
 
diff --git a/docs/contents.rst b/docs/contents.rst
index 

[tor-commits] [stem/master] Base hidden service descriptor class

2019-08-24 Thread atagar
commit 6176a1759fadd4625ff8e1c9155053916202c1ee
Author: Damian Johnson 
Date:   Wed Aug 21 15:01:20 2019 -0700

Base hidden service descriptor class

Common parent for v2 and v3 hidden service descriptors. I'm not yet sure 
what
(if anything) they'll share, but this class is proper regardless for object
orientation (see router status entries for what this will exemplify).

Existing usage of the HiddenServiceDescriptor class name is unfortunate 
since
that is what our common base class should be called. Oh well - yet another
thing to correct when we break backward compatibility in Stem 2.x.
---
 stem/control.py|  2 +-
 stem/descriptor/__init__.py|  6 ++--
 stem/descriptor/hidden_service.py  | 32 --
 stem/response/events.py|  2 +-
 test/settings.cfg  |  2 +-
 .../{hidden_service.py => hidden_service_v2.py}| 28 +--
 6 files changed, 44 insertions(+), 28 deletions(-)

diff --git a/stem/control.py b/stem/control.py
index 81cb1682..86f4e787 100644
--- a/stem/control.py
+++ b/stem/control.py
@@ -2136,7 +2136,7 @@ class Controller(BaseController):
 :param list servers: requrest the descriptor from these specific servers
 :param float timeout: seconds to wait when **await_result** is **True**
 
-:returns: :class:`~stem.descriptor.hidden_service.HiddenServiceDescriptor`
+:returns: 
:class:`~stem.descriptor.hidden_service.HiddenServiceDescriptorV2`
   for the given service if **await_result** is **True**, or **None** 
otherwise
 
 :raises:
diff --git a/stem/descriptor/__init__.py b/stem/descriptor/__init__.py
index fd96c042..9415454c 100644
--- a/stem/descriptor/__init__.py
+++ b/stem/descriptor/__init__.py
@@ -329,7 +329,7 @@ def parse_file(descriptor_file, descriptor_type = None, 
validate = False, docume
   torperf 1.0   **unsupported**
   bridge-pool-assignment 1.0**unsupported**
   tordnsel 1.0  
:class:`~stem.descriptor.tordnsel.TorDNSEL`
-  hidden-service-descriptor 1.0 
:class:`~stem.descriptor.hidden_service.HiddenServiceDescriptor`
+  hidden-service-descriptor 1.0 
:class:`~stem.descriptor.hidden_service.HiddenServiceDescriptorV2`
   = =
 
   If you're using **python 3** then beware that the open() function defaults to
@@ -536,8 +536,8 @@ def _parse_metrics_file(descriptor_type, major_version, 
minor_version, descripto
 
 for desc in stem.descriptor.tordnsel._parse_file(descriptor_file, validate 
= validate, **kwargs):
   yield desc
-  elif descriptor_type == 
stem.descriptor.hidden_service.HiddenServiceDescriptor.TYPE_ANNOTATION_NAME and 
major_version == 1:
-document_type = stem.descriptor.hidden_service.HiddenServiceDescriptor
+  elif descriptor_type == 
stem.descriptor.hidden_service.HiddenServiceDescriptorV2.TYPE_ANNOTATION_NAME 
and major_version == 1:
+document_type = stem.descriptor.hidden_service.HiddenServiceDescriptorV2
 
 for desc in stem.descriptor.hidden_service._parse_file(descriptor_file, 
validate = validate, **kwargs):
   yield desc
diff --git a/stem/descriptor/hidden_service.py 
b/stem/descriptor/hidden_service.py
index 665d8664..ab5699f6 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -16,7 +16,8 @@ These are only available through the Controller's
 
 ::
 
-  HiddenServiceDescriptor - Tor hidden service descriptor.
+  BaseHiddenServiceDescriptor - Common parent for hidden service descriptors
++- HiddenServiceDescriptorV2 - Version 2 hidden service descriptor
 
 .. versionadded:: 1.4.0
 """
@@ -111,7 +112,7 @@ def _parse_file(descriptor_file, validate = False, 
**kwargs):
 **True**, skips these checks otherwise
   :param dict kwargs: additional arguments for the descriptor constructor
 
-  :returns: iterator for 
:class:`~stem.descriptor.hidden_service.HiddenServiceDescriptor`
+  :returns: iterator for 
:class:`~stem.descriptor.hidden_service.HiddenServiceDescriptorV2`
 instances in the file
 
   :raises:
@@ -130,7 +131,7 @@ def _parse_file(descriptor_file, validate = False, 
**kwargs):
   if descriptor_content[0].startswith(b'@type'):
 descriptor_content = descriptor_content[1:]
 
-  yield HiddenServiceDescriptor(bytes.join(b'', descriptor_content), 
validate, **kwargs)
+  yield HiddenServiceDescriptorV2(bytes.join(b'', descriptor_content), 
validate, **kwargs)
 else:
   break  # done parsing file
 
@@ -181,7 +182,17 @@ _parse_publication_time_line = 
_parse_timestamp_line('publication-time', 'publis
 _parse_signature_line = _parse_key_block('signature', 'signature', 'SIGNATURE')
 
 
-class HiddenServiceDescriptor(Descriptor):
+class BaseHiddenServiceDescriptor(Descriptor):
+  """
+  Hidden service descriptor.
+
+ 

[tor-commits] [tor/master] doc(hacking): update = to # on sections

2019-08-24 Thread nickm
commit 3bf90e704ca14fd0b50f46ff150205b3fbb97a82
Author: Antoine Veuiller 
Date:   Wed Aug 21 16:22:37 2019 +0200

doc(hacking): update = to # on sections
---
 doc/HACKING/EndOfLifeTor.md |  4 ++--
 doc/HACKING/Fuzzing.md  | 14 +++---
 doc/HACKING/ReleasingTor.md | 12 ++--
 3 files changed, 15 insertions(+), 15 deletions(-)

diff --git a/doc/HACKING/EndOfLifeTor.md b/doc/HACKING/EndOfLifeTor.md
index c7492f0ca..2fece2ca9 100644
--- a/doc/HACKING/EndOfLifeTor.md
+++ b/doc/HACKING/EndOfLifeTor.md
@@ -7,7 +7,7 @@ series reaches End of Life.  Note that they are _only_ for 
entire series that
 have reached their planned EOL: they do not apply to security-related
 deprecations of individual versions.
 
-=== 0. Preliminaries
+### 0. Preliminaries
 
 0. A few months before End of Life:
Write a deprecation announcement.
@@ -17,7 +17,7 @@ deprecations of individual versions.
Send the announcement to tor-announce, tor-talk, tor-relays, and the
packagers.
 
-=== 1. On the day
+### 1. On the day
 
 1. Open tickets to remove the release from:
- the jenkins builds
diff --git a/doc/HACKING/Fuzzing.md b/doc/HACKING/Fuzzing.md
index 2039d6a4c..c2db7e985 100644
--- a/doc/HACKING/Fuzzing.md
+++ b/doc/HACKING/Fuzzing.md
@@ -1,6 +1,6 @@
-= Fuzzing Tor
+# Fuzzing Tor
 
-== The simple version (no fuzzing, only tests)
+## The simple version (no fuzzing, only tests)
 
 Check out fuzzing-corpora, and set TOR_FUZZ_CORPORA to point to the place
 where you checked it out.
@@ -12,7 +12,7 @@ This won't actually fuzz Tor!  It will just run all the fuzz 
binaries
 on our existing set of testcases for the fuzzer.
 
 
-== Different kinds of fuzzing
+## Different kinds of fuzzing
 
 Right now we support three different kinds of fuzzer.
 
@@ -37,7 +37,7 @@ In all cases, you'll need some starting examples to give the 
fuzzer when it
 starts out.  There's a set in the "fuzzing-corpora" git repository.  Try
 setting TOR_FUZZ_CORPORA to point to a checkout of that repository
 
-== Writing Tor fuzzers
+## Writing Tor fuzzers
 
 A tor fuzzing harness should have:
 * a fuzz_init() function to set up any necessary global state.
@@ -52,7 +52,7 @@ bug, or accesses memory it shouldn't. This helps fuzzing 
frameworks detect
 "interesting" cases.
 
 
-== Guided Fuzzing with AFL
+## Guided Fuzzing with AFL
 
 There is no HTTPS, hash, or signature for American Fuzzy Lop's source code, so
 its integrity can't be verified. That said, you really shouldn't fuzz on a
@@ -101,7 +101,7 @@ macOS (OS X) requires slightly more preparation, including:
 * using afl-clang (or afl-clang-fast from the llvm directory)
 * disabling external crash reporting (AFL will guide you through this step)
 
-== Triaging Issues
+## Triaging Issues
 
 Crashes are usually interesting, particularly if using AFL_HARDEN=1 and 
--enable-expensive-hardening. Sometimes crashes are due to bugs in the harness 
code.
 
@@ -115,7 +115,7 @@ To see what fuzz-http is doing with a test case, call it 
like this:
 
 (Logging is disabled while fuzzing to increase fuzzing speed.)
 
-== Reporting Issues
+## Reporting Issues
 
 Please report any issues discovered using the process in Tor's security issue
 policy:
diff --git a/doc/HACKING/ReleasingTor.md b/doc/HACKING/ReleasingTor.md
index 15c8ac55d..f40e2af57 100644
--- a/doc/HACKING/ReleasingTor.md
+++ b/doc/HACKING/ReleasingTor.md
@@ -5,7 +5,7 @@ Putting out a new release
 Here are the steps that the maintainer should take when putting out a
 new Tor release:
 
-=== 0. Preliminaries
+### 0. Preliminaries
 
 1. Get at least two of weasel/arma/Sebastian to put the new
version number in their approved versions list.  Give them a few
@@ -18,7 +18,7 @@ new Tor release:
date of a TB that contains it.  See note below in "commit, upload,
announce".
 
-=== I. Make sure it works
+### I. Make sure it works
 
 1. Make sure that CI passes: have a look at Travis
(https://travis-ci.org/torproject/tor/branches), Appveyor
@@ -52,7 +52,7 @@ new Tor release:
   memory leaks.)
 
 
-=== II. Write a changelog
+### II. Write a changelog
 
 
 1a. (Alpha release variant)
@@ -139,7 +139,7 @@ new Tor release:
text of existing entries, though.)
 
 
-=== III. Making the source release.
+### III. Making the source release.
 
 1. In `maint-0.?.x`, bump the version number in `configure.ac` and run
`make update-versions` to update version numbers in other
@@ -165,7 +165,7 @@ new Tor release:
If it is not, you'll need to poke Roger, Weasel, and Sebastian again: see
item 0.1 at the start of this document.
 
-=== IV. Commit, upload, announce
+### IV. Commit, upload, announce
 
 1. Sign the tarball, then sign and push the git tag:
 
@@ -241,7 +241,7 @@ new Tor release:
For templates to use when announcing, see:

https://trac.torproject.org/projects/tor/wiki/org/teams/NetworkTeam/AnnouncementTemplates
 
-=== V. Aftermath and cleanup
+### V. Aftermath and cleanup
 
 1. If it's a stable release, bump the 

[tor-commits] [tor/master] doc(hacking): enhance markdown style

2019-08-24 Thread nickm
commit 0d6c8eed49a9104597a907664675cd4095fb852f
Author: Antoine Veuiller 
Date:   Wed Aug 21 16:22:08 2019 +0200

doc(hacking): enhance markdown style
---
 doc/HACKING/CodeStructure.md | 151 +--
 1 file changed, 72 insertions(+), 79 deletions(-)

diff --git a/doc/HACKING/CodeStructure.md b/doc/HACKING/CodeStructure.md
index 736d6cd48..fffafcaed 100644
--- a/doc/HACKING/CodeStructure.md
+++ b/doc/HACKING/CodeStructure.md
@@ -2,128 +2,121 @@
 TODO: revise this to talk about how things are, rather than how things
 have changed.
 
-TODO: Make this into good markdown.
-
-
-
-For quite a while now, the program "tor" has been built from source
-code in just two directories: src/common and src/or.
+For quite a while now, the program *tor* has been built from source
+code in just two directories: **src/common** and **src/or**.
 
 This has become more-or-less untenable, for a few reasons -- most
 notably of which is that it has led our code to become more
 spaghetti-ish than I can endorse with a clean conscience.
 
 So to fix that, we've gone and done a huge code movement in our git
-master branch, which will land in a release once Tor 0.3.5.1-alpha is
+master branch, which will land in a release once Tor `0.3.5.1-alpha` is
 out.
 
 Here's what we did:
 
-  * src/common has been turned into a set of static libraries.  These
-all live in the "src/lib/*" directories.  The dependencies between
+  * **src/common** has been turned into a set of static libraries.  These
+all live in the **src/lib/*** directories.  The dependencies between
 these libraries should have no cycles.  The libraries are:
 
-arch -- Headers to handle architectural differences
-cc -- headers to handle differences among compilers
-compress -- wraps zlib, zstd, lzma
-container -- high-level container types
-crypt_ops -- Cryptographic operations. Planning to split this into
+- **arch** -- Headers to handle architectural differences
+- **cc** -- headers to handle differences among compilers
+- **compress** -- wraps zlib, zstd, lzma
+- **container** -- high-level container types
+- **crypt_ops** -- Cryptographic operations. Planning to split this into
 a higher and lower level library
-ctime -- Operations that need to run in constant-time. (Properly,
+- **ctime** -- Operations that need to run in constant-time. (Properly,
 data-invariant time)
-defs -- miscelaneous definitions needed throughout Tor.
-encoding -- transforming one data type into another, and various
+- **defs** -- miscelaneous definitions needed throughout Tor.
+- **encoding** -- transforming one data type into another, and various
 data types into strings.
-err -- lowest-level error handling, in cases where we can't use
+- **err** -- lowest-level error handling, in cases where we can't use
 the logs because something that the logging system needs has broken.
-evloop -- Generic event-loop handling logic
-fdio -- Low-level IO wrapper functions for file descriptors.
-fs -- Operations on the filesystem
-intmath -- low-level integer math and misc bit-twiddling hacks
-lock -- low-level locking code
-log -- Tor's logging module.  This library sits roughly halfway up
+- **evloop** -- Generic event-loop handling logic
+- **fdio** -- Low-level IO wrapper functions for file descriptors.
+- **fs** -- Operations on the filesystem
+- **intmath** -- low-level integer math and misc bit-twiddling hacks
+- **lock** -- low-level locking code
+- **log** -- Tor's logging module.  This library sits roughly halfway up
 the library dependency diagram, since everything it depends on has to
 be carefully crafted to *not* log.
-malloc -- Low-level wrappers for the platform memory allocation functions.
-math -- Higher-level mathematical functions, and floating-point math
-memarea -- An arena allocator
-meminfo -- Functions for querying the current process's memory
+- **malloc** -- Low-level wrappers for the platform memory allocation 
functions.
+- **math** -- Higher-level mathematical functions, and floating-point math
+- **memarea** -- An arena allocator
+- **meminfo** -- Functions for querying the current process's memory
 status and resources
-net -- Networking compatibility and convenience code
-osinfo -- Querying information about the operating system
-process -- Launching and querying the status of other processes
-sandbox -- Backend for the linux seccomp2 sandbox
-smartlist_core -- The lowest-level of the smartlist_t data type.
+- **net** -- Networking compatibility and convenience code
+- **osinfo** -- Querying information about the operating system
+- **process** -- Launching and querying the status of other processes
+- **sandbox** -- Backend for the linux seccomp2 sandbox
+- **smartlist_core** -- The lowest-level of the smartlist_t data type.
 Separated from the rest of 

[tor-commits] [tor/master] Merge remote-tracking branch 'tor-github/pr/1247'

2019-08-24 Thread nickm
commit 6ba05eea8efcfc1f9b4a382ee1849e49ea242891
Merge: 7a45c9c1d 3bf90e704
Author: Nick Mathewson 
Date:   Sat Aug 24 16:32:50 2019 -0400

Merge remote-tracking branch 'tor-github/pr/1247'

 doc/HACKING/CodeStructure.md | 151 +--
 doc/HACKING/EndOfLifeTor.md  |   4 +-
 doc/HACKING/Fuzzing.md   |  14 ++--
 doc/HACKING/ReleasingTor.md  |  12 ++--
 4 files changed, 87 insertions(+), 94 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge remote-tracking branch 'tor-github/pr/1215'

2019-08-24 Thread nickm
commit 7a45c9c1d2a9632c6f029460d9a9cc514ea8b9ed
Merge: f1707f7db d6202d312
Author: Nick Mathewson 
Date:   Sat Aug 24 16:30:55 2019 -0400

Merge remote-tracking branch 'tor-github/pr/1215'

 changes/ticket29879 |  7 +++
 scripts/git/git-push-all.sh | 51 +
 2 files changed, 49 insertions(+), 9 deletions(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] scripts/git: add TOR_PUSH_DELAY to git-push-all.sh

2019-08-24 Thread nickm
commit d6202d3128db259c1051eeef3e304459bcee8b53
Author: teor 
Date:   Thu Aug 8 12:33:42 2019 +1000

scripts/git: add TOR_PUSH_DELAY to git-push-all.sh

Add a TOR_PUSH_DELAY variable to git-push-all.sh, which makes the script
push master and maint branches with a delay between each branch. These
delays trigger the CI jobs in a set order, which should show the most
likely failures first.

Also:
* make pushes atomic by default, and
* make the script pass any command-line arguments to git push.

Closes ticket 29879.
---
 changes/ticket29879 |  7 +++
 scripts/git/git-push-all.sh | 51 +
 2 files changed, 49 insertions(+), 9 deletions(-)

diff --git a/changes/ticket29879 b/changes/ticket29879
new file mode 100644
index 0..c37bdd3f6
--- /dev/null
+++ b/changes/ticket29879
@@ -0,0 +1,7 @@
+  o Minor features (git scripts):
+- Add a TOR_PUSH_DELAY variable to git-push-all.sh, which makes the script
+  push master and maint branches with a delay between each branch. These
+  delays trigger the CI jobs in a set order, which should show the most
+  likely failures first. Also make pushes atomic by default, and make
+  the script pass any command-line arguments to git push.
+  Closes ticket 29879.
diff --git a/scripts/git/git-push-all.sh b/scripts/git/git-push-all.sh
index 2030a600f..1ae310eca 100755
--- a/scripts/git/git-push-all.sh
+++ b/scripts/git/git-push-all.sh
@@ -1,11 +1,44 @@
 #!/usr/bin/env bash
 
-# The remote upstream branch on which git.torproject.org/tor.git points to.
-UPSTREAM_BRANCH=${TOR_UPSTREAM_REMOTE_NAME:-"upstream"}
-
-git push "$UPSTREAM_BRANCH" \
-   master \
-   {release,maint}-0.4.1 \
-   {release,maint}-0.4.0 \
-   {release,maint}-0.3.5 \
-   {release,maint}-0.2.9
+# Usage: git-push-all.sh
+#env vars: TOR_UPSTREAM_REMOTE_NAME=upstream TOR_PUSH_DELAY=0
+#options: --no-atomic --dry-run (any other git push option)
+#
+# TOR_PUSH_DELAY pushes the master and maint branches separately, so that CI
+# runs in a sensible order.
+# push --atomic is the default when TOR_PUSH_DELAY=0, and for release branches.
+
+set -e
+
+# The upstream remote which git.torproject.org/tor.git points to.
+UPSTREAM_REMOTE=${TOR_UPSTREAM_REMOTE_NAME:-"upstream"}
+# Add a delay between pushes, so CI runs on the most important branches first
+PUSH_DELAY=${TOR_PUSH_DELAY:-0}
+
+PUSH_BRANCHES=`echo \
+  master \
+  {release,maint}-0.4.1 \
+  {release,maint}-0.4.0 \
+  {release,maint}-0.3.5 \
+  {release,maint}-0.2.9 \
+  `
+
+if [ "$PUSH_DELAY" -le 0 ]; then
+  echo "Pushing $PUSH_BRANCHES"
+  git push --atomic "$@" "$UPSTREAM_REMOTE" $PUSH_BRANCHES
+else
+  PUSH_BRANCHES=`echo "$PUSH_BRANCHES" | tr " " "\n" | sort -V`
+  MASTER_BRANCH=`echo "$PUSH_BRANCHES" | tr " " "\n" | grep master`
+  MAINT_BRANCHES=`echo "$PUSH_BRANCHES" | tr " " "\n" | grep maint`
+  RELEASE_BRANCHES=`echo "$PUSH_BRANCHES" | tr " " "\n" | grep release | \
+tr "\n" " "`
+  printf "Pushing with %ss delays, so CI runs in this order:\n%s\n%s\n%s\n" \
+"$PUSH_DELAY" "$MASTER_BRANCH" "$MAINT_BRANCHES" "$RELEASE_BRANCHES"
+  git push "$@" "$UPSTREAM_REMOTE" $MASTER_BRANCH
+  sleep "$PUSH_DELAY"
+  for b in $MAINT_BRANCHES; do
+git push "$@" "$UPSTREAM_REMOTE" $b
+sleep "$PUSH_DELAY"
+  done
+  git push --atomic "$@" "$UPSTREAM_REMOTE" $RELEASE_BRANCHES
+fi



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.4.1] Merge branch 'bug31463_040' into bug31463_041

2019-08-24 Thread nickm
commit 7c92f4faa21be4deb03a7ef2e07fb0a15853fed8
Merge: 3b2a73207 8b32d22a0
Author: teor 
Date:   Thu Aug 22 22:10:06 2019 +1000

Merge branch 'bug31463_040' into bug31463_041

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Fix gcc build exclude on travis

2019-08-24 Thread nickm
commit 190386f1c44462fbef568ca9e3c1c997dbebcf12
Author: Sebastian Hahn 
Date:   Tue Aug 20 05:03:58 2019 +0200

Fix gcc build exclude on travis

The main build doesn't use HARDENING_OPTIONS, so the exclude shouldn't,
either. Reduces the number of builders by one.
---
 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 428c6a000..ef2e41998 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -91,7 +91,7 @@ matrix:
 - compiler: gcc
   os: linux
   ## TOR_RUST_DEPENDENCIES is spelt RUST_DEPENDENCIES in 0.3.2
-  env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true 
HARDENING_OPTIONS=""
+  env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
 
 ## (Linux only) Use the latest Linux image (Ubuntu Trusty)
 dist: trusty
diff --git a/changes/bug31463 b/changes/bug31463
new file mode 100644
index 0..d85c0887c
--- /dev/null
+++ b/changes/bug31463
@@ -0,0 +1,3 @@
+  o Minor bugfixes (rust):
+- Correctly exclude a redundant rust build job in Travis. Fixes bug 31463;
+  bugfix on 0.3.5.4-alpha.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'maint-0.4.1'

2019-08-24 Thread nickm
commit f1707f7db3296e5ddae2f09ff269afdebf651ec4
Merge: d475d7c2f 7c92f4faa
Author: Nick Mathewson 
Date:   Sat Aug 24 16:29:23 2019 -0400

Merge branch 'maint-0.4.1'

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.1] Merge branch 'maint-0.4.1' into release-0.4.1

2019-08-24 Thread nickm
commit ef2ba568db1a404bbbd0ea35b5b61888b785120e
Merge: 0e8c16e22 7c92f4faa
Author: Nick Mathewson 
Date:   Sat Aug 24 16:29:23 2019 -0400

Merge branch 'maint-0.4.1' into release-0.4.1

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.1] Merge branch 'bug31463_035' into bug31463_040

2019-08-24 Thread nickm
commit 8b32d22a072a334917fba8569042ff61d7026d27
Merge: 90f4ed233 190386f1c
Author: teor 
Date:   Thu Aug 22 22:10:00 2019 +1000

Merge branch 'bug31463_035' into bug31463_040

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'bug31463_035' into bug31463_040

2019-08-24 Thread nickm
commit 8b32d22a072a334917fba8569042ff61d7026d27
Merge: 90f4ed233 190386f1c
Author: teor 
Date:   Thu Aug 22 22:10:00 2019 +1000

Merge branch 'bug31463_035' into bug31463_040

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.1] Merge branch 'bug31463_040' into bug31463_041

2019-08-24 Thread nickm
commit 7c92f4faa21be4deb03a7ef2e07fb0a15853fed8
Merge: 3b2a73207 8b32d22a0
Author: teor 
Date:   Thu Aug 22 22:10:06 2019 +1000

Merge branch 'bug31463_040' into bug31463_041

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/release-0.4.1] Fix gcc build exclude on travis

2019-08-24 Thread nickm
commit 190386f1c44462fbef568ca9e3c1c997dbebcf12
Author: Sebastian Hahn 
Date:   Tue Aug 20 05:03:58 2019 +0200

Fix gcc build exclude on travis

The main build doesn't use HARDENING_OPTIONS, so the exclude shouldn't,
either. Reduces the number of builders by one.
---
 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 428c6a000..ef2e41998 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -91,7 +91,7 @@ matrix:
 - compiler: gcc
   os: linux
   ## TOR_RUST_DEPENDENCIES is spelt RUST_DEPENDENCIES in 0.3.2
-  env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true 
HARDENING_OPTIONS=""
+  env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
 
 ## (Linux only) Use the latest Linux image (Ubuntu Trusty)
 dist: trusty
diff --git a/changes/bug31463 b/changes/bug31463
new file mode 100644
index 0..d85c0887c
--- /dev/null
+++ b/changes/bug31463
@@ -0,0 +1,3 @@
+  o Minor bugfixes (rust):
+- Correctly exclude a redundant rust build job in Travis. Fixes bug 31463;
+  bugfix on 0.3.5.4-alpha.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.4.1] Merge branch 'bug31463_035' into bug31463_040

2019-08-24 Thread nickm
commit 8b32d22a072a334917fba8569042ff61d7026d27
Merge: 90f4ed233 190386f1c
Author: teor 
Date:   Thu Aug 22 22:10:00 2019 +1000

Merge branch 'bug31463_035' into bug31463_040

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/maint-0.4.1] Fix gcc build exclude on travis

2019-08-24 Thread nickm
commit 190386f1c44462fbef568ca9e3c1c997dbebcf12
Author: Sebastian Hahn 
Date:   Tue Aug 20 05:03:58 2019 +0200

Fix gcc build exclude on travis

The main build doesn't use HARDENING_OPTIONS, so the exclude shouldn't,
either. Reduces the number of builders by one.
---
 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)

diff --git a/.travis.yml b/.travis.yml
index 428c6a000..ef2e41998 100644
--- a/.travis.yml
+++ b/.travis.yml
@@ -91,7 +91,7 @@ matrix:
 - compiler: gcc
   os: linux
   ## TOR_RUST_DEPENDENCIES is spelt RUST_DEPENDENCIES in 0.3.2
-  env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true 
HARDENING_OPTIONS=""
+  env: RUST_OPTIONS="--enable-rust" TOR_RUST_DEPENDENCIES=true
 
 ## (Linux only) Use the latest Linux image (Ubuntu Trusty)
 dist: trusty
diff --git a/changes/bug31463 b/changes/bug31463
new file mode 100644
index 0..d85c0887c
--- /dev/null
+++ b/changes/bug31463
@@ -0,0 +1,3 @@
+  o Minor bugfixes (rust):
+- Correctly exclude a redundant rust build job in Travis. Fixes bug 31463;
+  bugfix on 0.3.5.4-alpha.



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor/master] Merge branch 'bug31463_040' into bug31463_041

2019-08-24 Thread nickm
commit 7c92f4faa21be4deb03a7ef2e07fb0a15853fed8
Merge: 3b2a73207 8b32d22a0
Author: teor 
Date:   Thu Aug 22 22:10:06 2019 +1000

Merge branch 'bug31463_040' into bug31463_041

 .travis.yml  | 2 +-
 changes/bug31463 | 3 +++
 2 files changed, 4 insertions(+), 1 deletion(-)




___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tpo-web] Update translations for tpo-web

2019-08-24 Thread translation
commit 336e756b3046dce897cab84d3a1b2a1b9a7e2fd7
Author: Translation commit bot 
Date:   Sat Aug 24 18:58:14 2019 +

Update translations for tpo-web
---
 contents+ca.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/contents+ca.po b/contents+ca.po
index cdeb92bbb..c5cfcd1a0 100644
--- a/contents+ca.po
+++ b/contents+ca.po
@@ -716,7 +716,7 @@ msgstr "Mireu o uniu-vos a les nostres reunions públiques."
 
 #: templates/contact.html:13
 msgid "Discuss running a Tor relay."
-msgstr ""
+msgstr "Discutiu sobre mantenir un node Tor."
 
 #: templates/contact.html:14
 msgid "Talk with Tor's global south community."

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tpo-web] Update translations for tpo-web

2019-08-24 Thread translation
commit 2db9c7b82055a876da8c84af5c1272b4baae6a1c
Author: Translation commit bot 
Date:   Sat Aug 24 17:28:19 2019 +

Update translations for tpo-web
---
 contents+ca.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/contents+ca.po b/contents+ca.po
index b6a2aa071..cdeb92bbb 100644
--- a/contents+ca.po
+++ b/contents+ca.po
@@ -170,8 +170,8 @@ msgid ""
 "We need your help to keep Tor secure and safe for millions across the globe."
 " [Donate Now](https://donate.torproject.org/)"
 msgstr ""
-"Us necessitem per a mantenir el Tor segur i fora de perill, per a milions de"
-" persones d'arreu del món. [Feu una 
donació](https://donate.torproject.org/)"
+"Us necessitem per a mantenir el Tor segur per a milions de persones d'arreu "
+"del món. [Feu una donació](https://donate.torproject.org/)"
 
 #: https//www.torproject.org/about/ (content/about/contents+en.lrpage.title)
 #: https//www.torproject.org/about/history/

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal] Update translations for support-portal

2019-08-24 Thread translation
commit b6ecd1d5662efe10e5dac3fae4d60a4235e831e6
Author: Translation commit bot 
Date:   Sat Aug 24 16:59:05 2019 +

Update translations for support-portal
---
 contents+ca.po | 5 -
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/contents+ca.po b/contents+ca.po
index b4cc14c9b..1472eb82d 100644
--- a/contents+ca.po
+++ b/contents+ca.po
@@ -4,6 +4,7 @@
 # erinm, 2019
 # Aleix Vidal i Gaya , 2019
 # Emma Peel, 2019
+# Ecron , 2019
 # 
 msgid ""
 msgstr ""
@@ -11,7 +12,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-21 12:22+CET\n"
 "PO-Revision-Date: 2018-10-02 22:41+\n"
-"Last-Translator: Emma Peel, 2019\n"
+"Last-Translator: Ecron , 2019\n"
 "Language-Team: Catalan (https://www.transifex.com/otf/teams/1519/ca/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -5829,6 +5830,8 @@ msgid ""
 "Download Tor Browser to experience real private browsing without tracking, "
 "surveillance, or censorship."
 msgstr ""
+"Baixeu el Navegador Tor i proveu com és navegar amb privadesa real, sense "
+"seguiments, vigilància ni censura."
 
 #: lego/templates/footer.html:27 templates/footer.html:27
 msgid "Our mission:"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tpo-web] Update translations for tpo-web

2019-08-24 Thread translation
commit e3999a51f04a38488a8b5179d3f00ed5d7fcb607
Author: Translation commit bot 
Date:   Sat Aug 24 16:57:52 2019 +

Update translations for tpo-web
---
 contents+ca.po | 11 +--
 1 file changed, 9 insertions(+), 2 deletions(-)

diff --git a/contents+ca.po b/contents+ca.po
index 8a81634ad..b6a2aa071 100644
--- a/contents+ca.po
+++ b/contents+ca.po
@@ -38,7 +38,7 @@ msgstr "Creiem que tothom hauria de poder explorar la 
Internet amb privadesa."
 
 #: https//www.torproject.org/ (content/contents+en.lrpage.body)
 msgid "We are the Tor Project, a 501(c)3 US nonprofit."
-msgstr "Som el Tor Project, una organització sense ànim de lucre 501(c)3 US"
+msgstr "Som el Tor Project, una organització sense ànim de lucre 501(c)3 US."
 
 #: https//www.torproject.org/ (content/contents+en.lrpage.body)
 msgid ""
@@ -612,7 +612,7 @@ msgstr ""
 #: https//www.torproject.org/press/-new-release-tor-browser/
 #: (content/press/new-release-tor-browser/contents+en.lrpost.title)
 msgid "New Release: Tor Browser 8.5a10"
-msgstr ""
+msgstr "Versió nova: Navegador Tor 8.5a10"
 
 #: https//www.torproject.org/press/-new-release-tor-browser/
 #: (content/press/new-release-tor-browser/contents+en.lrpost.summary)
@@ -623,6 +623,11 @@ msgid ""
 "href=\"https://www.torproject.org/dist/torbrowser/8.5a10/\;>distribution "
 "directory."
 msgstr ""
+"Ja podeu baixar el Navegador Tor 8.5a10 des de la https://www.torproject.org/projects/torbrowser.html.en#downloads-;
+"alpha\">pàgina del projecte del navegador Tor, i també des del nostre 
https://www.torproject.org/dist/torbrowser/8.5a10/\;>directori de "
+"distribució. "
 
 #: lego/templates/footer.html:9 lego/templates/footer.html:18
 #: lego/templates/navbar.html:66 templates/footer.html:9
@@ -636,6 +641,8 @@ msgid ""
 "Download Tor Browser to experience real private browsing without tracking, "
 "surveillance, or censorship."
 msgstr ""
+"Baixeu el Navegador Tor i proveu com és navegar amb privadesa real, sense "
+"seguiments, vigilància ni censura."
 
 #: lego/templates/footer.html:27 templates/footer.html:27
 msgid "Our mission:"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tpo-web] Update translations for tpo-web

2019-08-24 Thread translation
commit 277d1989fe5325319ee6c561f9bafd74a7f0edc9
Author: Translation commit bot 
Date:   Sat Aug 24 16:28:26 2019 +

Update translations for tpo-web
---
 contents+ca.po | 20 +---
 1 file changed, 17 insertions(+), 3 deletions(-)

diff --git a/contents+ca.po b/contents+ca.po
index afdc24236..8a81634ad 100644
--- a/contents+ca.po
+++ b/contents+ca.po
@@ -539,7 +539,7 @@ msgstr ""
 #: https//www.torproject.org/about/people/
 #: (content/about/people/contents+en.lrpeople.title)
 msgid "People"
-msgstr ""
+msgstr "Gent"
 
 #: https//www.torproject.org/about/people/
 #: (content/about/people/contents+en.lrpeople.body)
@@ -547,6 +547,8 @@ msgid ""
 "We are an international team who believes everyone should have private "
 "access to the uncensored web."
 msgstr ""
+"Som un equip internacional que creu que tothom hauria de tenir accés privat "
+"a una xarxa sense censura."
 
 #: https//www.torproject.org/about/sponsors/
 #: (content/about/sponsors/contents+en.lrsponsors.body)
@@ -555,6 +557,9 @@ msgid ""
 "goal is to continue diversifying our funding. To inquire about sponsorship, "
 "please email giving(at)torproject.org."
 msgstr ""
+"Tenir una base d'usuaris diversa significa que també tenim diverses fonts de"
+" finançament. La nostra meta és continuar diversificant-lo. Per a preguntes 
"
+"sobre patrocinis, envieu un correu a giving(at)torproject.org."
 
 #: https//www.torproject.org/about/reports/
 #: (content/about/reports/contents+en.lrreports.body)
@@ -562,11 +567,13 @@ msgid ""
 "The Tor Project, Inc. is a US 501(c)(3) nonprofit organization committed to "
 "transparency in its work and reporting."
 msgstr ""
+"El Tor Project, Inc. és una organització sense afany de lucre US 501(c)(3) "
+"compromesa amb la transparència en el seu treball."
 
 #: https//www.torproject.org/press/-new-release-tails/
 #: (content/press/new-release-tails/contents+en.lrpost.title)
 msgid "New Release: Tails 3.12"
-msgstr ""
+msgstr "Versió nova: Tails 3.12"
 
 #: https//www.torproject.org/press/-new-release-tails/
 #: (content/press/new-release-tails/contents+en.lrpost.summary)
@@ -574,6 +581,8 @@ msgid ""
 "This release fixes many security vulnerabilities. You should upgrade as soon"
 " as possible."
 msgstr ""
+"Aquesta versió corregeix moltes vulnerabilitats de seguretat. Hauríeu "
+"d'actualitzar el més aviat possible."
 
 #: https//www.torproject.org/press/-new-release-tails/
 #: (content/press/new-release-tails/contents+en.lrpost.summary)
@@ -581,11 +590,13 @@ msgid ""
 "The biggest news for 3.12 is that we completely changed the installation "
 "methods for Tails."
 msgstr ""
+"La bona notícia sobre la versió 3.12 és que hem canviat per complet els "
+"mètodes d'instal·lació per al Tails."
 
 #: https//www.torproject.org/press/-new-release-tor/
 #: (content/press/new-release-tor/contents+en.lrpost.title)
 msgid "New Release: Tor 0.4.0.1-alpha"
-msgstr ""
+msgstr "Versió nova: Tor 0.4.0.1-alpha"
 
 #: https//www.torproject.org/press/-new-release-tor/
 #: (content/press/new-release-tor/contents+en.lrpost.summary)
@@ -594,6 +605,9 @@ msgid ""
 "source, you can download the source code for 0.4.0.1-alpha from the usual "
 "place on the website."
 msgstr ""
+"Hi ha disponible per a baixar una versió alfa nova. Si compileu el Tor des "
+"del codi font, podeu baixar el de la 0.4.0.1-alpha des del lloc habitual del"
+" web."
 
 #: https//www.torproject.org/press/-new-release-tor-browser/
 #: (content/press/new-release-tor-browser/contents+en.lrpost.title)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] Update translations for tails-misc_release

2019-08-24 Thread translation
commit d2e41df5adff608b1fdd596ed046d22e9257f58f
Author: Translation commit bot 
Date:   Sat Aug 24 12:20:37 2019 +

Update translations for tails-misc_release
---
 de.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/de.po b/de.po
index 5b84491d0..170e4f1c6 100644
--- a/de.po
+++ b/de.po
@@ -37,8 +37,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-24 12:02+\n"
+"Last-Translator: Ettore Atalan \n"
 "Language-Team: German 
(http://www.transifex.com/otf/torproject/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] Update translations for tails-misc

2019-08-24 Thread translation
commit e9852b3e8e7ba2ad31b06dae7d10451c5d881176
Author: Translation commit bot 
Date:   Sat Aug 24 12:19:35 2019 +

Update translations for tails-misc
---
 de.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/de.po b/de.po
index 5b84491d0..170e4f1c6 100644
--- a/de.po
+++ b/de.po
@@ -37,8 +37,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-24 12:02+\n"
+"Last-Translator: Ettore Atalan \n"
 "Language-Team: German 
(http://www.transifex.com/otf/torproject/language/de/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] Update translations for tails-misc_release

2019-08-24 Thread translation
commit 5ddd367808b2892959b52037958c998252f71341
Author: Translation commit bot 
Date:   Sat Aug 24 10:50:41 2019 +

Update translations for tails-misc_release
---
 lt.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lt.po b/lt.po
index 8609a1e61..535d505f0 100644
--- a/lt.po
+++ b/lt.po
@@ -11,8 +11,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-24 10:25+\n"
+"Last-Translator: Moo\n"
 "Language-Team: Lithuanian 
(http://www.transifex.com/otf/torproject/language/lt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] Update translations for tails-misc

2019-08-24 Thread translation
commit 84371137ce11bb70312ced04432bf7cb12098ed1
Author: Translation commit bot 
Date:   Sat Aug 24 10:49:42 2019 +

Update translations for tails-misc
---
 lt.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lt.po b/lt.po
index 8609a1e61..535d505f0 100644
--- a/lt.po
+++ b/lt.po
@@ -11,8 +11,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-24 10:25+\n"
+"Last-Translator: Moo\n"
 "Language-Team: Lithuanian 
(http://www.transifex.com/otf/torproject/language/lt/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflakeaddon-messages.json] Update translations for snowflakeaddon-messages.json

2019-08-24 Thread translation
commit 0c89b6fa9298f6e88eba003e8773c8d80e3343af
Author: Translation commit bot 
Date:   Sat Aug 24 10:48:30 2019 +

Update translations for snowflakeaddon-messages.json
---
 lt/messages.json | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/lt/messages.json b/lt/messages.json
index ddf58ff2b..0cc0bdee0 100644
--- a/lt/messages.json
+++ b/lt/messages.json
@@ -15,7 +15,7 @@
 "message": "Snowflake išjungta"
   },
   "popupStatusOn": {
-"message": "Number of users currently connected: $1"
+"message": "Šiuo metu prisijungusių naudotojų skaičius: $1"
   },
   "popupStatusReady": {
 "message": "Your Snowflake is ready to help users circumvent censorship!"
@@ -27,6 +27,6 @@
 "message": "Number of users your Snowflake has helped circumvent 
censorship in the last 24 hours: $1"
   },
   "badgeCookiesOff": {
-"message": "Cookies are not enabled."
+"message": "Slapukai nėra įjungti."
   }
 }

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/torbutton-brandproperties] Update translations for torbutton-brandproperties

2019-08-24 Thread translation
commit f7040b56586bc235fdf2c0c27d7ac6bb2d091437
Author: Translation commit bot 
Date:   Sat Aug 24 08:26:01 2019 +

Update translations for torbutton-brandproperties
---
 nl/brand.properties | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nl/brand.properties b/nl/brand.properties
index 43f436103..ac15d1c30 100644
--- a/nl/brand.properties
+++ b/nl/brand.properties
@@ -11,6 +11,6 @@ homePageSingleStartMain=Firefox Start, een snelle startpagina 
met ingebouwde zoe
 homePageImport=Importeer je startpagina uit %S
 
 homePageMigrationPageTitle=Startpaginakeuze
-homePageMigrationDescription=Selecteer de startpagina die je wil gebruiken:
+homePageMigrationDescription=Selecteer de startpagina die u wilt gebruiken:
 
 syncBrandShortName=Synchronisatie

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/torbutton-brandproperties_completed] Update translations for torbutton-brandproperties_completed

2019-08-24 Thread translation
commit a94dfbaad6624a9a715e8b4f7b4ab90777d30a69
Author: Translation commit bot 
Date:   Sat Aug 24 08:26:07 2019 +

Update translations for torbutton-brandproperties_completed
---
 nl/brand.properties | 18 +-
 1 file changed, 9 insertions(+), 9 deletions(-)

diff --git a/nl/brand.properties b/nl/brand.properties
index 43f436103..9d23b26e6 100644
--- a/nl/brand.properties
+++ b/nl/brand.properties
@@ -2,15 +2,15 @@
 # License, v. 2.0. If a copy of the MPL was not distributed with this
 # file, You can obtain one at http://mozilla.org/MPL/2.0/.
 
-brandShorterName=Tor-browser
-brandShortName=Tor-browser
-brandFullName=Tor-browser
-vendorShortName=Tor-project
+# brandShorterName=Tor Browser
+# brandShortName=Tor Browser
+# brandFullName=Tor Browser
+# vendorShortName=Tor Project
 
-homePageSingleStartMain=Firefox Start, een snelle startpagina met ingebouwde 
zoekfunctie
-homePageImport=Importeer je startpagina uit %S
+# homePageSingleStartMain=Firefox Start, a fast home page with built-in search
+# homePageImport=Import your home page from %S
 
-homePageMigrationPageTitle=Startpaginakeuze
-homePageMigrationDescription=Selecteer de startpagina die je wil gebruiken:
+# homePageMigrationPageTitle=Home Page Selection
+# homePageMigrationDescription=Please select the home page you wish to use:
 
-syncBrandShortName=Synchronisatie
+# syncBrandShortName=Sync

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-persistence-setup] Update translations for tails-persistence-setup

2019-08-24 Thread translation
commit 535419cbd5a946d9df8874155a733dbe600b5938
Author: Translation commit bot 
Date:   Sat Aug 24 08:24:44 2019 +

Update translations for tails-persistence-setup
---
 nl/nl.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nl/nl.po b/nl/nl.po
index 9edd6b3e8..b039420b2 100644
--- a/nl/nl.po
+++ b/nl/nl.po
@@ -22,7 +22,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: Tails developers \n"
 "POT-Creation-Date: 2019-03-17 09:03+0100\n"
-"PO-Revision-Date: 2019-08-24 07:54+\n"
+"PO-Revision-Date: 2019-08-24 08:18+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-persistence-setup] Update translations for tails-persistence-setup

2019-08-24 Thread translation
commit c6c663476c725d0d31eb936adc0942b19b765657
Author: Translation commit bot 
Date:   Sat Aug 24 07:55:00 2019 +

Update translations for tails-persistence-setup
---
 nl/nl.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nl/nl.po b/nl/nl.po
index 934101666..9edd6b3e8 100644
--- a/nl/nl.po
+++ b/nl/nl.po
@@ -22,7 +22,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: Tails developers \n"
 "POT-Creation-Date: 2019-03-17 09:03+0100\n"
-"PO-Revision-Date: 2019-05-15 11:17+\n"
+"PO-Revision-Date: 2019-08-24 07:54+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc] Update translations for tails-misc

2019-08-24 Thread translation
commit 6f3a3c3b25b36e2cbde31106b8c208e365bac034
Author: Translation commit bot 
Date:   Sat Aug 24 07:49:49 2019 +

Update translations for tails-misc
---
 nl.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/nl.po b/nl.po
index be90f8c54..5e9b458cb 100644
--- a/nl.po
+++ b/nl.po
@@ -34,8 +34,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-24 07:35+\n"
+"Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-misc_release] Update translations for tails-misc_release

2019-08-24 Thread translation
commit 92850e60927f242870d9014417abeccd7e87ad31
Author: Translation commit bot 
Date:   Sat Aug 24 07:50:49 2019 +

Update translations for tails-misc_release
---
 nl.po | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/nl.po b/nl.po
index be90f8c54..5e9b458cb 100644
--- a/nl.po
+++ b/nl.po
@@ -34,8 +34,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-14 14:11+0200\n"
-"PO-Revision-Date: 2019-08-24 02:11+\n"
-"Last-Translator: erinm\n"
+"PO-Revision-Date: 2019-08-24 07:35+\n"
+"Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/liveusb-creator] Update translations for liveusb-creator

2019-08-24 Thread translation
commit d76daa91f8f77c4174e0da01eea04b60352c1b80
Author: Translation commit bot 
Date:   Sat Aug 24 07:47:00 2019 +

Update translations for liveusb-creator
---
 nl/nl.po | 2 +-
 1 file changed, 1 insertion(+), 1 deletion(-)

diff --git a/nl/nl.po b/nl/nl.po
index 6a58a866b..54b255937 100644
--- a/nl/nl.po
+++ b/nl/nl.po
@@ -25,7 +25,7 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-04-13 08:42+0200\n"
-"PO-Revision-Date: 2019-04-13 17:19+\n"
+"PO-Revision-Date: 2019-08-24 07:39+\n"
 "Last-Translator: Tonnes \n"
 "Language-Team: Dutch (http://www.transifex.com/otf/torproject/language/nl/)\n"
 "MIME-Version: 1.0\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/snowflake-website-indexhtml] Update translations for snowflake-website-indexhtml

2019-08-24 Thread translation
commit 901dea3d7266d2e470572d198067cfe1c271fe09
Author: Translation commit bot 
Date:   Sat Aug 24 07:18:48 2019 +

Update translations for snowflake-website-indexhtml
---
 cs/index.html | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/cs/index.html b/cs/index.html
index 8e481eb52..1f8016844 100644
--- a/cs/index.html
+++ b/cs/index.html
@@ -26,7 +26,8 @@
 
   Prohlížeč
 
-  Pokud je váš přístup k internetu cenzurován, měli byste si 
stáhnout Prohlížeč Tor.
+  Pokud je váš přístup k internetu cenzurován, stáhněte si
+https://www.torproject.org/download/;>Prohlížeč Tor.
 
   
 
@@ -51,7 +52,7 @@
 
   
 
-  REPORTOVAT CHYBY
+  HLÁŠENÍ CHYB
   
   If you encounter problems with Snowflake as a client or a proxy,
   please consider filing a bug.  To do so, you will have to,

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/tails-persistence-setup] Update translations for tails-persistence-setup

2019-08-24 Thread translation
commit 946db3e32c21ada7712df8ba3521d7ec3f71cd59
Author: Translation commit bot 
Date:   Sat Aug 24 06:54:58 2019 +

Update translations for tails-persistence-setup
---
 cs/cs.po | 5 +++--
 1 file changed, 3 insertions(+), 2 deletions(-)

diff --git a/cs/cs.po b/cs/cs.po
index be70d47ec..772d1958f 100644
--- a/cs/cs.po
+++ b/cs/cs.po
@@ -7,6 +7,7 @@
 # Filip Hruska , 2013
 # Pivoj, 2014
 # Jiří Vírava , 2014,2016
+# Michal Stanke , 2019
 # Mikulas Holy, 2017
 # multiflexi , 2019
 # Radek Bensch , 2013
@@ -17,8 +18,8 @@ msgstr ""
 "Project-Id-Version: Tor Project\n"
 "Report-Msgid-Bugs-To: Tails developers \n"
 "POT-Creation-Date: 2019-03-17 09:03+0100\n"
-"PO-Revision-Date: 2019-08-23 08:24+\n"
-"Last-Translator: Walter Klosse \n"
+"PO-Revision-Date: 2019-08-24 06:50+\n"
+"Last-Translator: Michal Stanke \n"
 "Language-Team: Czech (http://www.transifex.com/otf/torproject/language/cs/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal] Update translations for support-portal

2019-08-24 Thread translation
commit 7322119d1b78691929b6d144da9b93a514422967
Author: Translation commit bot 
Date:   Sat Aug 24 06:29:39 2019 +

Update translations for support-portal
---
 contents+fa.po | 2 ++
 1 file changed, 2 insertions(+)

diff --git a/contents+fa.po b/contents+fa.po
index 0229331e5..dbd53fe00 100644
--- a/contents+fa.po
+++ b/contents+fa.po
@@ -312,6 +312,8 @@ msgid ""
 "Digital signature is a process ensuring that a certain package was generated"
 " by its developers and has not been tampered with."
 msgstr ""
+"امضای دیجیتال، فرآیندی است که  در آن می 
توان از اینکه یک بسته خاص توسط توسعه"
+" دهندگان آن ایجاد شده و مهاجمین آن را 
دستکاری نکرده اند، اطمینان حاصل کرد."
 
 #: https//support.torproject.org/tbb/how-to-verify-signature/
 #: (content/tbb/how-to-verify-signature/contents+en.lrquestion.description)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser-build/master] Merge remote-tracking branch 'boklm/bug_31447_v2'

2019-08-24 Thread gk
commit 00354e514c96c25dea3107a8240249063526a29a
Merge: 7d1b5fa ace69bc
Author: Georg Koppen 
Date:   Sat Aug 24 06:18:35 2019 +

Merge remote-tracking branch 'boklm/bug_31447_v2'

 projects/firefox/config | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [tor-browser-build/master] Bug 31447: Update comment about python package

2019-08-24 Thread gk
commit ace69bc2a6abb9bc5aaba625eb9a693ae2e2a5c7
Author: Nicolas Vigier 
Date:   Mon Aug 19 18:45:32 2019 +0200

Bug 31447: Update comment about python package
---
 projects/firefox/config | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/projects/firefox/config b/projects/firefox/config
index a481815..a5851fa 100644
--- a/projects/firefox/config
+++ b/projects/firefox/config
@@ -20,7 +20,9 @@ var:
 - zip
 - autoconf2.13
 - yasm
-  # XXX: for mach
+# We are building our own version of Python 3.6, which is required
+# for the build. However mach still requires Python 2.7, so we
+# install this version using the package.
 - python
 - pkg-config
   container:



___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits


[tor-commits] [translation/support-portal] Update translations for support-portal

2019-08-24 Thread translation
commit 88dc9459a2eb05108a47a2c17b1f47dd10c07b85
Author: Translation commit bot 
Date:   Sat Aug 24 05:59:45 2019 +

Update translations for support-portal
---
 contents+fa.po | 10 --
 1 file changed, 8 insertions(+), 2 deletions(-)

diff --git a/contents+fa.po b/contents+fa.po
index 943ffa374..0229331e5 100644
--- a/contents+fa.po
+++ b/contents+fa.po
@@ -5,8 +5,8 @@
 # Reza Ghasemi, 2019
 # Emma Peel, 2019
 # A.Mehraban , 2019
-# MYZJ, 2019
 # Vox, 2019
+# MYZJ, 2019
 # 
 msgid ""
 msgstr ""
@@ -14,7 +14,7 @@ msgstr ""
 "Report-Msgid-Bugs-To: \n"
 "POT-Creation-Date: 2019-08-21 12:22+CET\n"
 "PO-Revision-Date: 2018-10-02 22:41+\n"
-"Last-Translator: Vox, 2019\n"
+"Last-Translator: MYZJ, 2019\n"
 "Language-Team: Persian (https://www.transifex.com/otf/teams/1519/fa/)\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
@@ -160,6 +160,9 @@ msgid ""
 "circumvention options available, including [pluggable transports](https"
 "://tb-manual.torproject.org/transports/)."
 msgstr ""
+"در جاهایی که سانسور سنگین وجود دارد، ما 
تعدادی روش برای دور زدن سانسور در "
+"دسترس کاربران قرار داده ایم. از جمله این 
روش ها، می توان به [Pluggable "
+"Transport](https://tb-manual.torproject.org/transports/) ها اشاره 
کرد."
 
 #: https//support.torproject.org/faq/faq-2/
 #: (content/faq/faq-2/contents+en.lrquestion.description)
@@ -172,6 +175,9 @@ msgid ""
 "manual.torproject.org/) section on [censorship](https://tb-;
 "manual.torproject.org/circumvention/)."
 msgstr ""
+"برای آگاهی بیشتر، بخش [دور زدن 
سانسور](https://tb-;
+"manual.torproject.org/circumvention/) در [راهنمای کاربری م
رورگر تور](https"
+"://tb-manual.torproject.org/) را بخوانید."
 
 #: https//support.torproject.org/faq/faq-3/
 #: (content/faq/faq-3/contents+en.lrquestion.title)

___
tor-commits mailing list
tor-commits@lists.torproject.org
https://lists.torproject.org/cgi-bin/mailman/listinfo/tor-commits