tor/scripts
David Goulet 3835a3acf5 sendme: Properly record SENDMEs on both edges
Turns out that we were only recording the "b_digest" but to have
bidirectionnal authenticated SENDMEs, we need to use the "f_digest" in the
forward cell situation.

Because of the cpath refactoring, this commit plays with the crypt_path_ and
relay_crypto_t API a little bit in order to respect the abstractions.

Previously, we would record the cell digest as the SENDME digest in the
decrypt cell function but to avoid code duplication (both directions needs to
record), we now do that right after iff the cell is recognized (at the edge).
It is now done in circuit_receive_relay_cell() instead.

We now also record the cell digest as the SENDME digest in both relay cell
encryption functions since they are split depending on the direction.
relay_encrypt_cell_outbound() and relay_encrypt_cell_inbound() need to
consider recording the cell digest depending on their direction (f vs b
digest).

Fixes #30428

Signed-off-by: David Goulet <dgoulet@torproject.org>
2019-05-22 11:47:20 -04:00
..
coccinelle Coccinelle scripts for control.c refactor 2019-04-30 13:18:46 -05:00
codegen Bump copyright date to 2019 2019-01-16 12:33:22 -05:00
git Merge branch 'tor-github/pr/930' 2019-04-24 09:39:32 -04:00
maint sendme: Properly record SENDMEs on both edges 2019-05-22 11:47:20 -04:00
test cov-diff: better handle the case where a file stops having coverage 2019-02-08 11:22:55 -05:00
README Add scripts/test/chutney-git-bisect.sh, for bisecting using chutney 2018-08-24 12:46:04 +10:00

The scripts directory holds tools for use in building, generating, testing,
and maintaining the Tor source code.  It is mainly for use by developers.

Code maintenance scripts
------------------------

maint/checkLogs.pl -- Verify that Tor log statements are unique.

maint/check_config_macros.pl -- Look for autoconf tests whose results are
never used.

maint/checkOptionDocs.pl -- Make sure that Tor options are documented in the
manpage, and that the manpage only documents real Tor options.

maint/checkSpaces.pl -- Style checker for the Tor source code.  Mainly checks
whitespace.

maint/findMergedChanges.pl -- Find a set of changes/* files that have been
merged into an upstream version.

maint/format_changelog.py -- Flow the changelog into the proper format.

maint/redox.py -- Find places that should have DOCDOC comments to indicate a
need for doxygen comments, and put those comments there.

maint/updateVersions.pl -- Update the version number in the .nsi and windows
orconfig.h files.


Testing scripts
---------------

test/chutney-git-bisect.sh -- a git bisect run script that bisects using
chutney. The script builds tor and tor-gencert, then runs chutney. The script
takes optional arguments for out-of-tree builds, and specific chutney network
flavours. You should copy this script before using it with git bisect, so that
it doesn't change (or disappear) during bisection.

test/cov-blame -- Mash up the results of gcov with git blame.  Mainly useful
to find out who has been writing untested code.

test/cov-diff -- Compare two directories of gcov files to identify changed
lines without coverage.

test/coverage -- Generates a directory full of gcov files. You need to use
this script instead of calling gcov directly because of our confusingly named
object files.

test/scan-build.sh -- Example script for invoking clang's scan-build
static analysis tools.


Code generation scripts
-----------------------

codegen/gen_linux_syscalls.pl -- Generate a table mapping linux syscall
numbers to their names.

codegen/gen_server_ciphers.py -- Generate a sorted list of TLS ciphersuites
for servers to choose from.

codegen/get_mozilla_ciphers.py -- Generate a list of TLS ciphersuites for
clients to use in order to look like Firefox.

Code transformation scripts
---------------------------

coccinelle/calloc.cocci -- Transform code to replace variants of
malloc(a*b) with calloc(a,b)