diff options
author | Nick Mathewson <nickm@torproject.org> | 2023-11-09 21:50:10 +0000 |
---|---|---|
committer | Nick Mathewson <nickm@torproject.org> | 2023-11-09 21:50:10 +0000 |
commit | 9205c7a86ffbea46d16f0a13e205100fc3ba1c76 (patch) | |
tree | b71d7302e03fba149b8b389599668f72f97f390f | |
parent | 7e952cdcbb13f2bc2d360994812ff1c39e1011ea (diff) | |
parent | 964a8aca24913d498a2677686e88d96b118ad536 (diff) | |
download | torspec-9205c7a86ffbea46d16f0a13e205100fc3ba1c76.tar.gz torspec-9205c7a86ffbea46d16f0a13e205100fc3ba1c76.zip |
Merge branch 'mermaid2' into 'main'
Improved mermaid branch, with server-side rendering.
See merge request tpo/core/torspec!207
-rw-r--r-- | .gitlab-ci.yml | 31 | ||||
-rwxr-xr-x | bin/build_html | 63 | ||||
-rw-r--r-- | bin/ci-puppeteer-config.json | 3 | ||||
-rwxr-xr-x | bin/mermaid-cli-in-ci | 52 | ||||
-rwxr-xr-x | bin/mermaid_cvt_svg | 25 | ||||
-rw-r--r-- | bin/puppeteer-cache-expect-listings | 289 | ||||
-rwxr-xr-x | bin/via-yarn-install-in-ci | 59 | ||||
-rw-r--r-- | mdbook/proposals/mermaid-init.js | 1 | ||||
-rw-r--r-- | mdbook/spec/book.toml | 4 | ||||
-rw-r--r-- | mdbook/spec/mermaid-init.js | 1 | ||||
-rw-r--r-- | spec/guard-spec/algorithm.md | 33 | ||||
-rw-r--r-- | spec/tor-spec/negotiating-channels.md | 20 |
12 files changed, 554 insertions, 27 deletions
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml index bb2dec4..06942af 100644 --- a/.gitlab-ci.yml +++ b/.gitlab-ci.yml @@ -4,9 +4,26 @@ variables: build: image: rust:bookworm + rules: + # We install mermaid-cli only when we are building for the + # actual website, since it is pretty expensive. If we switch to + # faster install tool, we should revisit that. + - if: '$CI_PROJECT_ROOT_NAMESPACE == "tpo" && $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH' + variables: + MMDC: mmdc -p bin/ci-puppeteer-config.json + # ^ See note + # But we _do_ want to build unconditionally. + - when: always script: - - ./bin/via-cargo-install-in-ci mdbook + - env - apt-get update && apt-get install -y git python3 python3-yaml + - ./bin/via-cargo-install-in-ci mdbook + - | + if test "$MMDC" != "" ; then + ./bin/mermaid-cli-in-ci + else + ./bin/via-cargo-install-in-ci mdbook-mermaid + fi - ./bin/check_index - ./bin/build_html - mv html public @@ -17,11 +34,19 @@ build: paths: - cache +# Note re MMDC above: +# https://github.com/mermaid-js/mermaid-cli/blob/HEAD/docs/linux-sandbox-issue.md +# +# bin/ is the wrong place for that file +# but I don't want to rename all of bin/ to maint/ right now. + link-check: image: rust:bookworm + rules: + - when: always script: - - ./bin/via-cargo-install-in-ci mdbook - apt-get update && apt-get install -y git python3 python3-yaml linklint + - ./bin/via-cargo-install-in-ci mdbook - ./bin/build_html - ./bin/check_links artifacts: @@ -43,4 +68,4 @@ include: # request. pages: rules: - - if: '$CI_PROJECT_ROOT_NAMESPACE != "tpo" && $CI_PIPELINE_SOURCE == "merge_request"' + - if: '$CI_PROJECT_ROOT_NAMESPACE != "tpo" && $CI_PIPELINE_SOURCE == "merge_request_event"' diff --git a/bin/build_html b/bin/build_html index 026c525..26fd7d8 100755 --- a/bin/build_html +++ b/bin/build_html @@ -10,8 +10,67 @@ cd "${TOPLEVEL}" ./bin/make_redirects -cd "${TOPLEVEL}/mdbook/spec" +# Now we deal with mermaid diagrams. +# +# This may require changes to the md files in {spec,proposals} +# or to the mdbook.toml files in mdbook/*/. +# We will make a copy of whatever we need to change, +# and then make changes to that copy. +# +# When we are done with these changes, we will set some variables: +# - HTML_OUTPUT_DIR is "", or the location where we have put our output. +# - MDBOOK_DIR is the parent directory of the possibly modified copies +# of mdbook/{spec,proposals}. + +if test -n "${MMDC:-}" || command -v "mmdc" >&/dev/null; then + # CASE 1: mermaid-cli is installed. + # + # We will convert mermaid diagrams to svg. The mermaid_cvt_svg + # script does this with a temporary copy of our markdown directories, + # so as not to alter the original. + # + # (The conversion involves npm and a headless chrome browser, + # to it is understandable that not everybody would want to do it + # this way.) + + TMPDIR=$(mktemp -d "${TOPLEVEL}/tmp_mmdc.XXXXXXXX") + trap 'rm -rf "$TMPDIR"' 0 + ./bin/mermaid_cvt_svg "$TMPDIR" + HTML_OUTPUT_DIR="$TMPDIR/html" + MDBOOK_DIR="$TMPDIR/mdbook" +elif test -n "${MDBOOK_MERMAID:-}" || command -v "mdbook-mermaid" >&/dev/null; then + # CASE 2: mdbook_mermaid is installed. + # + # We will make a temporary copy of the mdbook configuration directory + # only, and use mdbook-mermaid to alter that. + # + # This is much easier to run locally, but it requires that your + # browser has enough client-side javascript in order to run + # mermaid. It doesn't touch npm. + MDBOOK_MERMAID=${MDBOOK_MERMAID:=mdbook-mermaid} + TMPDIR=$(mktemp -d "${TOPLEVEL}/tmp_mdbook_mermaid.XXXXXXXX") + trap 'rm -rf "$TMPDIR"' 0 + cp -r ./mdbook/proposals ./mdbook/spec ./mdbook/theme "$TMPDIR" + mdbook-mermaid install "$TMPDIR/spec" + mdbook-mermaid install "$TMPDIR/proposals" + HTML_OUTPUT_DIR="" + MDBOOK_DIR="$TMPDIR" +else + # CASE 3: No mermaid support. + # + # In this case we run mdbook on our inputs unchanged. + # The mermaid blocks will render as code. + HTML_OUTPUT_DIR="" + MDBOOK_DIR="$TOPLEVEL/mdbook" +fi + +cd "${MDBOOK_DIR}/spec" $MDBOOK build -cd "${TOPLEVEL}/mdbook/proposals" +cd "${MDBOOK_DIR}/proposals" $MDBOOK build + +if test -n "${HTML_OUTPUT_DIR}"; then + rm -rf "${TOPLEVEL}/html" + mv "${HTML_OUTPUT_DIR}" "${TOPLEVEL}/html" +fi diff --git a/bin/ci-puppeteer-config.json b/bin/ci-puppeteer-config.json new file mode 100644 index 0000000..3201af7 --- /dev/null +++ b/bin/ci-puppeteer-config.json @@ -0,0 +1,3 @@ +{ + "args": ["--no-sandbox"] +} diff --git a/bin/mermaid-cli-in-ci b/bin/mermaid-cli-in-ci new file mode 100755 index 0000000..5d6d041 --- /dev/null +++ b/bin/mermaid-cli-in-ci @@ -0,0 +1,52 @@ +#!/usr/bin/env bash + +set -euo pipefail + +set -x + +# Bump this to "clear" the cache. +# Actually, it just causes us to ignore previous cached results. +cache_clear_token=2023-11-09c + +cache_dir=cache/"$CI_JOB_IMAGE","$cache_clear_token","puppeteer" +local_dir="$HOME/.cache/puppeteer" + +if test -d "$cache_dir"; then + mkdir -p "$local_dir"/. + cp -a "$cache_dir"/. "$local_dir"/. +fi + +./bin/via-yarn-install-in-ci mmdc https://github.com/mermaid-js/mermaid-cli \ + bba0240ad87f6fbf44d8a24941e37f4bc2c8bf30 + +( + cd "$local_dir" + find -printf '%y %p %l\n' | sort + find -type f | sort | xargs sha256sum -- +) >puppeteer-cache-got-listings + +# Empirically, the mermaid-cli locked install produced a very old +# chromium today. So I suspect it's not fetching "latest", but a controlled +# version. Nevertheless, we should check that what we got is actually +# the same and hasn't been changed by Google (or something on the way). + +# Doing this now isn't ideal, because I don't actually know if +# the mermaid-cli *install* process runs anything from here. +# But I don't think it runs the main chrome binary, since at one point +# in our tests we got as far as this and then the chrome binary +# failed with due to a missing OS shared library. + +# This expected output listing shouldn't be in bin/ but the best way +# to fix that would be to rename the whole bin directory to maint. +diff -u bin/puppeteer-cache-expect-listings puppeteer-cache-got-listings + +if ! test -d "$cache_dir"; then + mkdir -p "$cache_dir" + cp -a "$local_dir"/. "$cache_dir"/. +fi + +# This is the easiest way to get the shared libraries that chromium +# depends on. Obviously, using the Debian package's dependencies +# is totally wrong, but it works in practice, and we don't have a proper +# dependency list from the binaries from the ad-hoc downloads. +apt-get install -y chromium diff --git a/bin/mermaid_cvt_svg b/bin/mermaid_cvt_svg new file mode 100755 index 0000000..3198a00 --- /dev/null +++ b/bin/mermaid_cvt_svg @@ -0,0 +1,25 @@ +#!/usr/bin/env bash + +set -e -u -o pipefail -x + +TOPLEVEL=$(realpath $(dirname "$0"))/.. +TMPDIR="$1" +: ${MMDC:=mmdc} + +cd "$TOPLEVEL" + +# We make a mirror of the specs, since we will need to make changes to them. +cp -rl spec proposals mdbook "$TMPDIR" + +# We use mermaid-cli to extract the mermaid from any file containing it, +# and generate a new version that uses svg instead. +for fname in $(find "$TMPDIR" -name "*.md") ; do + if grep '^```mermaid' $fname; then + ORIG="${fname%.md}.__orig.md" + mv $fname $ORIG + $MMDC -i $ORIG -o $fname + fi +done + + + diff --git a/bin/puppeteer-cache-expect-listings b/bin/puppeteer-cache-expect-listings new file mode 100644 index 0000000..a5d5783 --- /dev/null +++ b/bin/puppeteer-cache-expect-listings @@ -0,0 +1,289 @@ +d . +d ./chrome +d ./chrome/linux-1108766 +d ./chrome/linux-1108766/chrome-linux +d ./chrome/linux-1108766/chrome-linux/ClearKeyCdm +d ./chrome/linux-1108766/chrome-linux/ClearKeyCdm/_platform_specific +d ./chrome/linux-1108766/chrome-linux/ClearKeyCdm/_platform_specific/linux_x64 +d ./chrome/linux-1108766/chrome-linux/MEIPreload +d ./chrome/linux-1108766/chrome-linux/locales +d ./chrome/linux-1108766/chrome-linux/resources +d ./chrome/linux-1108766/chrome-linux/resources/inspector_overlay +f ./chrome/linux-1108766/chrome-linux/ClearKeyCdm/_platform_specific/linux_x64/libclearkeycdm.so +f ./chrome/linux-1108766/chrome-linux/MEIPreload/manifest.json +f ./chrome/linux-1108766/chrome-linux/MEIPreload/preloaded_data.pb +f ./chrome/linux-1108766/chrome-linux/chrome +f ./chrome/linux-1108766/chrome-linux/chrome-wrapper +f ./chrome/linux-1108766/chrome-linux/chrome_100_percent.pak +f ./chrome/linux-1108766/chrome-linux/chrome_200_percent.pak +f ./chrome/linux-1108766/chrome-linux/chrome_crashpad_handler +f ./chrome/linux-1108766/chrome-linux/chrome_sandbox +f ./chrome/linux-1108766/chrome-linux/icudtl.dat +f ./chrome/linux-1108766/chrome-linux/libEGL.so +f ./chrome/linux-1108766/chrome-linux/libGLESv2.so +f ./chrome/linux-1108766/chrome-linux/libvk_swiftshader.so +f ./chrome/linux-1108766/chrome-linux/libvulkan.so.1 +f ./chrome/linux-1108766/chrome-linux/locales/af.pak +f ./chrome/linux-1108766/chrome-linux/locales/af.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/am.pak +f ./chrome/linux-1108766/chrome-linux/locales/am.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ar-XB.pak +f ./chrome/linux-1108766/chrome-linux/locales/ar-XB.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ar.pak +f ./chrome/linux-1108766/chrome-linux/locales/ar.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/bg.pak +f ./chrome/linux-1108766/chrome-linux/locales/bg.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/bn.pak +f ./chrome/linux-1108766/chrome-linux/locales/bn.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ca.pak +f ./chrome/linux-1108766/chrome-linux/locales/ca.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/cs.pak +f ./chrome/linux-1108766/chrome-linux/locales/cs.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/da.pak +f ./chrome/linux-1108766/chrome-linux/locales/da.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/de.pak +f ./chrome/linux-1108766/chrome-linux/locales/de.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/el.pak +f ./chrome/linux-1108766/chrome-linux/locales/el.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/en-GB.pak +f ./chrome/linux-1108766/chrome-linux/locales/en-GB.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/en-US.pak +f ./chrome/linux-1108766/chrome-linux/locales/en-US.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/en-XA.pak +f ./chrome/linux-1108766/chrome-linux/locales/en-XA.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/es-419.pak +f ./chrome/linux-1108766/chrome-linux/locales/es-419.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/es.pak +f ./chrome/linux-1108766/chrome-linux/locales/es.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/et.pak +f ./chrome/linux-1108766/chrome-linux/locales/et.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/fa.pak +f ./chrome/linux-1108766/chrome-linux/locales/fa.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/fi.pak +f ./chrome/linux-1108766/chrome-linux/locales/fi.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/fil.pak +f ./chrome/linux-1108766/chrome-linux/locales/fil.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/fr.pak +f ./chrome/linux-1108766/chrome-linux/locales/fr.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/gu.pak +f ./chrome/linux-1108766/chrome-linux/locales/gu.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/he.pak +f ./chrome/linux-1108766/chrome-linux/locales/he.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/hi.pak +f ./chrome/linux-1108766/chrome-linux/locales/hi.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/hr.pak +f ./chrome/linux-1108766/chrome-linux/locales/hr.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/hu.pak +f ./chrome/linux-1108766/chrome-linux/locales/hu.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/id.pak +f ./chrome/linux-1108766/chrome-linux/locales/id.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/it.pak +f ./chrome/linux-1108766/chrome-linux/locales/it.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ja.pak +f ./chrome/linux-1108766/chrome-linux/locales/ja.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/kn.pak +f ./chrome/linux-1108766/chrome-linux/locales/kn.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ko.pak +f ./chrome/linux-1108766/chrome-linux/locales/ko.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/lt.pak +f ./chrome/linux-1108766/chrome-linux/locales/lt.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/lv.pak +f ./chrome/linux-1108766/chrome-linux/locales/lv.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ml.pak +f ./chrome/linux-1108766/chrome-linux/locales/ml.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/mr.pak +f ./chrome/linux-1108766/chrome-linux/locales/mr.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ms.pak +f ./chrome/linux-1108766/chrome-linux/locales/ms.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/nb.pak +f ./chrome/linux-1108766/chrome-linux/locales/nb.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/nl.pak +f ./chrome/linux-1108766/chrome-linux/locales/nl.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/pl.pak +f ./chrome/linux-1108766/chrome-linux/locales/pl.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/pt-BR.pak +f ./chrome/linux-1108766/chrome-linux/locales/pt-BR.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/pt-PT.pak +f ./chrome/linux-1108766/chrome-linux/locales/pt-PT.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ro.pak +f ./chrome/linux-1108766/chrome-linux/locales/ro.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ru.pak +f ./chrome/linux-1108766/chrome-linux/locales/ru.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/sk.pak +f ./chrome/linux-1108766/chrome-linux/locales/sk.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/sl.pak +f ./chrome/linux-1108766/chrome-linux/locales/sl.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/sr.pak +f ./chrome/linux-1108766/chrome-linux/locales/sr.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/sv.pak +f ./chrome/linux-1108766/chrome-linux/locales/sv.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/sw.pak +f ./chrome/linux-1108766/chrome-linux/locales/sw.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ta.pak +f ./chrome/linux-1108766/chrome-linux/locales/ta.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/te.pak +f ./chrome/linux-1108766/chrome-linux/locales/te.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/th.pak +f ./chrome/linux-1108766/chrome-linux/locales/th.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/tr.pak +f ./chrome/linux-1108766/chrome-linux/locales/tr.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/uk.pak +f ./chrome/linux-1108766/chrome-linux/locales/uk.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/ur.pak +f ./chrome/linux-1108766/chrome-linux/locales/ur.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/vi.pak +f ./chrome/linux-1108766/chrome-linux/locales/vi.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/zh-CN.pak +f ./chrome/linux-1108766/chrome-linux/locales/zh-CN.pak.info +f ./chrome/linux-1108766/chrome-linux/locales/zh-TW.pak +f ./chrome/linux-1108766/chrome-linux/locales/zh-TW.pak.info +f ./chrome/linux-1108766/chrome-linux/nacl_helper +f ./chrome/linux-1108766/chrome-linux/nacl_helper_bootstrap +f ./chrome/linux-1108766/chrome-linux/nacl_irt_x86_64.nexe +f ./chrome/linux-1108766/chrome-linux/product_logo_48.png +f ./chrome/linux-1108766/chrome-linux/resources.pak +f ./chrome/linux-1108766/chrome-linux/resources/inspector_overlay/inspector_overlay_resources.grd +f ./chrome/linux-1108766/chrome-linux/resources/inspector_overlay/main.js +f ./chrome/linux-1108766/chrome-linux/v8_context_snapshot.bin +f ./chrome/linux-1108766/chrome-linux/vk_swiftshader_icd.json +f ./chrome/linux-1108766/chrome-linux/xdg-mime +f ./chrome/linux-1108766/chrome-linux/xdg-settings +c0b731f77524b864f90bd6ba538880169a1ae2a8ece21a849a752e1c8809ef1d ./chrome/linux-1108766/chrome-linux/ClearKeyCdm/_platform_specific/linux_x64/libclearkeycdm.so +44844cf3dde6e80087ae0e6bf0d9326d7ef7d23326d24ac83af0850be26923d2 ./chrome/linux-1108766/chrome-linux/MEIPreload/manifest.json +c6070a157b4e28d16fbccbd233e93846ddb070c85e1a1bc64469b7a5f1424fad ./chrome/linux-1108766/chrome-linux/MEIPreload/preloaded_data.pb +9fb6757b5c61b28cbdd23a6c17a9acc61da856f812c02dae0b5156c0ee168a48 ./chrome/linux-1108766/chrome-linux/chrome +17b0432a26e628287789f1efa53056384a46b6265939e8bf819b1b6cf8472ada ./chrome/linux-1108766/chrome-linux/chrome-wrapper +7ab09e1609f2dd97cfbfa8988c71575d6abbe329d9c5a0d555b75504d5c4b980 ./chrome/linux-1108766/chrome-linux/chrome_100_percent.pak +2e3fe3b1da0944d3704d1593c73e6ce3e286f8733829138d60a49766b69c03ff ./chrome/linux-1108766/chrome-linux/chrome_200_percent.pak +f429e74163d634d37253d07730adc7651ce68fa16ebf794c1640193f94156392 ./chrome/linux-1108766/chrome-linux/chrome_crashpad_handler +c97779a42a6edebdb6e94ff4836b87444380e4fcb6df007f715cbc3b362231bb ./chrome/linux-1108766/chrome-linux/chrome_sandbox +e185ba581543fe286f1640a579d6f2219c181d95fa76e64f66c5a706f308860a ./chrome/linux-1108766/chrome-linux/icudtl.dat +1647b2a56c450d02dc735f334ee12a6e442e6b2f6dae5ff0f6e4b05efedc9465 ./chrome/linux-1108766/chrome-linux/libEGL.so +2af932a8f93999a0a32b87be6002fe83ca0e4579fc8ddba72a1a150323c38b58 ./chrome/linux-1108766/chrome-linux/libGLESv2.so +fd7894d32ccbaed94672b63e9ff76f970e995f193716271005c581a4a2f3c947 ./chrome/linux-1108766/chrome-linux/libvk_swiftshader.so +a94387cd9baf120b97fce4dcf8569c1a83e99ce85dd41978291b7fff25541aad ./chrome/linux-1108766/chrome-linux/libvulkan.so.1 +323c7a7ca326e7ef582b7034d10f4e81deaf630722cf43d5466b1deb419ec801 ./chrome/linux-1108766/chrome-linux/locales/af.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/af.pak.info +f087f1f2bb83c48016b647799190f0f7f172df2fb5577ae9597ec17071caab90 ./chrome/linux-1108766/chrome-linux/locales/am.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/am.pak.info +5dae1653f48a41abe2869245fd4fbc8a8e415dbfa125942706a6ff039e9a7f0c ./chrome/linux-1108766/chrome-linux/locales/ar-XB.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ar-XB.pak.info +5e22492cd14f8d739d2b14c7c5b0c10ed4f8585b5dddb402f36652d2c990b170 ./chrome/linux-1108766/chrome-linux/locales/ar.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ar.pak.info +dde3b5d59f81d593045518a40be3d9236d3f66a678f5823e342f3f379056858f ./chrome/linux-1108766/chrome-linux/locales/bg.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/bg.pak.info +afb37a07a9fae9cf5d278f0426c047334f24a08c5f52aac76f75f3bfc1957bf6 ./chrome/linux-1108766/chrome-linux/locales/bn.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/bn.pak.info +628c2f24f00ef37ba42af1ecf74136b5620a4f304a1bba9358129ba52f1124b2 ./chrome/linux-1108766/chrome-linux/locales/ca.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ca.pak.info +b5e95d9d94bfdef932f6fcaadf828b000e2f5a3b6d4a7c3a1b8ff1e55f2809aa ./chrome/linux-1108766/chrome-linux/locales/cs.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/cs.pak.info +e5ea8dc83b39971db4bc62616d90c574311ad111ef38269befeff04c76b5a3bb ./chrome/linux-1108766/chrome-linux/locales/da.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/da.pak.info +6983d893c1005c5a91718870b24c9444164427b901dd788435fcc78357a140b2 ./chrome/linux-1108766/chrome-linux/locales/de.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/de.pak.info +e20982ee140a95bd8d440b645b593faab16ddc5a3c41fe40ca3b77243bfbacf8 ./chrome/linux-1108766/chrome-linux/locales/el.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/el.pak.info +0918c68b0c5cd09f0ef1e9cc984fecb8ce79c0d0a509cdac2b77f9c0c29ce143 ./chrome/linux-1108766/chrome-linux/locales/en-GB.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/en-GB.pak.info +b090180d5cd6ebfc25cb245c44156a4b945b52f581725b4184b0e0e5d78ff381 ./chrome/linux-1108766/chrome-linux/locales/en-US.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/en-US.pak.info +7376d5f7cdbb0763efff84f2d8fa546be589577af5291cc629387425ca4e207e ./chrome/linux-1108766/chrome-linux/locales/en-XA.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/en-XA.pak.info +290017770c41c26844032b8a2a1b97f7674653083411e23c12b72cc9ed8f49ea ./chrome/linux-1108766/chrome-linux/locales/es-419.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/es-419.pak.info +a6d11beb2cf80c222d1a62133a6243776d4c379c18392794027ec0e64489af1b ./chrome/linux-1108766/chrome-linux/locales/es.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/es.pak.info +42a74c9af1d7eee8c912c0b06b0439b0082ac453bf247ab044a2dccf8abbe7a5 ./chrome/linux-1108766/chrome-linux/locales/et.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/et.pak.info +5ac624214ee7eded46e70368653f42b15ede5348621d0a57e7e615a56d8c9c05 ./chrome/linux-1108766/chrome-linux/locales/fa.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/fa.pak.info +13c852eb058b37b736df5d87a81ed5370404cdb0c9a5f35d64d6d6ca03eaf013 ./chrome/linux-1108766/chrome-linux/locales/fi.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/fi.pak.info +34572afd7489460793ea95b65e4bd68cb2f70a4873f74f2230fc71865bd514fa ./chrome/linux-1108766/chrome-linux/locales/fil.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/fil.pak.info +4f3760d38ae95943ff8f2b79aa7c7d41b4143cad9ac81fe34080fc0aff66838b ./chrome/linux-1108766/chrome-linux/locales/fr.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/fr.pak.info +01732e407c1ef2ffb678f2e1d8ba47e64b4d7583ba6fc2e3cfa4d40e89b325d9 ./chrome/linux-1108766/chrome-linux/locales/gu.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/gu.pak.info +c191ec5dfc7eee295fe784e529bdf87878dec24d9705ae87a23a0a7be2daf742 ./chrome/linux-1108766/chrome-linux/locales/he.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/he.pak.info +518729e2d63e92b36b146a6017eda1f36d5a1b93c4733509a8d8ed30ad8a2abe ./chrome/linux-1108766/chrome-linux/locales/hi.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/hi.pak.info +7faa324f5deb95621f19401bab3b616bc8f4fc99b1864d8dd02b53f64ff13972 ./chrome/linux-1108766/chrome-linux/locales/hr.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/hr.pak.info +eb99d8d7345da980371850ee26d74b1f98bebf5227a3e2b42fc55621c4ecb826 ./chrome/linux-1108766/chrome-linux/locales/hu.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/hu.pak.info +cd5f6af3d83e9b49b66057b5de4defef8c925c2eea29171d336846c4f1b8c0e2 ./chrome/linux-1108766/chrome-linux/locales/id.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/id.pak.info +aba599aef83877ec43647f17381b5ea677b115573f829fee19b5e95a106d82d2 ./chrome/linux-1108766/chrome-linux/locales/it.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/it.pak.info +77a6f638d6e20c57335b1a419abbd5419a45b996f20a8b247f8323f95d8b8a7d ./chrome/linux-1108766/chrome-linux/locales/ja.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ja.pak.info +4251e497322a09eb9d11fcdeb79eacbd1d5ca738824b6efa41c20742bf05e041 ./chrome/linux-1108766/chrome-linux/locales/kn.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/kn.pak.info +9cbf60872e4853badc62264af46de01f3700049f72d40412b805c1f2f0fc1c1d ./chrome/linux-1108766/chrome-linux/locales/ko.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ko.pak.info +a54f4825d04fef04066c88e3a1cfe2e014551cbfb19d4de3df71e38b118aec54 ./chrome/linux-1108766/chrome-linux/locales/lt.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/lt.pak.info +f23f05077da21b8c811b60181389c15fddffd41327c36fe0c6e7a691fa9433d2 ./chrome/linux-1108766/chrome-linux/locales/lv.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/lv.pak.info +6b1f3aad63a2152ae7343c6c20fe4f77f1eeb973ba957893feece942ba88e54a ./chrome/linux-1108766/chrome-linux/locales/ml.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ml.pak.info +c55c1e54776346c536abd431e289c467a01ba963a93ee2ff1845a150b207c744 ./chrome/linux-1108766/chrome-linux/locales/mr.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/mr.pak.info +2a7f4e67717d25e9ccc74d16cfb1bab5dd18eaf16d8771d80fe38b226ec2ad5a ./chrome/linux-1108766/chrome-linux/locales/ms.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ms.pak.info +2971e09f96b9249b74ad8be35d777516fe1e49ae8ee8099935a40280105ff759 ./chrome/linux-1108766/chrome-linux/locales/nb.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/nb.pak.info +c6df365597b3dd966ba84e6cd0d7fc4027a520ff85b36a47da9ed61e2b3a994a ./chrome/linux-1108766/chrome-linux/locales/nl.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/nl.pak.info +ce50ebb59577f58a81444d074bb3602badf7df026c8a778333870647e9b54b52 ./chrome/linux-1108766/chrome-linux/locales/pl.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/pl.pak.info +30d3eae85ccb68a513f49981c5dd8b67d4a42ea4c330016cbe30e37ee38e0a1d ./chrome/linux-1108766/chrome-linux/locales/pt-BR.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/pt-BR.pak.info +bdcfdb657a204904faef4c2f627954dab097702e1dfd2e3e15971bb4d959c843 ./chrome/linux-1108766/chrome-linux/locales/pt-PT.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/pt-PT.pak.info +d67a006273ce46f0c5ba724efe2c1bdf7943e88a9d88c7563421c31d14ba42a9 ./chrome/linux-1108766/chrome-linux/locales/ro.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ro.pak.info +723a919b66af7e2c428e4724376237fce747a47a9a0128810132f9f0b07d64ba ./chrome/linux-1108766/chrome-linux/locales/ru.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ru.pak.info +de81e6beb671141293605e396ba0992cc040ad8d2b4a9a019f60a2e40c954562 ./chrome/linux-1108766/chrome-linux/locales/sk.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/sk.pak.info +16eee255672f7803ae9b282ce9d3aab6a29797a8ce1c787f949ab208a1f35352 ./chrome/linux-1108766/chrome-linux/locales/sl.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/sl.pak.info +01b9a0a613d1d7504e90f9a523a90102d245f999ee8ff93d284c4186e6c2f463 ./chrome/linux-1108766/chrome-linux/locales/sr.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/sr.pak.info +b8f738b3b5f334230f7ac8849a4eef3d77862e54202728e0c5608426b4add140 ./chrome/linux-1108766/chrome-linux/locales/sv.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/sv.pak.info +4d7a3154fa0dbafefb96ef1fff1f60563a16de55deccfd11f2c5d3f733e29d0a ./chrome/linux-1108766/chrome-linux/locales/sw.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/sw.pak.info +2dde4957d13101ade6f393a88332f8fc774f0565c73ece361f2f1ad12be235a2 ./chrome/linux-1108766/chrome-linux/locales/ta.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ta.pak.info +331489c0918c2b105b1112cdd620eba4af78bc80284730ed0c5691685be622fe ./chrome/linux-1108766/chrome-linux/locales/te.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/te.pak.info +e04402b90dd5bbae71b68f85c834247c46eead0bcf0ac1996f4cc191f204d0c0 ./chrome/linux-1108766/chrome-linux/locales/th.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/th.pak.info +fef2df11ed39c4f0f1687d49ff60b97d07513e03f9ff56ebe09ef088d7918473 ./chrome/linux-1108766/chrome-linux/locales/tr.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/tr.pak.info +7a90a56c50fdc2a9add8c2399c18cc97f4af00d6ad067990f5758158987af6f2 ./chrome/linux-1108766/chrome-linux/locales/uk.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/uk.pak.info +599d28b9b15b4a7e49a6747899310b919a5a05c428e7fb8e62fd67498ce46cdb ./chrome/linux-1108766/chrome-linux/locales/ur.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/ur.pak.info +858a3ace87bff36cd4dc1532ad95626b061fa2af07dff40d896f266facc46ca7 ./chrome/linux-1108766/chrome-linux/locales/vi.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/vi.pak.info +27d1f81e8302bd24bdaaf39ec9734e732f812644cf24cf282c86851bd1a4ee1a ./chrome/linux-1108766/chrome-linux/locales/zh-CN.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/zh-CN.pak.info +72fa334fe28ab855115c32d9005c34620115960c0fc1e3709c2fb6e9e53d6976 ./chrome/linux-1108766/chrome-linux/locales/zh-TW.pak +cb87a868d66f88bb0479c20536bf22ec93dd0bd775a88c57777d27dd9a128add ./chrome/linux-1108766/chrome-linux/locales/zh-TW.pak.info +a20f2ff7a775859e2493c9fc4118080b5d31c2b28c4e79c08255f7d0e411a12b ./chrome/linux-1108766/chrome-linux/nacl_helper +2bb2fa72fab83a34dfa6690973177d3537a3a946300d66ede276c8b6de2cbec7 ./chrome/linux-1108766/chrome-linux/nacl_helper_bootstrap +17dcbaeb7337547b75884c44bd38377dccf36b444c6cab9a740cf0aef1b7abf5 ./chrome/linux-1108766/chrome-linux/nacl_irt_x86_64.nexe +21b2927bb47d305bbda718b9c08c6b51fbc0597454587978ea0046bc595393fb ./chrome/linux-1108766/chrome-linux/product_logo_48.png +64b6feb043f51c13b25b5b72290bf30ec48c4181ed9716b1b4bee76a7c0f55ba ./chrome/linux-1108766/chrome-linux/resources.pak +68760fc7002c3999d3b2ac6eb80febe28182134a0dd1d53829f660b3d96bc9ef ./chrome/linux-1108766/chrome-linux/resources/inspector_overlay/inspector_overlay_resources.grd +cd1db1a3000b7397c4232bcc2c05b9fa436c25f0c00aaab683d448b325588256 ./chrome/linux-1108766/chrome-linux/resources/inspector_overlay/main.js +46639e627710cf843878115db26b97da94678782a8a0d109a5c29ac04b6b0d9e ./chrome/linux-1108766/chrome-linux/v8_context_snapshot.bin +c9eef28b6b984fec220ef0abfecc40b502d46946706e47bfe97707027cb818bd ./chrome/linux-1108766/chrome-linux/vk_swiftshader_icd.json +ad2d5802bb3604daa849ce5ac86a81acf7548c8ffd10ab4ecae1d56a5f10d63b ./chrome/linux-1108766/chrome-linux/xdg-mime +442777b1f7d206c5ff661fea00dc1a8319df6256feccc54f186f6edacf235801 ./chrome/linux-1108766/chrome-linux/xdg-settings diff --git a/bin/via-yarn-install-in-ci b/bin/via-yarn-install-in-ci new file mode 100755 index 0000000..5aa9fcb --- /dev/null +++ b/bin/via-yarn-install-in-ci @@ -0,0 +1,59 @@ +#!/usr/bin/env bash + +set -euo pipefail + +set -x + +# usage: +# bin/via-yarn-install-in-ci COMMAND GIT-URL-FOR-PACKAGE COMMITID +# +# We demand a commitid to mitigate the security risks of npm + +command="$1" +git_url="$2" +commitid="$3" + +# Bump this to "clear" the cache. +# Actually, it just causes us to ignore previous cached results. +cache_clear_token=2023-11-09c + +cache_dir=cache/"$CI_JOB_IMAGE","$cache_clear_token","$command","$commitid" +local_dir="yarn-build,$command" + +mkdir -p "$local_dir" + +if test -d "$cache_dir"/; then + cp -al "$cache_dir"/. "$local_dir"/. + + type -p node || apt-get install -y nodejs +else + + if [ -z "${YARN-}" ]; then + type -p yarnpkg || apt-get install -y yarnpkg + YARN=yarnpkg + fi + + cd "$local_dir" + git clone "$git_url" "$command".git + cd "$command".git + git config advice.detachedHead false + git checkout "$commitid" + + : ----- invoke yarn to build "$command": running ----- + $YARN install --frozen-lockfile --non-interactive + : ----- invoke yarn to build "$command": complete ----- + + cd ../.. + ls -al "$PWD"/"$local_dir"/"$command".git/src/cli.js + + mkdir -p "$cache_dir" + cp -al "$local_dir"/. "$cache_dir"/. +fi + +# We abuse $CARGO_HOME/bin. +# The rust: CI images we're using have that on PATH. +# If one were to run this outside CI, putting a symlink +# to some NPM thing in ~/.cargo/bin doesn't seem terrible. + +ln -s "$PWD"/"$local_dir"/"$command".git/src/cli.js \ + "$CARGO_HOME"/bin/"$command" diff --git a/mdbook/proposals/mermaid-init.js b/mdbook/proposals/mermaid-init.js new file mode 100644 index 0000000..313a6e8 --- /dev/null +++ b/mdbook/proposals/mermaid-init.js @@ -0,0 +1 @@ +mermaid.initialize({startOnLoad:true}); diff --git a/mdbook/spec/book.toml b/mdbook/spec/book.toml index 48b9aef..b85e320 100644 --- a/mdbook/spec/book.toml +++ b/mdbook/spec/book.toml @@ -8,12 +8,10 @@ title = "Tor Specifications" [build] build-dir = "../../html" -# [preprocessor.pagetoc] +[preprocessor] [output.html] theme = "../theme" -# additional-css = ["theme/pagetoc.css"] -# additional-js = ["theme/pagetoc.js"] [output.html.redirect] diff --git a/mdbook/spec/mermaid-init.js b/mdbook/spec/mermaid-init.js new file mode 100644 index 0000000..313a6e8 --- /dev/null +++ b/mdbook/spec/mermaid-init.js @@ -0,0 +1 @@ +mermaid.initialize({startOnLoad:true}); diff --git a/spec/guard-spec/algorithm.md b/spec/guard-spec/algorithm.md index 0eaeb0e..1db72f5 100644 --- a/spec/guard-spec/algorithm.md +++ b/spec/guard-spec/algorithm.md @@ -350,24 +350,21 @@ The per-circuit state machine is: closed. ```mermaid ---- -title: Circuit state transitions ---- - -[*] -> usable_on_completion -[*] -> usable_if_no_better_guard -usable_on_completion -> complete -usable_on_completion -> failed -usable_if_no_better_guard -> usable_on_completion -usable_if_no_better_guard -> waiting_for_better_guard -usable_if_no_better_guard -> failed -waiting_for_better_guard -> complete -waiting_for_better_guard -> failed -waiting_for_better_guard -> closed -complete -> failed -complete -> closed -failed -> [*] -closed -> [*] +stateDiagram-v2 + [*] --> usable_on_completion + [*] --> usable_if_no_better_guard + usable_on_completion --> complete + usable_on_completion --> failed + usable_if_no_better_guard --> usable_on_completion + usable_if_no_better_guard --> waiting_for_better_guard + usable_if_no_better_guard --> failed + waiting_for_better_guard --> complete + waiting_for_better_guard --> failed + waiting_for_better_guard --> closed + complete --> failed + complete --> closed + failed --> [*] + closed --> [*] ``` <!-- TODO: The above diagram does not yet render. Fix that. --> diff --git a/spec/tor-spec/negotiating-channels.md b/spec/tor-spec/negotiating-channels.md index c328e12..1184fd8 100644 --- a/spec/tor-spec/negotiating-channels.md +++ b/spec/tor-spec/negotiating-channels.md @@ -22,7 +22,7 @@ In brief: to establish clock skew and IP addresses. - The initiator checks whether the CERTS cell is correct, and decides whether to authenticate. - - If the initiator does not wants to authenticate, + - If the initiator does not wants to authenticate, it sends a [NETINFO cell](#NETINFO-cells). - If the initiator wants to authenticate, it sends a [CERTS cell](#CERTS-cells), @@ -38,6 +38,24 @@ except for VPADDING cells. by scanning-resistance designs. It is not specified here.) +```mermaid +sequenceDiagram + Initiator --> Responder: TLS Handshake + + Note over Initiator,Responder: The rest is encrypted + + Initiator ->> Responder: VERSIONS + Responder ->> Initiator: VERSIONS, CERTS, AUTH_CHALLENGE, NETINFO + + opt if the initiator wants to authenticate + Initiator ->> Responder: CERTS, AUTHENTICATE + end + + Initiator ->> Responder: NETINFO +``` + + + ## The TLS handshake {#tls} <span id="in-protocol">The |