| Commit message (Collapse) | Author | Age | Files | Lines |
| ... | |
| | | |
| | |
| | |
| | |
| | |
| | | |
This commit constifies VALID_SYSTEM_TIME, a timestamp indicating a point
in time at which the certificate is valid. We will need this to test
timestamp validation.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit replaces the longclaw test vectors in dir_auth_cert with the
ones we constified previously and represent the ones found in
testdata2/.
It may look a bit odd that we replaced the file includes for the public
keys but this is because those files should have never existed in
testdata2/ in the first place and were only added by accident, meaning
that the current approach is the correct one.
|
| | | | |
|
| | | |
| | |
| | |
| | |
| | | |
This commit replaces a File::open with the AUTHCERT_RAW constant in the
dir_auth_cert test because that is obviously less error prone.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds `const AUTHCERT_RAW` which `include_str`'s the actual
raw authcert we will use for parsing test purposes. The reason for that
being that a single include_str! of the same file is obviously better
than multiple ones.
|
| | | |
| | |
| | |
| | |
| | | |
This commit constifies the authcert test vectors by extracting them from
testdata2/keys/authority_certificate.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds a to_rsa_id() helper function to the authcert tests in
order to convert a hex-encoded RSA identity to an RsaIdentity. It will
be required later on for converting the test vector values to the inner
representations and this function is helpful here because it avoids us
to do repetitive unwrapping and RsaIdentity::from_hex calls, which
overall increase the length/readability.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds the pem_to_rsa_pk helper function to the authcert tests
in order to convert a PEM encoded RSA public key to the internal data
structure. It will be required later on in order to convert the test
vector strings to internal representations.
|
| | | |
| | |
| | |
| | |
| | |
| | |
| | |
| | | |
This commit adds a to_system_time helper function accepting an &str in
the Iso8601TimeSp format and converting it to a SystemTime to the
authcert test cases. It will be required later on in order to
conveniently convert human readable timestamps to the test vectors
expected from parsed data.
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
These tests got broken due to the replacement of the testdata.
The changes required to make them work again were trivial, namely to
increase a timestamp by two hours in a consensus, as the new consensus
has a `valid-after 2000-01-01 00:02:20` followed by a fingerprint
replacement for a directory authority because the authority identity
keys were obviously also rotated.
|
| |\ \
| | |
| | |
| | |
| | | |
tor-netdoc: impl NormalItemArgument for IpAddr
See merge request tpo/core/arti!3867
|
| | |/
| |
| |
| |
| |
| |
| |
| |
| |
| | |
I want this for `dir-source` in authority entries in netstatus docs.
According to the spec that's an "IP address" which ought to include
v6, and indeed the type in Arti right now is IpAddr.
The implication of this is that we don't think that anywhere in the
Tor netdocs has a v4 or v6 address, without port, where the v6 address
in square brackets.
|
| |\ \
| | |
| | |
| | |
| | | |
tor-netdoc: Three fixes to parsing and encoding
See merge request tpo/core/arti!3862
|
| | | |
| | |
| | |
| | |
| | | |
The type error's span now points at the field type, rather than into
the macro.
|
| | | | |
|
| | |/ |
|
| | | |
|
| | | |
|
| | |
| |
| |
| |
| |
| |
| |
| |
| |
| |
| | |
The `doctype_for_error` attribute needs immediate adjustment, because
a string expression value is expected. With `quoted retain`, that
would be re-interpreted, silently. This kind of thing is why
`quoted rigorous` exists.
So change its docs and the one use site.
The macros' docs, and the other calls ites, we'll deal with shortly.
|
| |/ |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
| |
Co-authored-by: Ian Jackson
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This commit documents that a u16 overflow in a certain branch is
impossible due to the properties of a BTreeSet over which an iteration
takes place.
|
| | |
|
| |
|
| |
Co-authored-by: Ian Jackson
|
| |
|
|
| |
Callers now have to use PortRange::new which checks the input.
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| |
This commit refctors PortPolicy to use the new PortRanges, alongside
removing the now duplicate code.
The new PortPolicy implements ItemValueParseable, which makes it
possible to nicely parse it. Unfortunately, we cannot derive it
directly, because we do not store the RuleKind but instead parse it and
then invert the ranges in order to save space. However, internally this
is derived using a wrapper type from which we extract from.
The old FromStr implementation continues to be as bad as it has always
been because improving it would likely introduce more bugs than it would
solve, given that the legacy implementation has been there since forever
basically.
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This commit copies the logic found in portpolicy.rs into its parent
module, namely into a type called PortRanges. Most of the code was
copied one by one, with only slight adjustments having been done.
The compression and inversion logic is the same though.
The purpose of this is to implement ItemArgumentParseable on this, which
is not really possible with a Vec<PortRange> because the port policies
have a weird format: Semantically they consist of multiple arguments
(i.e. multiple port ranges) but syntactically they are encoded as a
single netdoc argument, because there are no spaces in between.
|
| | |
|
| |
|
|
|
| |
This commit moves RuleKind from addrpolicy to policy because it is also
required for port policies.
|
| | |
|
| | |
|
| |
|
|
|
|
| |
This commit removes the implementation of ItemArgumentParseable for
curve25519::PublicKey in favor of using the already existing
Curve25519Public, which also got beefed up slightly.
|
| |
|
|
|
| |
This commit refactors Ed25519IdentityLine by deriving as much as
possible.
|
| |
|
|
|
| |
This commit improves on Ed25519Public to be parseable via parse2 as well
as reducing redundancy by utilizing FixedB64.
|
| |
|
|
|
|
|
|
|
| |
This commit uses a proper PEM parser as a dev-dependency to tor-netdoc
for parsing PEM entries, instead of hard-coding long DER byte strings.
It is better to use an external crate for this here, rather than the
existing somewhat accessible (only through traits) implementation of
parse2, because it feels wrong testing parse2 with parse2.
|
| | |
|
| |
|
|
|
|
|
|
|
|
|
|
|
| |
This commit fixes a bug in the microdescriptor parser to properly parse
multiple family-ids.
Previously, we interpreted the spec to simply contain multiple
`family-ids` lines. This is wrong however. Instead, there may only be
a single such line with multiple values.
To fix this issues, we itnroduce a `RelayFamilyIds` type, similar to
`RelayFamily`, that stores multiple `RelayFamilyId` entires in a `Vec`.
Then, we just derive `ItemValueParseable` on it and win.
|