commit 62f9e7e248c2d1efe717761c31b73d99d8836f9e
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Nov 21 00:50:02 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstrin…
---
sv-SE/torbrowser_strings.dtd | 106 +++++++++++++++++++++----------------------
1 file changed, 53 insertions(+), 53 deletions(-)
diff --git a/sv-SE/torbrowser_strings.dtd b/sv-SE/torbrowser_strings.dtd
index fb0626dba..918508ce7 100644
--- a/sv-SE/torbrowser_strings.dtd
+++ b/sv-SE/torbrowser_strings.dtd
@@ -1,58 +1,58 @@
<!-- Location note: Tor First run messages -->
-<!ENTITY firstrun_welcome_tab_title "Välkommen">
-<!ENTITY firstrun_welcome_title "Du är redo.">
-<!ENTITY firstrun_welcome_message "Tor Browser erbjuder högsta standard för integritet och säkerhet när du surfar på webben. Du är nu skyddad mot spårning, övervakning och censur. Denna snabba introduktion kommer att visa dig hur.">
-<!ENTITY firstrun_welcome_next "Börja nu">
-<!ENTITY firstrun_privacy_tab_title "Sekretess">
-<!ENTITY firstrun_privacy_title "Avvisa bevakare och snokare.">
-<!ENTITY firstrun_privacy_message "Tor Browser isolerar kakor och tar bort din webbläsarhistorik efter din session. Dessa ändringar säkerställa din integritet och säkerhet skyddas i webbläsaren. Klicka på "Tor-nätverk" för att lära dig hur vi skyddar dig på nätverksnivå.">
-<!ENTITY firstrun_privacy_next "Gå till Tor-nätverket">
-<!ENTITY firstrun_tornetwork_tab_title "Tor-nätverk">
-<!ENTITY firstrun_tornetwork_title "Res ett decentraliserat nätverk.">
-<!ENTITY firstrun_tornetwork_message "Tor Browser ansluter dig till Tor-nätverket som drivs av tusentals volontärer runt om i världen. Till skillnad från en VPN, det finns ingen punkt för misslyckande eller centraliserad enhet du behöver lita på för att njuta av internet privat.">
-<!ENTITY firstrun_tornetwork_next "Nästa">
-<!ENTITY firstrun_secsettings_tab_title "Säkerhet">
-<!ENTITY firstrun_secsettings_title "Välj din upplevelse.">
-<!ENTITY firstrun_secsettings_message "Vi ger dig också ytterligare inställningar för att höja din webbläsares säkerhet. Våra säkerhetsinställningar tillåter dig att blockera element som kan användas för att attackera din dator.">
-<!ENTITY firstrun_secsettings_next "Nästa">
-<!ENTITY firstrun_tips_tab_title "Tips">
-<!ENTITY firstrun_tips_title "Erfarenhetstips.">
-<!ENTITY firstrun_tips_message "Med alla säkerhets- och sekretessfunktioner som Tor tillhandahåller kan din upplevelse när du surfar på internet vara lite annorlunda. Saker kan vara lite långsammare och beroende på din säkerhetsnivå, kan vissa element inte fungerar eller läsas in. Du kan också bli ombedd att bevisa att du är en människa och inte en robot.">
-<!ENTITY firstrun_tips_next "Nästa">
-<!ENTITY firstrun_onionservices_tab_title "Onions">
-<!ENTITY firstrun_onionservices_title "Onion-tjänster">
-<!ENTITY firstrun_onionservices_message "Onion-tjänster är webbplatser som slutar med .onion som ger extra skydd till publicerare och besökare, inklusive extra garantier mot censur. Onion-tjänster tillåter alla att tillhandahålla innehåll och tjänster anonymt.">
-<!ENTITY firstrun_onionservices_next "Kör för att utforska">
-
-<!ENTITY tor_bootstrap_swipe_for_logs "Svep åt vänster för att se Tor-loggar">
-<!ENTITY tor_bootstrap_connect "Anslut">
-<!ENTITY tor_bootstrap_starting_status "Vi ansluter till Tor-nätverket...">
-
-<!ENTITY pref_tor_network_title "Nätverk">
-<!ENTITY pref_tor_select_a_bridge_title "Välj en bro">
-<!ENTITY pref_tor_provide_a_bridge_title "Ange en bro">
-
-<!ENTITY pref_category_tor_network_summary "Tor Browser ansluter dig till Tor-nätverket som drivs av tusentals volontärer runt om i världen! Kan dessa alternativ hjälpa dig?">
-<!ENTITY pref_category_tor_bridge_summary "Broar är onoterade Tor-reläer som gör det svårare att blockera anslutningar till Tor-nätverket. På grund av hur vissa länder försöker blockera Tor arbetar vissa broar i vissa länder men inte andra.">
-
-<!ENTITY pref_choice_tor_bridges_enabled_title "Internet censureras här">
-<!ENTITY pref_choice_tor_bridges_enabled_summary "Klicka för att konfigurera en bro för att ansluta till Tor">
-
-<!ENTITY pref_tor_bridges_provide_manual_button_title "Använd en bro jag känner till">
-<!ENTITY pref_tor_bridges_provide_select_text_title "Välj en bro">
-<!ENTITY pref_tor_bridges_provide_manual_text_title "Ange bro">
-<!ENTITY pref_tor_bridges_provide_manual_summary "Ange broinformationen du fick från en betrodd källa">
-<!ENTITY pref_tor_bridges_provide_manual_address_port_placeholder "adress:port">
-<!ENTITY pref_tor_hint_type_one_per_line "Ange en per rad">
+<!ENTITY firstrun_welcome_tab_title "">
+<!ENTITY firstrun_welcome_title "">
+<!ENTITY firstrun_welcome_message "">
+<!ENTITY firstrun_welcome_next "">
+<!ENTITY firstrun_privacy_tab_title "">
+<!ENTITY firstrun_privacy_title "">
+<!ENTITY firstrun_privacy_message "">
+<!ENTITY firstrun_privacy_next "">
+<!ENTITY firstrun_tornetwork_tab_title "">
+<!ENTITY firstrun_tornetwork_title "">
+<!ENTITY firstrun_tornetwork_message "">
+<!ENTITY firstrun_tornetwork_next "">
+<!ENTITY firstrun_secsettings_tab_title "">
+<!ENTITY firstrun_secsettings_title "">
+<!ENTITY firstrun_secsettings_message "">
+<!ENTITY firstrun_secsettings_next "">
+<!ENTITY firstrun_tips_tab_title "">
+<!ENTITY firstrun_tips_title "">
+<!ENTITY firstrun_tips_message "">
+<!ENTITY firstrun_tips_next "">
+<!ENTITY firstrun_onionservices_tab_title "">
+<!ENTITY firstrun_onionservices_title "">
+<!ENTITY firstrun_onionservices_message "">
+<!ENTITY firstrun_onionservices_next "">
+
+<!ENTITY tor_bootstrap_swipe_for_logs "">
+<!ENTITY tor_bootstrap_connect "">
+<!ENTITY tor_bootstrap_starting_status "">
+
+<!ENTITY pref_tor_network_title "">
+<!ENTITY pref_tor_select_a_bridge_title "">
+<!ENTITY pref_tor_provide_a_bridge_title "">
+
+<!ENTITY pref_category_tor_network_summary "">
+<!ENTITY pref_category_tor_bridge_summary "">
+
+<!ENTITY pref_choice_tor_bridges_enabled_title "">
+<!ENTITY pref_choice_tor_bridges_enabled_summary "">
+
+<!ENTITY pref_tor_bridges_provide_manual_button_title "">
+<!ENTITY pref_tor_bridges_provide_select_text_title "">
+<!ENTITY pref_tor_bridges_provide_manual_text_title "">
+<!ENTITY pref_tor_bridges_provide_manual_summary "">
+<!ENTITY pref_tor_bridges_provide_manual_address_port_placeholder "">
+<!ENTITY pref_tor_hint_type_one_per_line "">
<!-- When another PT is recommended, change TorNetworkBridgeSelectPreference::saveCurrentCheckedRadioButton(), too -->
-<!ENTITY pref_bridges_type_obfs4 "obfs4 (rekommenderas)">
-<!ENTITY pref_bridges_type_meek_azure "meek-azure">
-<!ENTITY pref_tor_network_bridges_enabled_change_builtin "Du använder en inbyggd bro för att ansluta till Tor. Ändra">
-<!ENTITY pref_tor_network_bridges_enabled_change_custom "Du använder en anpassad bro för att ansluta till Tor. Ändra">
-<!ENTITY pref_tor_network_using_multiple_provided_bridges "Du använder flera anpassade broar.">
-<!ENTITY pref_tor_network_using_a_provided_bridge "Du använder &formatS; bron.">
+<!ENTITY pref_bridges_type_obfs4 "">
+<!ENTITY pref_bridges_type_meek_azure "">
+<!ENTITY pref_tor_network_bridges_enabled_change_builtin "">
+<!ENTITY pref_tor_network_bridges_enabled_change_custom "">
+<!ENTITY pref_tor_network_using_multiple_provided_bridges "">
+<!ENTITY pref_tor_network_using_a_provided_bridge "">
-<!ENTITY tor_notify_user_about_error "Ett fel uppstod, vänligen svep för mer information.">
+<!ENTITY tor_notify_user_about_error "">
-<!ENTITY sync_not_supported "Synkronisering stöds för närvarande inte i Tor Browser på Android">
+<!ENTITY sync_not_supported "">
commit 42f39e96bb5d6d173faa4bb29c9d19325ec517c8
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Nov 21 00:49:55 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tba-torbrowserstrin…
---
sv-SE/torbrowser_strings.dtd | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sv-SE/torbrowser_strings.dtd b/sv-SE/torbrowser_strings.dtd
index fb0626dba..7d88e612b 100644
--- a/sv-SE/torbrowser_strings.dtd
+++ b/sv-SE/torbrowser_strings.dtd
@@ -9,7 +9,7 @@
<!ENTITY firstrun_privacy_next "Gå till Tor-nätverket">
<!ENTITY firstrun_tornetwork_tab_title "Tor-nätverk">
<!ENTITY firstrun_tornetwork_title "Res ett decentraliserat nätverk.">
-<!ENTITY firstrun_tornetwork_message "Tor Browser ansluter dig till Tor-nätverket som drivs av tusentals volontärer runt om i världen. Till skillnad från en VPN, det finns ingen punkt för misslyckande eller centraliserad enhet du behöver lita på för att njuta av internet privat.">
+<!ENTITY firstrun_tornetwork_message "Tor Browser ansluter dig till Tor-nätverket som drivs av tusentals volontärer runt om i världen. Till skillnad från en VPN, finns det ingen punkt för misslyckande eller centraliserad enhet du behöver lita på för att njuta av internet privat.">
<!ENTITY firstrun_tornetwork_next "Nästa">
<!ENTITY firstrun_secsettings_tab_title "Säkerhet">
<!ENTITY firstrun_secsettings_title "Välj din upplevelse.">
@@ -17,11 +17,11 @@
<!ENTITY firstrun_secsettings_next "Nästa">
<!ENTITY firstrun_tips_tab_title "Tips">
<!ENTITY firstrun_tips_title "Erfarenhetstips.">
-<!ENTITY firstrun_tips_message "Med alla säkerhets- och sekretessfunktioner som Tor tillhandahåller kan din upplevelse när du surfar på internet vara lite annorlunda. Saker kan vara lite långsammare och beroende på din säkerhetsnivå, kan vissa element inte fungerar eller läsas in. Du kan också bli ombedd att bevisa att du är en människa och inte en robot.">
+<!ENTITY firstrun_tips_message "Med alla säkerhets- och sekretessfunktioner som Tor tillhandahåller kan din upplevelse när du surfar på internet vara lite annorlunda. Saker kan vara lite långsammare, och beroende på din säkerhetsnivå kanske vissa element inte fungerar eller läses in. Du kan också bli ombedd att bevisa att du är en människa och inte en robot.">
<!ENTITY firstrun_tips_next "Nästa">
<!ENTITY firstrun_onionservices_tab_title "Onions">
<!ENTITY firstrun_onionservices_title "Onion-tjänster">
-<!ENTITY firstrun_onionservices_message "Onion-tjänster är webbplatser som slutar med .onion som ger extra skydd till publicerare och besökare, inklusive extra garantier mot censur. Onion-tjänster tillåter alla att tillhandahålla innehåll och tjänster anonymt.">
+<!ENTITY firstrun_onionservices_message "Onion-tjänster är webbplatser som slutar med .onion som ger extra skydd till publicerare och besökare, inklusive extra skyddsåtgärder mot censur. Onion-tjänster tillåter alla att tillhandahålla innehåll och tjänster anonymt.">
<!ENTITY firstrun_onionservices_next "Kör för att utforska">
<!ENTITY tor_bootstrap_swipe_for_logs "Svep åt vänster för att se Tor-loggar">
commit 936cf6db039d51d84c37aa0962d0da8b1edcfabf
Author: Translation commit bot <translation(a)torproject.org>
Date: Thu Nov 21 00:48:40 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tails-iuk
---
sv.po | 6 +++---
1 file changed, 3 insertions(+), 3 deletions(-)
diff --git a/sv.po b/sv.po
index e9ac201c5..c85b043e0 100644
--- a/sv.po
+++ b/sv.po
@@ -13,7 +13,7 @@ msgstr ""
"Project-Id-Version: Tor Project\n"
"Report-Msgid-Bugs-To: Tails developers <tails(a)boum.org>\n"
"POT-Creation-Date: 2019-10-21 09:17+0200\n"
-"PO-Revision-Date: 2019-11-09 19:03+0000\n"
+"PO-Revision-Date: 2019-11-21 00:47+0000\n"
"Last-Translator: Jonatan Nyberg\n"
"Language-Team: Swedish (http://www.transifex.com/otf/torproject/language/sv/)\n"
"MIME-Version: 1.0\n"
@@ -40,11 +40,11 @@ msgid ""
"Check your network connection, and restart Tails to try upgrading again.\n"
"\n"
"If the problem persists, go to file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
-msgstr "<b>Kunde inte avgöra om någon uppgradering finns tillgänglig från vår hemsida.</b>\n\nKontrollera din nätverksanslutning, och starta om Tails för att försöka uppgradera igen.\n\nOm problemet kvarstår, se file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
+msgstr "<b>Kunde inte avgöra om någon uppgradering finns tillgänglig från vår webbplats.</b>\n\nKontrollera din nätverksanslutning, och starta om Tails för att försöka uppgradera igen.\n\nOm problemet kvarstår, se file:///usr/share/doc/tails/website/doc/upgrade/error/check.en.html"
#: ../lib/Tails/IUK/Frontend.pm:236
msgid "no automatic upgrade is available from our website for this version"
-msgstr "ingen automatisk uppgradering finns tillgänglig från vår hemsida för den här versionen"
+msgstr "ingen automatisk uppgradering finns tillgänglig från vår webbplats för denna version"
#: ../lib/Tails/IUK/Frontend.pm:242
msgid "your device was not created using Tails Installer"
commit bac19667148fc75441ce8168309476c79931d68a
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Nov 20 23:23:10 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tpo-web_completed
---
contents+fr.po | 16 +++++++++++++++-
1 file changed, 15 insertions(+), 1 deletion(-)
diff --git a/contents+fr.po b/contents+fr.po
index ee73ee2d7..655d4bbca 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -434,12 +434,14 @@ msgstr ""
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
msgid "# General Statement of Trademark and Copyright"
-msgstr ""
+msgstr "# Énoncé général sur la marque commerciale et le droit d’auteur"
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
msgid "Content on this site is Copyright The Tor Project, Inc.."
msgstr ""
+"Le contenu de ce site est protégé par un droit d’auteur de « The Tor "
+"Project, Inc. »."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -447,6 +449,9 @@ msgid ""
"Reproduction of content is permitted under a [Creative Commons Attribution "
"3.0 United States License](https://creativecommons.org/licenses/by/3.0/us/)."
msgstr ""
+"La reproduction du contenu est autorisée d’après la licence [Creative "
+"Commons Attribution 3.0 États-"
+"Unis](https://creativecommons.org/licenses/by/3.0/us/deed.fr/)."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -455,6 +460,9 @@ msgid ""
"attribution that identifies The Tor Project, Inc. as the owner and "
"originator of such content."
msgstr ""
+"Toute utilisation dans le cadre d’une telle licence doit être accompagnée "
+"par une attribution claire et notable qui déclare « The Tor Project, Inc. » "
+"comme propriétaire et à l’origine de ce contenu."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -462,6 +470,8 @@ msgid ""
"The Tor Project Inc. reserves the right to change licenses and permissions "
"at any time in its sole discretion."
msgstr ""
+"« The Tor Project Inc. » se réserve le droit de changer les licences et "
+"autorisations à tout moment et à sa seule discrétion."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -470,6 +480,10 @@ msgid ""
" "
"licenses](https://2019.www.torproject.org/docs/faq.html.en#DistributingTor)."
msgstr ""
+"Les logiciels de Tor® sont concédés avec autorisations, de différentes "
+"manières. Apprenez-en davantage sur les [différentes "
+"licences](https://2019.www.torproject.org/docs/faq.html.en#DistributingTor) "
+"(page en anglais)."
#: https//www.torproject.org/about/history/
#: (content/about/history/contents+en.lrpage.body)
commit 04eb5aaf25f7742b2277be98c39e92f745b83543
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Nov 20 23:23:01 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tpo-web
---
contents+fr.po | 17 +++++++++++++----
1 file changed, 13 insertions(+), 4 deletions(-)
diff --git a/contents+fr.po b/contents+fr.po
index 3870d968c..655d4bbca 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -440,8 +440,8 @@ msgstr "# Énoncé général sur la marque commerciale et le droit d’auteur"
#: (content/about/trademark/contents+en.lrtrademark.body)
msgid "Content on this site is Copyright The Tor Project, Inc.."
msgstr ""
-"Le contenu de ce site est protégé par un droit d’auteur The Tor Project, "
-"Inc.."
+"Le contenu de ce site est protégé par un droit d’auteur de « The Tor "
+"Project, Inc. »."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -449,8 +449,8 @@ msgid ""
"Reproduction of content is permitted under a [Creative Commons Attribution "
"3.0 United States License](https://creativecommons.org/licenses/by/3.0/us/)."
msgstr ""
-"La reproduction du contenu est autorisée sous licence [Creative Commons "
-"Attribution 3.0 États-"
+"La reproduction du contenu est autorisée d’après la licence [Creative "
+"Commons Attribution 3.0 États-"
"Unis](https://creativecommons.org/licenses/by/3.0/us/deed.fr/)."
#: https//www.torproject.org/about/trademark/
@@ -460,6 +460,9 @@ msgid ""
"attribution that identifies The Tor Project, Inc. as the owner and "
"originator of such content."
msgstr ""
+"Toute utilisation dans le cadre d’une telle licence doit être accompagnée "
+"par une attribution claire et notable qui déclare « The Tor Project, Inc. » "
+"comme propriétaire et à l’origine de ce contenu."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -467,6 +470,8 @@ msgid ""
"The Tor Project Inc. reserves the right to change licenses and permissions "
"at any time in its sole discretion."
msgstr ""
+"« The Tor Project Inc. » se réserve le droit de changer les licences et "
+"autorisations à tout moment et à sa seule discrétion."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -475,6 +480,10 @@ msgid ""
" "
"licenses](https://2019.www.torproject.org/docs/faq.html.en#DistributingTor)."
msgstr ""
+"Les logiciels de Tor® sont concédés avec autorisations, de différentes "
+"manières. Apprenez-en davantage sur les [différentes "
+"licences](https://2019.www.torproject.org/docs/faq.html.en#DistributingTor) "
+"(page en anglais)."
#: https//www.torproject.org/about/history/
#: (content/about/history/contents+en.lrpage.body)
commit cc6bcfa93588cfe07a2fdbbf5caf69f2a4ae539e
Author: Translation commit bot <translation(a)torproject.org>
Date: Wed Nov 20 22:53:24 2019 +0000
https://gitweb.torproject.org/translation.git/commit/?h=tpo-web
---
contents+fr.po | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/contents+fr.po b/contents+fr.po
index ee73ee2d7..3870d968c 100644
--- a/contents+fr.po
+++ b/contents+fr.po
@@ -434,12 +434,14 @@ msgstr ""
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
msgid "# General Statement of Trademark and Copyright"
-msgstr ""
+msgstr "# Énoncé général sur la marque commerciale et le droit d’auteur"
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
msgid "Content on this site is Copyright The Tor Project, Inc.."
msgstr ""
+"Le contenu de ce site est protégé par un droit d’auteur The Tor Project, "
+"Inc.."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
@@ -447,6 +449,9 @@ msgid ""
"Reproduction of content is permitted under a [Creative Commons Attribution "
"3.0 United States License](https://creativecommons.org/licenses/by/3.0/us/)."
msgstr ""
+"La reproduction du contenu est autorisée sous licence [Creative Commons "
+"Attribution 3.0 États-"
+"Unis](https://creativecommons.org/licenses/by/3.0/us/deed.fr/)."
#: https//www.torproject.org/about/trademark/
#: (content/about/trademark/contents+en.lrtrademark.body)
commit 36a3ca247796638bbdf1f82f4c29d562ac3229fc
Author: Damian Johnson <atagar(a)torproject.org>
Date: Wed Nov 20 14:09:33 2019 -0800
Test and fix key blinding with python 3.x
Each key blinding takes a couple seconds so I avoided it in our unit tests, but
we should perform one instance for coverage. Testing with a static key and
fixing the python 3.x normalization issue this surfaced.
---
stem/descriptor/hidden_service.py | 2 +-
stem/util/slow_ed25519.py | 13 +++++++++++--
test/unit/descriptor/hidden_service_v3.py | 20 ++++++++++++++++++++
3 files changed, 32 insertions(+), 3 deletions(-)
diff --git a/stem/descriptor/hidden_service.py b/stem/descriptor/hidden_service.py
index de98c9cf..94edeba4 100644
--- a/stem/descriptor/hidden_service.py
+++ b/stem/descriptor/hidden_service.py
@@ -924,7 +924,7 @@ class HiddenServiceDescriptorV3(BaseHiddenServiceDescriptor):
::
- HiddenServiceDescriptorV3(blinding_nonce = os.urandom(32))
+ HiddenServiceDescriptorV3.create(blinding_nonce = os.urandom(32))
:param dict attr: keyword/value mappings to be included in plaintext descriptor
:param list exclude: mandatory keywords to exclude from the descriptor, this
diff --git a/stem/util/slow_ed25519.py b/stem/util/slow_ed25519.py
index 9e9864d2..b23bf57c 100644
--- a/stem/util/slow_ed25519.py
+++ b/stem/util/slow_ed25519.py
@@ -11,12 +11,21 @@
# https://github.com/pyca/cryptography/issues/5068
import hashlib
+import stem.prereq
b = 256
q = 2 ** 255 - 19
l = 2 ** 252 + 27742317777372353535851937790883648493
+def int_to_byte(val):
+ """
+ Convert an integer to its byte value in an interpreter agnostic way.
+ """
+
+ return bytes([val]) if stem.prereq.is_python_3() else chr(val)
+
+
def H(m):
return hashlib.sha512(m).digest()
@@ -84,7 +93,7 @@ def scalarmult(P, e):
def encodeint(y):
bits = [(y >> i) & 1 for i in range(b)]
- return b''.join([chr(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b // 8)])
+ return b''.join([int_to_byte(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b // 8)])
def encodepoint(P):
@@ -92,7 +101,7 @@ def encodepoint(P):
y = P[1]
bits = [(y >> i) & 1 for i in range(b - 1)] + [x & 1]
- return b''.join([chr(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b // 8)])
+ return b''.join([int_to_byte(sum([bits[i * 8 + j] << j for j in range(8)])) for i in range(b // 8)])
def bit(h, i):
diff --git a/test/unit/descriptor/hidden_service_v3.py b/test/unit/descriptor/hidden_service_v3.py
index 9ef2f0bf..715a2b65 100644
--- a/test/unit/descriptor/hidden_service_v3.py
+++ b/test/unit/descriptor/hidden_service_v3.py
@@ -459,3 +459,23 @@ class TestHiddenServiceDescriptorV3(unittest.TestCase):
inner_layer = desc.decrypt(onion_address)
self.assertEqual(3, len(inner_layer.introduction_points))
self.assertEqual('1.1.1.1', inner_layer.introduction_points[0].link_specifiers[0].address)
+
+ @test.require.ed25519_support
+ def test_blinding(self):
+ """
+ Create a descriptor with key blinding. `This takes a while
+ <https://github.com/pyca/cryptography/issues/5068>`_, so we should not do
+ this more than once.
+ """
+
+ from cryptography.hazmat.primitives.asymmetric.ed25519 import Ed25519PrivateKey
+
+ expected_blinded_key = b'\xb5\xefEA\xfaI\x1a\xd8*p\xcd\x97\x01\x90O\xa8p\xd3\x10\x16\x8e-\x19\xab+\x92\xbc\xf6\xe7\x92\xc2k'
+
+ desc = HiddenServiceDescriptorV3.create(
+ identity_key = Ed25519PrivateKey.from_private_bytes(b'a' * 32),
+ blinding_nonce = b'a' * 32,
+ )
+
+ self.assertEqual(64, len(desc.signing_cert.signature))
+ self.assertEqual(expected_blinded_key, desc.signing_cert.signing_key())
commit 5d8c76860a2aa2de29d054cfc29a520a73b7f9fc
Author: Philipp Winter <phw(a)nymity.ch>
Date: Wed Nov 20 13:23:30 2019 -0800
Update instructions to match new docker workflow.
---
.../technical-setup/bridge/docker/contents.lr | 47 ++++++++++++----------
1 file changed, 26 insertions(+), 21 deletions(-)
diff --git a/content/relay-operations/technical-setup/bridge/docker/contents.lr b/content/relay-operations/technical-setup/bridge/docker/contents.lr
index f401b1e..ebc4b97 100644
--- a/content/relay-operations/technical-setup/bridge/docker/contents.lr
+++ b/content/relay-operations/technical-setup/bridge/docker/contents.lr
@@ -6,37 +6,42 @@ title: Docker
---
body:
-We are maintaining a docker container that runs an obfs4 bridge. This guide
-walks you through setting up this container. First, download the container:
+### 1. Install the container
+
+We are maintaining a docker container that runs an obfs4 bridge. First,
+download the container:
```
docker pull phwinter/obfs4-bridge:latest
```
-Now, it's time to run the container. You can choose between two options:
+### 2. Deploy the container
+
+We provide a Makefile that makes it easy to deploy the container. First,
+[download the
+Makefile](https://dip.torproject.org/torproject/anti-censorship/docker-obfs4-bridge/raw/master/Makefile),
+and then run:
-1. We maintain a script that determines a free OR and obfs4 port for you, and
- then runs the docker container.
- [Download the script here](https://dip.torproject.org/torproject/anti-censorship/docker-obfs4-br….
- When running this script, provide your email address as argument:
- ```
- bash deploy-container.sh address(a)email.com
- ```
- The script will tell you what ports it chose, and your container ID. Make
- sure that **both** ports are forwarded in your firewall.
+```
+make deploy OR_PORT=X PT_PORT=Y EMAIL=Z
+```
-2. If you would rather provide your own ports, run the following command and
- replace `XXX` with your OR port, `YYY` with your obfs4 port, and
- `admin(a)example.com` with your email address.
+Replace `X` with your desired OR port, `Y` with your obfs4 port (make sure that
+**both** ports are forwarded in your firewall), and `Z` with your email address,
+which allows us to get in touch with you if there are problems with your bridge.
+If everything worked fine, you should see output similar to the following:
+
+```
+201fbd2b4d28e6f226978f27547edd79272871c5949bf8aab3872c983156a108
+Make sure that port X and Y are forwarded in your firewall.
+```
- ```
- OR_PORT=XXX PT_PORT=YYY EMAIL=admin(a)example.com; docker run -d -e OR_PORT=$OR_PORT -e PT_PORT=$PT_PORT -e EMAIL=$EMAIL -p $OR_PORT:$OR_PORT -p $PT_PORT:$PT_PORT phwinter/obfs4-bridge:latest
- ```
+That's it! Your container (identified by the first line of output) is now
+bootstrapping your new obfs4 bridge.
- Again, make sure that **both** ports are forwarded by your firewall.
+### 3. Monitor your logs
-That's it! Your container should now be bootstrapping your new obfs4 bridge.
-You can inspect its logs by running:
+You can inspect your bridge's logs by running:
```
docker logs CONTAINER_ID