| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
I'm going to want to reuse this, and it makes the code clearer at the
one call site already.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add the key material to `struct Ipt`, and add some code to generate
it.
However, this is all rather unsatisfactory. I got a bit lost in the
maze of 25519 key types, and neded up making a provisional dummy
`NtorKeyPair` type, which will need to be deleted again.
And, I wasn't able to generate K_hs_ipt_sid because of a mismatch in
Rng traits, which seems to be caused by us not properly wrapping up
the underlying crypto key types ?
At least the warts seem to be fairly localised.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Replace the publish_set closure (whose body is just TODOs right now)
with a proper function.
Change the type of the publication set to be Option<publish::IptSet>,
like the publisher now wants.
The value of the enum IptSetStatus is now no longer reified; instead,
these situations are the three branches of an if, and described in
comments.
|
| | | |
| | |
| | |
| | |
| | |
| | | |
Previous code review comments suggested this variable would be better
with a name that more clearly distinguished it from (say) something
containing `Relay`s.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Add the expiry time (as wall clock time) to publish::IptSet.
The manager is in a good position to know this information.
Provide constants that will be used (for now) for actually calculating
the expiry times.
(Right now the part where the expiry time would actually be calculated
doesn't exist, but it will come soon.)
|
| | | |
| | |
| | |
| | |
| | | |
This is to implement the "Unknown" state described in
"hssvc-ipt-algorithms.md".
|
| | | |
| | |
| | |
| | | |
This function *does* take the new introduction points as an argument!
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
new_intro_points may be called even if they're actually all the same.
(We have decided that it is the publisher which is responsible for
eliding no-change updates: see the TODO HSS in publish/reactor.rs
on Reactor, near l.50.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Move ipt_mgr::IptSetToPublish to be publish::IptSet, and use it
everywhere appropriate.
Define descriptor::Ipt to be an IntroPointDesc from tor_netdoc.
The manager will have all the information to produce these,
so it will be convenient to simply hand them, pre-canned, to the
publisher.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | | |
The establisher has a netdir; the manager generally doesn't. So it
will be convenient for the establisher to provide the linkspecs and so
on.
|
| |\ \ \
| |_|/
|/| |
| | |
| | |
| | |
| | | |
tor-proto: Make HopNum indices appear 1-based in the Display impl.
Closes #996
See merge request tpo/core/arti!1548
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This removes the `Display` impl of `HopNum` and replaces its usage with
`HopNum::display`.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This function can be used to display a more user-friendly representation
of a `HopNum`. This will print hop numbers as 1-indexed values: #1,
#2, etc..
We will soon remove HopNum's Display implementation in favour of
`.display()`.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This makes `HopNum`s display as 1-indexed values. This will make error
messages more intuitive, because when talking about an N-hop circuit, we
generally speak in terms of hops 1..N (rather than 0..N-1).
Internally, our `HopNum` indices are still 0-based.
Closes #996
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
Update CI to use Debian bookworm instead of bullseye
See merge request tpo/core/arti!1554
|
| | | | | |
|
| | | | |
| | | |
| | | |
| | | | |
Workaround for https://github.com/shadow/tgen/issues/44
|
| |\ \ \ \
| |/ / /
|/| | /
| | |/
| |/| |
tor-netdir: Support for selecting HS intro points
See merge request tpo/core/arti!1550
|
| | | |
| | |
| | |
| | | |
Apply erroneous formatting as demanded by rustfmt.
|
| | | | |
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Call site as per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1550#note_2936401
Plus a TODO comment with an opinion from me about this API.
(Note not a TODO HSS so this is on the back burner.)
|
| | | |
| | |
| | |
| | |
| | | |
As per
https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/1550#note_2936400
|
| | | | |
|
| | | |
| | |
| | |
| | | |
Worsify formatting as demanded by rustfmt.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
I doubt this would work yet because it will probably crash at startup
due to the unhandled error case.
Handling the error case would have a conflict with !1549 so let's do
that later.
|
| | | |
| | |
| | |
| | |
| | | |
This seems logically necessary, and I want to use it in intro point
selection.
|
| |/ /
| |
| |
| |
| |
| | |
I'm quite unsure about this. Hence the TODOs.
I think the API is right, though.
|
| |\ \
| | |
| | |
| | |
| | | |
tor-hsservice: ipt mgr: Split up idempotently_progress_things_now
See merge request tpo/core/arti!1549
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
Break publication out of this function, which was rather long.
This does seem to make conceptual sense, now I've done it. For
example, note how the 2nd half didn't need &mut self, and so doesn't
ever `return CONTINUE;`
|
| |\ \ \
| | | |
| | | |
| | | |
| | | | |
hashx: Additional perf work and cleanup
See merge request tpo/core/arti!1555
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This patch tries to make some of the expressions around NUM_INSTRUCTIONS
more convenient. We can import it directly where it's needed, but most
uses are replaced by new type aliases for InstructionArray and
InstructionVec.
No change to any hashx_cachegrind iai benchmarks
|
| | | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | |
| | | | |
This is a very simple change, just passing 'self' by reference instead of
value. The by-value version generates a memcpy of the entire temporary
program buffer which doesn't optimize out like I expected it would.
The juicy impact here is a much lower cache footprint for compilation,
since we avoid having yet another temporary storage location for the program
data.
generate_compiled_1000x
Instructions: 271682605 (-0.627292%)
L1 Accesses: 341834751 (-0.813903%)
L2 Accesses: 56420 (-39.48365%)
RAM Accesses: 618 (-20.25806%)
Estimated Cycles: 342138481 (-0.867660%)
|
| |\| | |
| | | |
| | | |
| | | |
| | | | |
RFC: hashx: More arrays and fewer slices
See merge request tpo/core/arti!1539
|
| | | | | |
|
| | |/ /
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
generate_interp_1000x
Instructions: 219216169 (No change)
L1 Accesses: 278017243 (-0.000441%)
L2 Accesses: 1257 (+4389.286%)
RAM Accesses: 415 (-0.479616%)
Estimated Cycles: 278038053 (+0.001744%)
generate_interp_1000x_c
Instructions: 272748034 (No change)
L1 Accesses: 349932964 (No change)
L2 Accesses: 76 (-1.298701%)
RAM Accesses: 411 (+0.243902%)
Estimated Cycles: 349947729 (+0.000009%)
generate_compiled_1000x
Instructions: 256896028 (+0.175731%)
L1 Accesses: 342543838 (+0.131802%)
L2 Accesses: 149273 (-10.34924%)
RAM Accesses: 810 (-0.246305%)
Estimated Cycles: 343318553 (+0.106328%)
generate_compiled_1000x_c
Instructions: 281855218 (No change)
L1 Accesses: 362569035 (-0.000001%)
L2 Accesses: 88 (+1.149425%)
RAM Accesses: 473 (+0.211864%)
Estimated Cycles: 362586030 (+0.000010%)
interp_u64_hash_1000x
Instructions: 13450926 (No change)
L1 Accesses: 16622561 (+0.000024%)
L2 Accesses: 28 (No change)
RAM Accesses: 390 (-1.015228%)
Estimated Cycles: 16636351 (-0.000817%)
interp_8b_hash_1000x_c
Instructions: 8618541 (No change)
L1 Accesses: 12316160 (-0.000008%)
L2 Accesses: 80 (No change)
RAM Accesses: 433 (+0.231481%)
Estimated Cycles: 12331715 (+0.000276%)
compiled_u64_hash_100000x
Instructions: 87311792 (+0.000520%)
L1 Accesses: 94396598 (+0.000463%)
L2 Accesses: 215 (+2.380952%)
RAM Accesses: 774 (-0.641849%)
Estimated Cycles: 94424763 (+0.000304%)
compiled_8b_hash_100000x_c
Instructions: 91547640 (No change)
L1 Accesses: 98838166 (-0.000007%)
L2 Accesses: 137 (+3.007519%)
RAM Accesses: 488 (+0.618557%)
Estimated Cycles: 98855931 (+0.000119%)
|
| |\ \ \
| |/ /
|/| |
| | |
| | |
| | |
| | | |
tor-hsservice: Add partial descriptor publisher reactor implementation.
Closes #977
See merge request tpo/core/arti!1545
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|
| | | | |
|