arti/tests/shadow
Gabriela Moldovan 17d965e894
keymgr: Do not expect x25519 keys to be stored as ed25519 ssh keys.
Previously, the Arti key store would store x25519 secret keys as ed25519
OpenSSH keys, which it would convert to x25519 upon loading (using the
conversion function added in !1297 (merged)). This approach isn't good
enough though: most people will probably want to bring their existing
x25519 keys, and in order to store those in OpenSSH format, we'd need
convert them to ed25519, which is impossible (because the secret part of
an x25519 key contains a SHA512'd secret, whereas the corresponding,
"un-expanded", ed25519 secret key contains the secret itself rather than
the SHA).

Now that `ssh-key` has support for ssh keys with [custom algorithm
names], we can store x25519 in OpenSSH format directly. This commit
changes the storage format used by the keymgr for x25519 client auth
keys (from ed25519-ssh to our own custom key type with an algorithm name
of `"x25519@torproject.org"`).

Closes #936

[custom algorithm names]: https://github.com/RustCrypto/SSH/pull/136
2023-08-16 10:43:28 +01:00
..
conf
shadow.data.template/hosts
README.md
run.sh
shadow.yaml

README.md

Shadow-based integration test

This is an integration test for arti that uses the shadow simulator. It creates a simulation of a small Tor network, uses the arti client to perform some transfers across this simulated network, and validates that the transfers succeeded.

Running locally

To run locally, you'll need to install shadow itself somewhere on our PATH, following shadow's installation instructions.

Next you'll need to install executables that will run inside the simulation, in the locations where shadow.yaml expects to find them.

  • Ensure tgen is on your PATH.

  • Ensure tor is on your PATH. Typically you can install it using your host system's package manager.

  • Build the arti client for target x86_64-unknown-linux-gnu, so that the binary is at: ../../target/x86_64-unknown-linux-gnu/debug/arti.

Once those are installed, you can invoke the run.sh script from this directory.