summaryrefslogtreecommitdiff
path: root/crates/tor-cell/src/relaycell
Commit message (Collapse)AuthorAgeFilesLines
* Merge branch 'assert_maxlen' into 'main'Nick Mathewson2022-10-271-1/+2
|\ | | | | | | | | tor-cell: Assert data length in Data cells See merge request tpo/core/arti!800
| * tor-cell: Assert data length in Data cellsEmil Engler2022-10-241-1/+2
| | | | | | | | | | | | This commit adds a `debug_assert!` macro into the `new_unchecked()` function of the Data cell. Beside this, it also fixes a misleading comment regarding that limit.
* | Merge branch 'safe_u16_conversion' into 'main'Nick Mathewson2022-10-251-1/+1
|\ \ | | | | | | | | | | | | tor-cell: Consistent and secure conversion to u16 See merge request tpo/core/arti!803
| * | tor-cell: Consistent and secure conversion to u16Emil Engler2022-10-241-1/+1
| |/ | | | | | | | | | | | | This commit improves the overflow protection of one call to Vec::write_u16(), by replacing the cast conversion from self.sig.len() with a call to u16::try_from(), like it is already done in the rest of the accompanying function.
* | Merge branch 'fix_typos' into 'main'eta2022-10-251-2/+2
|\ \ | | | | | | | | | | | | tor-cell: Fix typos in msg.rs See merge request tpo/core/arti!802
| * | tor-cell: Fix typos in msg.rsEmil Engler2022-10-241-2/+2
| |/
* / tor-cell: Add comment explaing Data::MAXLENEmil Engler2022-10-241-0/+1
|/ | | | | This commit adds a comment explaining composition of the magic number "11" found in the assignment of the Data::MAXLEN constant.
* Merge branch 'cell-introduce2' into 'main'Ian Jackson2022-09-262-15/+64
|\ | | | | | | | | Implement Introduce2 tor cell See merge request tpo/core/arti!736
| * Implement Introduce2 tor cellYuan Lyu2022-09-212-15/+64
| | | | | | | | | | Reuse the same Introduce inner body implementation of Introduce1.
* | Intoduce1: Use a constant-time check for all-zero RsaIdentityNick Mathewson2022-09-201-2/+3
|/ | | | | | | | | | | | As a matter of good crypto practice, we shouldn't use short-circuiting checks to compare keys or key-like objects, since the amount of time taken by those checks can leak information about their inputs. I don't think it's actually _necessary_ to use a constant-time operation in this case, but let's establish the precedent. This is a follow-up to !724.
* Implement onion service Introduce1Yuan Lyu2022-09-082-1/+74
|
* Clean up EstablishIntro cellYuan Lyu2022-08-251-12/+162
|
* Clarify `REASON_DONE`Emptycup2022-08-161-1/+1
|
* Implement establish rendezvous cellYuan Lyu2022-08-052-1/+42
|
* Several typo fixes from `typos`.Nick Mathewson2022-07-271-1/+1
|
* Fix compilation of EstablishInto encoding.Nick Mathewson2022-07-221-2/+3
| | | | It was based on the old `Writeable` API.
* Merge branch 'hs-cells' into 'main'eta2022-07-222-1/+86
|\ | | | | | | | | Implement ESTABLISH_INTRO relay cell See merge request tpo/core/arti!626
| * Implement ESTABLISH_INTRO relay cellYuan Lyu2022-07-182-1/+86
| |
* | Merge branch 'fallible_writers_v2' into 'main'Nick Mathewson2022-07-193-53/+90
|\ \ | | | | | | | | | | | | | | | | | | Revise tor_bytes::Writer::write to return a Result. Closes #513 See merge request tpo/core/arti!623
| * | tor-cell: Stop using write_infallibleNick Mathewson2022-07-112-23/+38
| | | | | | | | | | | | Also, stop using "expect" and "assert!" to check for errors.
| * | tor-cell: Make encoding method signatures fallible.Nick Mathewson2022-07-112-21/+37
| | |
| * | Convert each write_onto_infallible implementation into write_onto.Nick Mathewson2022-07-113-10/+16
| | |
| * | Rename "write" methods on tor-bytes to "write_infallible".Nick Mathewson2022-07-113-21/+21
| |/ | | | | | | | | | | | | | | | | | | | | | | | | | | | | This comprises four renames: ``` write_onto -> write_onto_infallible write_into -> write_into_infallible write -> write_infallible writer_and_consume -> write_and_consume_infallible. ``` The rest of this branch will be concerned with replacing these `_infallible` methods with ones that return a `Result`. This is part of #513.
* / tor-cell: Derive Eq for NtorV3ExtensionIan Jackson2022-07-181-1/+1
|/ | | | Apropos clippy complaint.
* Implement a higher-level API for the ntor v3 handshakeeta2022-07-081-0/+115
| | | | | | | | | | | | | | | | | | | This implements a higher-level API for the ntor v3 handshake, in line with that exposed by the ntor handshake. It does not, however, use the existing `ClientHandshake` trait, due to fundamental differences in the handshakes (namely, that the v3 handshake can include some additional extra extension data). Currently, the higher-level API assumes circuit extension, and copies the (undocumented!) magic verification string from c-tor that indicates this usage. A rudimentary set of functions for serializing and deserializing extensions to be sent with the handshake is also included, implementing the protocol in proposal 332 § A.2. Currently, it only implements the congestion control extensions specified in proposal 324 § 10.3. part of arti#88
* Fix a couple of typos in rustdoc comments.Nick Mathewson2022-06-241-1/+1
|
* tor-cell: error usefulness and style fixesNick Mathewson2022-06-222-3/+5
|
* tor-bytes: read_nested_*: Take a closureIan Jackson2022-06-101-15/+11
| | | | | | | | | | This eliminates the possibility of writing the bug of failing to call `should_be_exhausted`. As per this discussion https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/572#note_2811464 Fixes #498
* tor-cell: udp: Remove manual length calculationsIan Jackson2022-06-091-20/+8
| | | | | This does away entirely with `wire_addr_len`, which recapitulates the length calculation.
* Merge branch 'less-servfail' into 'main'Ian Jackson2022-06-091-1/+2
|\ | | | | | | | | return nodata instead of servfail in some instances See merge request tpo/core/arti!564
| * try to differentiate transient from nontransient errortrinity-1686a2022-06-081-1/+2
| |
* | Fix a second docs linkIan Jackson2022-06-081-1/+1
| |
* | Fix a doc linkIan Jackson2022-06-081-1/+1
|/
* udp: New AddressPort used in cellsDavid Goulet2022-06-071-28/+59
| | | | Signed-off-by: David Goulet <[email protected]>
* udp: Allow empty hostname and no nul byteIan Jackson2022-06-071-11/+9
| | | | | | | | | | | | | | | After changes to the prop339, the domain name in an Address can only be 255 bytes max and can NOT contain nul byte(s). Unit tests had to be modified to accept this change: - Centralise msg_ip_address - Add currently-passing tests for address length - Test counted address length longer than type wants Related to #463 Signed-off-by: David Goulet <[email protected]>
* cell: Don't use NUL terminated string in CONNECT_UDPDavid Goulet2022-06-071-16/+16
| | | | Signed-off-by: David Goulet <[email protected]>
* cell: Move UDP to its own module and feature gate itDavid Goulet2022-06-072-300/+25
| | | | | | Related to #463 Signed-off-by: David Goulet <[email protected]>
* cell: Implement DATAGRAM cell from prop339David Goulet2022-06-072-4/+67
| | | | | | | | Decoding and encoding of the DATAGRAM cell from proposal 339. Related to #463. Signed-off-by: David Goulet <[email protected]>
* cell: Implement CONNECTED_UDP cell from prop339David Goulet2022-06-071-5/+61
| | | | | | Decoding and encoding implemented according to proposal 339. Related to #463
* cell: Implement CONNECT_UDP cell from prop339David Goulet2022-06-072-2/+492
| | | | | | | | | Decoding and encoding is implemented according to proposal 339 specifications. Related to #463 Signed-off-by: David Goulet <[email protected]>
* clippy: Use write! rather than push_str, formatIan Jackson2022-05-111-2/+3
| | | | | This does involve unwrap, but of course that can't fail unless the formats fail, which would already panic (that's implied by format!).
* squash! Bump every crate's edition to 2021.Nick Mathewson2022-04-251-1/+0
| | | | | Remove all `use` statements for `TryFrom` and `TryInto`. These are now redundant in Rust 2021.
* Replace manual Default impl with educe in tor-cellIan Jackson2022-03-021-6/+4
|
* Give specific error kinds to different END reasonsNick Mathewson2022-02-231-0/+21
| | | | Closes #360.
* Re-enable clippy::ptr_arg where it had been disabled.Nick Mathewson2022-02-161-1/+0
| | | | | | | | | | In one of the two places, nightly no longer warns. In the other place, it's fine for nightly to warn: I just fixed the code to take a slice instead. Partial revert of 856aca879151c622512bc4b15c6307808fc83e82. Resolves part of #310.
* Temporarily disable some clippy lints on nightlyIan Jackson2022-02-021-0/+1
|
* Extend trace messages for destroy/truncated reasons.Nick Mathewson2021-12-151-18/+3
| | | | | | | | | | | | It makes sense to put the method for human-readable strings onto the type itself, so that we can format these whenever they occur. I'm choosing the "human_str" method name here, since caret-generated types already have a to_str. I was thinking about using Display, but caret types already implement that. I've also moved the message from "warn!" to "debug!", since these aren't necessarily a problem condition.
* Methodize the destroy circuit reasonNeel Chauhan2021-12-141-3/+18
|
* Log on TRUNCATED cellNeel Chauhan2021-12-131-0/+4
|
* Treat unrecognized SENDME versions as an error.Nick Mathewson2021-12-081-2/+1
| | | | | | We should never get one of these unless we have opted in to get it. (This behavior is the same as C tor.)