summaryrefslogtreecommitdiff
path: root/crates/tor-linkspec
Commit message (Collapse)AuthorAgeFilesLines
* Bump crates that have had backward compatible API changes.Nick Mathewson2022-10-031-2/+2
|
* Update README.md files.Nick Mathewson2022-09-301-0/+18
|
* Mark all bridge and pt features as experimental for now.Nick Mathewson2022-09-292-0/+20
| | | | | | Also, document the features. Closes #588.
* pt: Reject a pluggable transport named BridgeIan Jackson2022-09-271-0/+5
| | | | https://gitlab.torproject.org/tpo/core/torspec/-/merge_requests/91
* Remove docsrs thing which is in wrong place?Ian Jackson2022-09-271-1/+0
|
* pt: Try to fix docsrs problemIan Jackson2022-09-271-0/+1
|
* pt: Use PtTransportName in PtTargetIan Jackson2022-09-271-1/+1
|
* pt: Use PtTransportName in TransportIdIan Jackson2022-09-271-2/+2
|
* pt: PtTransportName: Provide TryFrom, into_inner, AsRefIan Jackson2022-09-271-4/+27
| | | | This seems a minimal API for such a thing.
* pt: tor-linkspec: Shorten some names with useIan Jackson2022-09-271-12/+17
| | | | This repetition was getting repetitive.
* pt: Introduce PtTransportNameIan Jackson2022-09-272-5/+33
| | | | | The config parsing wants this. Also there are some anomalies in the types here that ought to be tidied up.
* Add a few comments based on review.Nick Mathewson2022-09-231-0/+8
|
* Clarify and combine PtTargetAddr constructors.Nick Mathewson2022-09-231-16/+23
|
* Rename various Transport* types to Pt*.Nick Mathewson2022-09-232-43/+42
| | | | | This clarifies that the types apply to pluggable transports only, and not (typically) to the default plain-old-TCP transport.
* Clarify note on "none" transport ID.Ian Jackson2022-09-231-0/+3
|
* Add a HasChanMethods trait, with a bunch of open TODO questions.Nick Mathewson2022-09-233-2/+24
| | | | We'll need to sort these out as we implement pluggable transports.
* New data types to describe transport targets.Nick Mathewson2022-09-232-1/+54
| | | | | I've tried to name and structure these for consistency, and comment reasonably well. We'll still probably want to make changes.
* Add TransportTargetAddr as the target address for a PT-using channelNick Mathewson2022-09-232-1/+118
| | | | | | As with `TransportId`, this type only gets complicated when `pt-client` is enabled: it's meant to stay simple for relays and non-PT-using clients.
* Create an API for TransportIdNick Mathewson2022-09-234-0/+168
|
* Remove semver.md from arti-1.0.0Nick Mathewson2022-09-071-2/+0
|
* Bump crate versions in preparation for Arti 1.0.0 release.Nick Mathewson2022-09-011-3/+3
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Because we want to work more on ensuring that our semver stability story is solid, we are _not_ bumping arti-client to 1.0.0 right now. Here are the bumps we _are_ doing. Crates with "minor" bumps have had API breaks; crates with "patch" bumps have had new APIs added. Note that `tor-congestion` is not bumped here: it's a new crate, and hasn't been published before. ``` tor-basic-utils minor fs-mistrust minor tor-config minor tor-rtcompat minor tor-rtmock minor tor-llcrypto patch tor-bytes patch tor-linkspec minor tor-cell minor tor-proto minor tor-netdoc patch tor-netdir minor tor-persist patch tor-chanmgr minor tor-guardmgr minor tor-circmgr minor tor-dirmgr minor arti-client minor arti-hyper minor arti major arti-bench minor arti-testing minor ```
* enable doc_auto_cfg feature on every crate when documenting for docs.rstrinity-1686a2022-08-242-0/+4
|
* tor-netdir: Add a static assertion about RelayIdType::COUNTNick Mathewson2022-08-101-1/+16
| | | | | | | Doing this will make sure that we fix a correctness issue in netdir that will be caused if we add more IDs. (Also add RelayIdType::COUNT in tor-linkspec.)
* Implement `Into<RelayIdRef>` for `&RelayId`.Nick Mathewson2022-08-101-0/+6
| | | | | This will let us use `&RelayId` in all the places that take `Into<RelayIdRef>`.
* Final (?) API revisions for tor-linkspecNick Mathewson2022-08-104-66/+96
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | With this change, each individual identity type becomes optional. The functions that expose them unconditionally are now in a "legacy" trait that only some downstream types are expected to implement. There are new convenience APIs in HasRelayIds: * to return Option<&keytype>, * to see if one identity-set contains another. This commit will break several downstream crates! For the reviewer's convenience, I will put the fixes for those crates into a series of squash! commits on this one. tor-netdir ---------- Revise tor-netdir to accept optional identities. This required some caveats and workarounds about the cases where we have to deal with a key type that the tor-netdir code does not currently recognize at all. If we start to add more identity types in the future, we may well want more internal indices in this code. tor-proto --------- In order to make tor-proto support optional identities, there were fewer changes than I thought. Some "check" functions needed to start looking at "all the ids we want" rather than at "the two known IDs"; they also needed to accommodate that case where we don't have an ID that we demand. This change will also help with bridges, since we want to be able to connect to a bridge without knowing all of its IDs up front. The protocol currently _requires_ the two current ID types in some places. To deal with that, I added a new `MissingId` error. I also removed a couple of unconditional identity accessors for chanmgr; code should use `target().identity(...)` instead. tor-chanmgr ----------- This is an incomplete conversion: it does not at all handle channel targets without Ed25519 identities yet. It still uses those identities to index its internal map from identity to channel; but it gives a new `MissingId` error type if it's given a channel target that doesn't have one. We'll want to revise the map type again down the road when we implement bridges, but I'd rather not step on the channel-padding work in progress right now. tor-guardmgr ------------ This change is mostly a matter of constructing owned identity types more sensibly, rather than unwrapping them directly. There are some places marked with TODOs where we still depend on particular identity types, because of how the directory protocol works. This will need revisiting when we add bridge support here. tor-circmgr ----------- These changes are just relatively simple API changes in the tests.
* linkspec: Add more accessors (some internal) for ids.Nick Mathewson2022-08-101-0/+68
| | | | These will all be used shortly.
* Remove get_ed_identity_key as unused.Nick Mathewson2022-08-101-23/+0
|
* Introduce a RelayIdSet and use it in place of HashSet<RelayId>.Nick Mathewson2022-08-103-1/+149
| | | | | This makes lookups a little more efficient. I do with that HashSet just supported this use-case, but for now this seems our best option.
* Teach guard restrictions about RelayId.Nick Mathewson2022-08-102-0/+27
| | | | | This implementation is (sadly) too copy-heavy or now, because HashSet<RelayId> can't be indexed with RelayIdRef.
* Parsing, encoding, and serde for RelayId.Nick Mathewson2022-08-103-5/+195
| | | | | | | | | | | | | | | The formats used here are backward-compatible with those used by C tor and those used elsewhere in our code. We need a way to encode _both_ current kinds of identities as a string that tells you what kind of ID they are. Traditionally we have used hexadecimal, sometimes with a $, for RSA ids, and we have used base64 for Ed25519 IDs. We also introduce a new forward-compatible format for new identity keys in the future. (The new format is the key identity type, a colon, and the id encoded as base64.) We will use this new format _only_ when we need to encode identities in a way where it would be otherwise unclear what kind of key we are dealing with.
* Add a set of Identity-related types and accessors.Nick Mathewson2022-08-105-2/+166
| | | | | | | I wonder if these types are correct. I think it makes sense to have a Ref type like this, rather than just using `&RelayId`, but it doesn't seems that I can make `RelayId` and `RelayIdRef` implement Borrow and ToOwned for one another, so maybe I've messed up.
* Introduce HasRelayIds::same_relay_ids.Nick Mathewson2022-08-022-4/+12
| | | | | This method tells if two HasRelayIds contain exactly the same set of Relay identities, and is generally useful for debugging.
* Implement serde traits on RelayIds.Nick Mathewson2022-08-022-2/+6
| | | | | This will allow RelayIds to replace IdPair in tor-guardmgr. (The fields are named accordingly with `serde(rename)`.)
* tor-linkspec: Refactor out traits to represent a relay's ID set.Nick Mathewson2022-08-024-31/+88
| | | | | | | | | | | | | | We want the set of identities supported by a relay to be extensible in the future with minimal fuss; we'd also like to make working with these ID sets more convenient. To handle that, this commit adds a new trait for "Something that has the same IDs as a relay" and a new object for "an owned representation of a relay's IDs." This commit introduces a similar trait for "Something with a list of SocketAddr, like a relay has." There's no owned equivelent for that, since Vec<SocketAddr> is already a thing. Closes #428.
* Now that versions have bumped, remove semver.md files.Nick Mathewson2022-08-011-2/+0
|
* Bump patch versions on crates that have new APIs.Nick Mathewson2022-08-011-1/+1
| | | | | | | | | | | | | | Do _not_ bump the dependency versions on crates that have had no changes since arti 0.0.5, since those crates do not depend on the new APIs. ``` cargo set-version -p tor-basic-utils --bump patch cargo set-version -p tor-llcrypto --bump patch git restore crates/tor-checkable git restore crates/tor-consdiff git restore crates/tor-rtmock ```
* Bump minor versions on all crates that have had breaking changes.Nick Mathewson2022-08-011-2/+2
| | | | | | | | | | | | | | | | | | | | | | Done with these commands: ``` cargo set-version -p fs-mistrust --bump minor cargo set-version -p tor-bytes --bump minor cargo set-version -p tor-socksproto --bump minor cargo set-version -p tor-cert --bump minor cargo set-version -p tor-linkspec --bump minor cargo set-version -p tor-cell --bump minor cargo set-version -p tor-netdir --bump minor cargo set-version -p tor-persist --bump minor cargo set-version -p tor-chanmgr --bump minor cargo set-version -p tor-guardmgr --bump minor cargo set-version -p tor-circmgr --bump minor cargo set-version -p tor-dirclient --bump minor cargo set-version -p tor-dirmgr --bump minor cargo set-version -p arti-client --bump minor cargo set-version -p arti --bump minor ```
* tor-linkspec: Stop using infallible writers.Nick Mathewson2022-07-112-7/+11
|
* Convert each write_onto_infallible implementation into write_onto.Nick Mathewson2022-07-111-2/+3
|
* Rename "write" methods on tor-bytes to "write_infallible".Nick Mathewson2022-07-111-6/+6
| | | | | | | | | | | | | | | 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.
* Add a semver note.Nick Mathewson2022-07-061-0/+1
|
* ChanMgr: errors: attribute errors to correct address.Nick Mathewson2022-07-061-0/+14
| | | | | | Even when keys are relevant, we still don't want to attribute errors to a set of addresses when we have a single address that we're connected with.
* Bump crate and dependency versions.Nick Mathewson2022-06-241-2/+2
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | These were done with the following commands: ``` cargo set-version -p tor-basic-utils --bump patch cargo set-version -p fs-mistrust --bump minor cargo set-version -p tor-error --bump patch cargo set-version -p tor-config --bump patch cargo set-version -p tor-units --bump patch cargo set-version -p tor-rtcompat --bump minor cargo set-version -p tor-llcrypto --bump patch cargo set-version -p tor-bytes --bump minor cargo set-version -p tor-socksproto --bump minor cargo set-version -p tor-cert --bump minor cargo set-version -p tor-cell --bump minor cargo set-version -p tor-proto --bump minor cargo set-version -p tor-netdoc --bump patch cargo set-version -p tor-netdir --bump minor cargo set-version -p tor-persist --bump patch cargo set-version -p tor-chanmgr --bump minor cargo set-version -p tor-guardmgr --bump minor cargo set-version -p tor-circmgr --bump patch cargo set-version -p tor-dirclient --bump patch cargo set-version -p tor-dirmgr --bump minor cargo set-version -p arti-client --bump patch cargo set-version -p arti --bump minor cargo set-version -p arti-bench --bump minor cargo set-version -p arti-testing --bump minor ```
* Increment versions of crates with trivial changes only.Nick Mathewson2022-06-241-1/+1
| | | | | | "Trivial" here includes stuff like cargo reformatting, comment edits, error message string changes, and clippy warning changes. Crates that depend on these do not need to increment.
* Run maint/add_warning crates/*/src/{lib,main}.rsIan Jackson2022-06-231-0/+3
| | | | Update all lint blocks
* lints: Add let_unit_value allow to all cratesIan Jackson2022-05-311-0/+1
| | | | | From running add_warning, with manual picking of the right hunks/lines.
* lints: Add lint block delimiters to every crateIan Jackson2022-05-311-0/+2
| | | | | | This was the result of: maint/add_warning crates/*/src/{lib,main}.rs and then manually curating the results.
* Lexically sort Cargo.toml dependenciesOrhun Parmaksız2022-05-281-3/+3
| | | | | | Utilize cargo-sort: https://github.com/DevinR528/cargo-sort Signed-off-by: Orhun Parmaksız <[email protected]>
* Bump versions of trivially-changed crates.Nick Mathewson2022-05-271-1/+1
| | | | | | | | | | | | | | | | | | | These crates had only clippy fixes that do not affect their behavior: tor-bytes tor-cell tor-events tor-linkspec tor-netdir tor-socksproto This crate only had the cargo-husky dependency removed, which does not affect compatibility: tor-llcrypto Since these changes have no compatibility effects, it is not necessary to bump the versions of these crates which other crates depend on.
* Resolve the new `derive_partial_eq_without_eq` lint.Nick Mathewson2022-05-231-1/+1
| | | | It's a little overzealous sometimes, but it's mostly to the good.