summaryrefslogtreecommitdiff
path: root/crates/tor-netdoc/semver.md
Commit message (Collapse)AuthorAgeFilesLines
* tor-netdoc: Store identity_ed25519 in EmbeddedCert logicClara Engler2026-06-011-0/+1
| | | | | | | | | This commit changes the tpye of `RouterDesc::identity_ed25519` to be of EmbeddedCert. Using the inner keys as the verified values is fine because the legacy parser continues to verify the legacy cert, as it extracts its timestamp and signature to the Vec it verifies in the end.
* tor-netdoc: Add master-key-ed25519Clara Engler2026-06-011-0/+1
|
* tor-netdoc: semver: document Ord implsIan Jackson2026-05-281-0/+1
| | | | | The new encoding impls are feature = "incomplete" so don't need to be here.
* tor-netdoc: Fix Ord impl for DigestNameIan Jackson2026-05-281-0/+1
| | | | | | | | When we are generating documents that need to be stable, we need to generate the same document regardless of what subset of digest names we understand. So order DigestName by its string representation.
* tor-netdoc: Break out DigestName as AsRef::<str>Ian Jackson2026-05-281-0/+1
|
* tor-netdoc: Remove family_ids from RouterDescClara Engler2026-05-271-0/+1
| | | | | | | This item is no longer required because we can extract it from family_cert. Unfortunately it requires a breaking change to the getter.
* tor-netdoc: Add From<Ed25519Identity> for RelayFamilyIdClara Engler2026-05-271-0/+1
| | | | We will need it in the next commit.
* tor-netdoc: Add family-cert to RouterDescClara Engler2026-05-271-0/+1
| | | | | | | | | | | | This commit adds the family_cert field to RouterDesc using EmbeddedCert logic. Unfortunately, it requires some code gymnastics similar to the (not yet merged) identity-ed25519 certificates, which we also outlined in a comment of a previous commit in the branch. Long story short: The legacy parser and parse2 do not like to co-exist in the same scope due to the self-consuming tor-cert verification chain of which the legacy parser makes heavy use.
* Merge branch 'relay-weight' into 'main'Ian Jackson2026-05-271-0/+7
|\ | | | | | | | | tor-netdoc: encoding support for `w` line in routerstatus See merge request tpo/core/arti!3991
| * tor-netdoc: semver.md: document RelayWeightsItem changeIan Jackson2026-05-271-0/+1
| |
| * tor-netdoc: impl TryFrom<&NetParams<u32>> for RelayWeightIan Jackson2026-05-271-0/+1
| | | | | | | | | | Convert the from_net_params constructor into a TryFrom. Retain the bespoke method for the benefit of the old parser.
| * tor-netdoc: Unknown: provide into_retained even when retained disabledIan Jackson2026-05-271-0/+1
| |
| * tor-netdoc: impl encoding and parsing for NetParams<T>Ian Jackson2026-05-271-1/+1
| | | | | | | | | | Not just NetParams<i32>. We're going to want it for NetParams<u32> in a moment.
| * tor-netdoc: NetdocParseableFields: Pass ItemStream to finishIan Jackson2026-05-271-0/+2
| |
| * tor-netdoc: implement encoding for rs::SoftwareVersionIan Jackson2026-05-271-0/+1
| | | | | | | | Call the existing string encoding code.
| * tor-netdoc: implement encoding for IgnoredPublicationTimeSpIan Jackson2026-05-271-0/+1
| | | | | | | | | | This seems trivial enough I don't feel the need to mark it "incomplete" even though there is no test case.
* | tor-netdoc: Store or-address in a SocketAddrClara Engler2026-05-271-0/+1
|/ | | | | | | | | | | | | | | | | | | | | | This commit changes the data type of RouterDesc::or_address from Option<(net::IPv6Addr, u16)> to Vec<net::SocketAddr>. This is the correct behavior according to the spec, meaning I will not give a lengthy explanation on why this is better. Reviewers might now be questioning whether the spec is wrong and/or if this is a dangerous change, as Arti used to only extract the first IPv6 address and CTor doing a similar thing. Following an IRC discussion with nickm@, we came to the conclusion that both implementation techniques are right. It is okay for the document to hold multiple addresses, it is okay for the implementation to ignore all but the first (IPv6 address). What is not okay however, is for an implementation to reject documents with multiple addresses. Besides, router descriptors are not used in the existing code for selecting the address of a relay, meaning this change has very little practical meaning.
* tor-netdoc: Properly replace parse2::lex::NoFurtherArgumentsIan Jackson2026-05-271-1/+1
| | | | | | | | | | | | | | | As pointed out in https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3985#note_3413185 this was a duplicate. The new NoFurtherArguments * Implements encoding * Implements more traits * Is in the right module (types::misc - it's not just for parsing) * Has a slightly better name * Had an open-coded parsing impl (which we now replace) * Had minor differences to docs (so we add a line to NoFurtherArguments)
* tor-netdoc: Remove duplicate semver entryIan Jackson2026-05-271-1/+0
| | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/merge_requests/3985#note_3413184
* tor-netdoc: Provide NoMoreArguments markerIan Jackson2026-05-271-0/+1
| | | | | | We're going to need this for type-driven parsing of the necessarily-absent flavour argument in a vote's `network-status-version`.
* tor-netdoc: use DirectorySignaturesHashesAccu in SignatureGroupIan Jackson2026-05-271-0/+1
| | | | | | This will let us (re)use the existing signature checking code with the parse2 type, since we'll be able to make a SignatureGroup out of a parse2'd UnverifiedNetworkStatus.
* tor-netdoc: Make fields of DirectorySignaturesHashesAccu publicIan Jackson2026-05-271-0/+3
| | | | | This will allow it to be a replacement inside `SignatureHashes`. Keeping the fields private seems to have been an oversight.
* tor-netdoc: Replace poc's NddDirectoryFooter with new FooterIan Jackson2026-05-271-0/+1
| | | | | This is the whole of the footer section, with docs, appropriate derives, and so on.
* tor-netdoc: ConsensusFooterFields: Constructor, parse, encodeIan Jackson2026-05-271-0/+1
|
* tor-netdoc: ConsensusFooterFields: Rename weights field to bandwidth_weightsIan Jackson2026-05-271-0/+1
| | | | This matches the spec.
* tor-netdoc: Rename Footer to ConsensusFooterFieldsIan Jackson2026-05-271-0/+1
| | | | | | | | | | | This will allow us to include this, conditionally, in the new per-variety footer types for consensuses, without too much disruption to the existing code. We don't leave a compatibility alias because we're going to want a Footer in each_variety.rs which is the actual sub-document. This old struct isn't suitable because it doesn't have the intro item and is just for consensuses.
* tor-netdoc: NetworkStatusVersion, replacing poc's with FixedStringIan Jackson2026-05-271-0/+1
|
* tor-netdoc: Add bandwidth field to RouterDescClara Engler2026-05-261-0/+1
| | | | | | This commit adds the bandwidth field to the RouterDesc struct as it is found within the spec. The legacy parser will not support it, hence why we do default values there.
* tor-netdoc: Add Bandwidth structClara Engler2026-05-261-0/+1
| | | | | This commit adds the bandwidth struct for router descriptors which is present in the `bandwidth` item.
* tor-netdoc: Add Ed25519FamilyCertClara Engler2026-05-191-0/+1
| | | | | | | | | This commit adds a new type, Ed25519FamilyCert, which works very similar to Ed25519IdentityCert, except that it supports family certificates. A notable difference is, that the identity key must be provided during verification because it does not make sense to verify these certificates without it.
* tor-netdoc: Add Ed25519IdentityCertClara Engler2026-05-191-0/+1
| | | | | | | | | | This commit implements the Ed25519IdentityCert type using EmbeddableCert logic that was introduced recently. These certificates contain the identity key and the signing key of a relay and the type provides two methods: .verify() for verification and .new_signed() for construction. Besides, edcert::* is now made public as this is required now given that it contains public types.
* tor-netdoc: Store ntor_onion_key as Curve25519PublicClara Engler2026-05-181-0/+1
|
* tor-netdoc: Store published in Iso8601TimeSpClara Engler2026-05-181-0/+1
|
* tor-netdoc: Add intro item to RouterDescClara Engler2026-05-181-0/+1
| | | | | | | | | | | This commit introduces `RouterDesc::router` using `RouterDescIntroItem` by moving `nickname`, `orport`, `dirport`, and `ipv4addr` into it. A notable change is that ipv4addr is no longer stored in an `Option`. I have no idea why this was the case because it has always been mandatory and never None anyways, but I suspect it was to be able to treat it as an iterator, something we can also achieve using iter::once().
* tor-netdoc: Break out SharedRandStatuses, and remove it from votesIan Jackson2026-05-131-0/+1
|
* tor-netdoc: impl Ord and PartialOrd for byte wrapper typesIan Jackson2026-05-131-0/+1
|
* tor-netdoc: derive Ord and PartialOrd for RSA fingerprint typesIan Jackson2026-05-131-0/+1
| | | | | This will let us use them in types in ordered lists in netdocs, without fuss.
* tor-netdoc: Change fingerprint to Option<SpFingerprint>Clara Engler2026-05-121-0/+1
|
* tor-netdoc: Return copy in RouterDesc::rsa_identity()Clara Engler2026-05-121-0/+1
| | | | | | | | | | | This change might seem pointless for now but it will be required and unavoidable later on, because we will have to change RouterDesc::fingerprint from RsaIdentity to Option<SpFingerprint> which will make it impossible to be used inside the getter anymore. With this change, our only resort is to obtain the RSA identity from the signing key but we can only return a copy then because that RSA identity is created ad-hoc then.
* tor-netdoc: Rename RouterDesc real items to their real nameClara Engler2026-05-121-0/+6
| | | | | | | | | | | | | | This commit changes the name of all (except accept/reject) real items in RouterDesc to their proper name as found in the spec. This is a breaking change and semver.md has been updated properly. In the instanciation of RouterDesc in the legacy parser, we now use a "weird" syntax of some fields using a different name throughout the code, but that is ok. Changing this would make the diff way larger at the risk of breaking things, especially because many variables such as identity_cert get shadowed countless times within the function, making it harder and error prone to change.
* netdoc: Add an accessor for revision counter of the HsDescGabriela Moldovan2026-05-071-0/+1
|
* release: Remove semver.md files.Wesley Aptekar-Cassels2026-05-061-68/+0
|
* tor-netdoc: Introduce KeywordOrStringIan Jackson2026-04-291-0/+1
| | | | | We're going to use this for `directory-signature`'s hash algorithm, which the current code always treats as a string!
* tor-netdoc: Improvement to Unknown API: make it exhaustiveIan Jackson2026-04-291-0/+1
|
* tor-netdoc: Improvement to Unknown API: make disregarding more explicitIan Jackson2026-04-291-0/+2
| | | | | Make the operation of disregarding the possible existence of already-discarded information, more explicit.
* tor-netdoc: Move FromStr and Display from NormalItemArgument to implsIan Jackson2026-04-291-0/+1
| | | | | | | | | | | This allows implementing NormalItemArgument for types that can only be parsed, or only displayed - or other combinations. I noticed this restriction while inventing a type I later decided was unnecessary. I still think it's a good change. There is no practical impact elsewhere, since in practice downstream code implements NormalItemArgument rather than relying on it.
* tor-netdoc: semver.md: remove a trailing spaceIan Jackson2026-04-271-1/+1
|
* tor-netdoc: consensus authority section: document addition in semver.mdIan Jackson2026-04-271-0/+1
|
* tor-netdoc: VoteAuthoritySection: derive ConstructorIan Jackson2026-04-271-1/+1
|
* tor-netdoc: VoteAuthorityEntry: new struct (just a skeleton for now)Ian Jackson2026-04-271-0/+1
|