aboutsummaryrefslogtreecommitdiff
path: root/crates/tor-cert
Commit message (Collapse)AuthorAgeFilesLines
* Bump versions for tor-* and arti-* cratesSteven Engler2026-08-031-7/+7
| | | | | | | ```bash readarray -t bump < <(maint/list-crates | grep -P '^tor-|^arti-') for crate in "${bump[@]}"; do cargo set-version --bump minor -p "${crate}"; done ```
* tor-checkable: Rename `TimeBound::check_valid_*` to `if_valid_*`Ian Jackson2026-07-234-6/+6
| | | | | | | I find these names confusing. To my mind "check" implies a function returning `Result<(), _>`. Some other APIs use `unwrap` here but I think `if` is good.
* tor-checkable: TimeBound: Make wrapped type an associated typeIan Jackson2026-07-231-2/+6
| | | | | It wouldn't make much sense for one concrete type to be unwrappable variously as different inner types.
* tor-checkable: TimeBound: Make is_valid_at a provided methodIan Jackson2026-07-231-16/+1
| | | | | | | | | | | Now that we have `bounds()`, we can centralise this implementation and delete the implementations. I don't think it's necessary to provide an engineered safeguard against downstreams overriding this method. Any existing implementors of this trait will break because they must provide `.bounds()` now, which is an opportunity to notice that the `is_valid_at` can be deleted. But, if it is not deleted, nothing goes wrong.
* tor-checkable: TimeBound: remove Error associated typeIan Jackson2026-07-231-8/+4
| | | | | This was always TimeValidityError. And we want to rely on that so we can do the validity checking more centrally.
* tor-checkable: TimeBound: Add bounds accessorIan Jackson2026-07-231-0/+10
| | | | | | | This makes a `TimeBound` much more convenient to work with, will allow more centralisation. This replaces temporary `bound` inherent method on `TimeRangeBound`.
* Use new TimeRangeBound name throughout the treeIan Jackson2026-07-161-4/+4
|
* Use new TimeBound name throughout the treeIan Jackson2026-07-165-7/+7
|
* add_warning: add reference to arti#2556Jim Newsome2026-07-151-1/+1
|
* Removed unnecessary lintpryty262026-07-151-1/+1
| | | | Removed unnecessary lint
* Remove semver.md filesNick Mathewson2026-06-301-1/+0
|
* Version bumps for 2.5.0Nick Mathewson2026-06-301-9/+9
| | | | | | | | | | | | | Closes #2617. We've lucked out this time, and it turns out that every one of our published crates gets a minor bump. So this was generated with: ``` for cr in $(./maint/list-crates); do cargo set-version -p $cr --bump minor done ```
* tor-cert: Derive PartialEq and Eq on core typesClara Engler2026-06-292-8/+9
| | | | | | | | This commit derives PartialEq and Eq on the "core" certificate types in lib.rs, i.e. the Ed25519 certificates and its adjacent data types. We will need this for proper PartialEq and Eq handling in tor-netdoc at one point.
* Bump MSRV to 1.91Clara Engler2026-06-151-1/+1
| | | | | | | | | | | | | | | | | | | This commit bumps the MSRV to 1.91 which was released on 2025-10-30. The Cargo.toml files were updated as follows: ```sh git ls-files | \ grep ".*Cargo\.toml$" | \ xargs sed -i '' 's/^rust-version = "1\.89"$/rust-version = "1\.91"/g' ``` The following files were updated manually: ``` modified: .gitlab-ci.yml modified: README.md modified: flake.nix modified: maint/docker-android/Dockerfile ```
* tor-cert: Document expiry inclusiveness for Ed25519CertClara Engler2026-06-111-0/+2
|
* tor-cert: Make Ed25519Cert time bound inclusiveClara Engler2026-06-111-1/+1
|
* tor-cert: Replace duration_since with saturation (fmt)Clara Engler2026-06-111-4/+2
|
* tor-cert: Replace duration_since with saturationClara Engler2026-06-112-2/+4
| | | | | | This commit replaces a call to .duration_since(...).expect() with .saturating_duration_since() for defensive programming. We will change code related to it in the next commit.
* maint: Run maint/add_warning to deny string slicesClara Engler2026-06-093-0/+4
| | | | | | | | | | | | This commit executes maint/add_warning with the just added change to deny string slices except in tests. I recommend auditing this by checking out the previous commit followed by running the script yourself and then verifying that the diff is identical to this commit. This commit makes cargo clippy fail. We will add exceptions in the next commit.
* Bump all the unstable tor- and arti- crates to 0.43.0Gabriela Moldovan2026-06-011-7/+7
| | | | | | | | | | Done using: ``` for crate in $(./maint/list-crates | rg '^(tor|arti-)'); do cargo set-version -p $crate 0.43.0 done ```
* tor-cert: Derive Eq on CertifiedKeyClara Engler2026-05-261-2/+2
| | | | | | This commit derives PartialEq and Eq on CertifiedKey and UnrecognizedKey in tor-cert. We will need this later for ntor cross certificates in tor-netdoc.
* Upgrade rand crates to 0.10.Wesley Aptekar-Cassels2026-05-121-1/+1
| | | | | | | | | | | When the circ-padding feature is enabled, we use maybenot, which does not yet support rand 0.10. In the meantime, enabling this feature pulls in rand 0.9. This is not ideal, but should be okay as a temporary situation. This also replaces the use of ReseedingRng (which was removed in 0.10) with the reseeding_rng crate. This is somewhat less performant, but it should be okay.
* release: Remove semver.md files.Wesley Aptekar-Cassels2026-05-061-5/+0
|
* release: Bump tor- and arti- crate versions.Wesley Aptekar-Cassels2026-05-061-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | cargo set-version -p arti-client 0.42.0 cargo set-version -p arti-config 0.42.0 cargo set-version -p arti-relay 0.42.0 cargo set-version -p arti-rpc-client-core 0.42.0 cargo set-version -p arti-rpcserver 0.42.0 cargo set-version -p arti-testing 0.42.0 cargo set-version -p arti-ureq 0.42.0 cargo set-version -p tor-async-utils 0.42.0 cargo set-version -p tor-basic-utils 0.42.0 cargo set-version -p tor-bytes 0.42.0 cargo set-version -p tor-cell 0.42.0 cargo set-version -p tor-cert 0.42.0 cargo set-version -p tor-cert-x509 0.42.0 cargo set-version -p tor-chanmgr 0.42.0 cargo set-version -p tor-checkable 0.42.0 cargo set-version -p tor-circmgr 0.42.0 cargo set-version -p tor-config 0.42.0 cargo set-version -p tor-config-path 0.42.0 cargo set-version -p tor-consdiff 0.42.0 cargo set-version -p tor-dirclient 0.42.0 cargo set-version -p tor-dircommon 0.42.0 cargo set-version -p tor-dirmgr 0.42.0 cargo set-version -p tor-dirserver 0.42.0 cargo set-version -p tor-error 0.42.0 cargo set-version -p tor-events 0.42.0 cargo set-version -p tor-general-addr 0.42.0 cargo set-version -p tor-geoip 0.42.0 cargo set-version -p tor-guardmgr 0.42.0 cargo set-version -p tor-hsclient 0.42.0 cargo set-version -p tor-hscrypto 0.42.0 cargo set-version -p tor-hsrproxy 0.42.0 cargo set-version -p tor-hsservice 0.42.0 cargo set-version -p tor-key-forge 0.42.0 cargo set-version -p tor-keymgr 0.42.0 cargo set-version -p tor-linkspec 0.42.0 cargo set-version -p tor-llcrypto 0.42.0 cargo set-version -p tor-log-ratelim 0.42.0 cargo set-version -p tor-memquota 0.42.0 cargo set-version -p tor-memquota-cost 0.42.0 cargo set-version -p tor-netdir 0.42.0 cargo set-version -p tor-netdoc 0.42.0 cargo set-version -p tor-persist 0.42.0 cargo set-version -p tor-proto 0.42.0 cargo set-version -p tor-protover 0.42.0 cargo set-version -p tor-ptmgr 0.42.0 cargo set-version -p tor-relay-crypto 0.42.0 cargo set-version -p tor-relay-selection 0.42.0 cargo set-version -p tor-rpcbase 0.42.0 cargo set-version -p tor-rpc-connect 0.42.0 cargo set-version -p tor-rtcompat 0.42.0 cargo set-version -p tor-rtmock 0.42.0 cargo set-version -p tor-socksproto 0.42.0 cargo set-version -p tor-units 0.42.0
* tor-cert: Remove the "encode" cargo featureIan Jackson2026-04-291-3/+2
| | | | This was experimental. Everything gated by it has been stabilised.
* tor-cert: Stabilise everything gated by feature = "encode" (fmt)Ian Jackson2026-04-291-2/+1
|
* tor-cert: Stabilise everything gated by feature = "encode"Ian Jackson2026-04-295-18/+8
| | | | | | | | | | | | | This is widely used in-tree already. I don't think it makes sense to feature-gate it. There are some (perhaps rather thin) tests for both the Ed25519Builder and EncodedRsaCrosscert. It is possible we might want to change the API further, but this is still a 0.x crate so that's not going to be a problem. We'll remove the actual cargo feature in the next commit.
* tor-cert: Ed25519CertBuilder: do builder fn renameIan Jackson2026-04-291-5/+3
| | | | | | Change all call sites. This completes the rename.
* tor-cert: Ed25519CertBuilder: do type rename everywhereIan Jackson2026-04-292-12/+8
| | | | Abolish the type alias and change call references.
* tor-cert: Ed25519CertBuilder: rename from Ed25519CertConstructorIan Jackson2026-04-292-1/+7
| | | | | | | | | | This is a perfectly ordinary builder type. There isn't any reason why it ought to be called "constructor". And, nowadays, we have things in tor-netdoc called Constructor that take a different approach. Briefly, leave a temporary compat alias, to make diffs more comprehensible. Currently this experimental, so no semver implications.
* Revert "tor-cert: Provide ed25519 cert decoding via TryFrom trait"Ian Jackson2026-04-272-8/+0
| | | | This reverts commit 68caf324a320fff1a4f0e9b0f5014a34d0e3729f.
* tor-cert: Provide ed25519 cert decoding via tor-bytesIan Jackson2026-04-272-0/+8
| | | | | This is more sensible and will make the code in tor-netdoc less strange. We'll revert the TryFrom in a moment.
* tor-cert: Provide ed25519 cert encoding via tor-bytesIan Jackson2026-04-233-1/+34
| | | | | | | | Implement the Writeable trait. Explain why this approach is correct and leave a comment near the decoder (to avoid future changes making this implementation buggy) and a test case.
* tor-cert: Provide ed25519 cert decoding via TryFrom traitIan Jackson2026-04-232-0/+8
| | | | Otherwise we can't implement trait-based decoding in tor-netdoc.
* tor-cert: impl From<Ed25519Identity> for CertifiedKeyIan Jackson2026-04-232-1/+5
|
* tor-cert: Derive Debug, Clone for SigCheckedCertClara Engler2026-04-222-0/+2
| | | | | Most other certificate types do so too and we will need it in tor-netdoc.
* Bump versions: tor-* and arti-* unstable cratesIan Jackson2026-03-301-7/+7
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | As per https://gitlab.torproject.org/tpo/core/arti/-/issues/2436#note_3384773 Made with nailing-cargo -Eu set-version -p arti-client 0.41.0 nailing-cargo -Eu set-version -p arti-relay 0.41.0 nailing-cargo -Eu set-version -p arti-rpcserver 0.41.0 nailing-cargo -Eu set-version -p arti-ureq 0.41.0 nailing-cargo -Eu set-version -p arti-rpc-client-core 0.41.0 nailing-cargo -Eu set-version -p tor-basic-utils 0.41.0 nailing-cargo -Eu set-version -p tor-error 0.41.0 nailing-cargo -Eu set-version -p tor-general-addr 0.41.0 nailing-cargo -Eu set-version -p tor-geoip 0.41.0 nailing-cargo -Eu set-version -p tor-memquota-cost 0.41.0 nailing-cargo -Eu set-version -p tor-llcrypto 0.41.0 nailing-cargo -Eu set-version -p tor-cert-x509 0.41.0 nailing-cargo -Eu set-version -p tor-rtcompat 0.41.0 nailing-cargo -Eu set-version -p tor-rtmock 0.41.0 nailing-cargo -Eu set-version -p tor-async-utils 0.41.0 nailing-cargo -Eu set-version -p tor-config 0.41.0 nailing-cargo -Eu set-version -p tor-config-path 0.41.0 nailing-cargo -Eu set-version -p tor-rpc-connect 0.41.0 nailing-cargo -Eu set-version -p tor-log-ratelim 0.41.0 nailing-cargo -Eu set-version -p tor-rpcbase 0.41.0 nailing-cargo -Eu set-version -p tor-memquota 0.41.0 nailing-cargo -Eu set-version -p tor-units 0.41.0 nailing-cargo -Eu set-version -p tor-bytes 0.41.0 nailing-cargo -Eu set-version -p tor-protover 0.41.0 nailing-cargo -Eu set-version -p tor-checkable 0.41.0 nailing-cargo -Eu set-version -p tor-cert 0.41.0 nailing-cargo -Eu set-version -p tor-key-forge 0.41.0 nailing-cargo -Eu set-version -p tor-hscrypto 0.41.0 nailing-cargo -Eu set-version -p tor-socksproto 0.41.0 nailing-cargo -Eu set-version -p tor-linkspec 0.41.0 nailing-cargo -Eu set-version -p tor-cell 0.41.0 nailing-cargo -Eu set-version -p tor-persist 0.41.0 nailing-cargo -Eu set-version -p tor-keymgr 0.41.0 nailing-cargo -Eu set-version -p tor-relay-crypto 0.41.0 nailing-cargo -Eu set-version -p tor-proto 0.41.0 nailing-cargo -Eu set-version -p tor-netdoc 0.41.0 nailing-cargo -Eu set-version -p tor-consdiff 0.41.0 nailing-cargo -Eu set-version -p tor-netdir 0.41.0 nailing-cargo -Eu set-version -p tor-relay-selection 0.41.0 nailing-cargo -Eu set-version -p tor-chanmgr 0.41.0 nailing-cargo -Eu set-version -p tor-ptmgr 0.41.0 nailing-cargo -Eu set-version -p tor-dircommon 0.41.0 nailing-cargo -Eu set-version -p tor-guardmgr 0.41.0 nailing-cargo -Eu set-version -p tor-circmgr 0.41.0 nailing-cargo -Eu set-version -p tor-dirclient 0.41.0 nailing-cargo -Eu set-version -p tor-dirmgr 0.41.0 nailing-cargo -Eu set-version -p tor-dirserver 0.41.0 nailing-cargo -Eu set-version -p tor-hsclient 0.41.0 nailing-cargo -Eu set-version -p tor-hsservice 0.41.0 nailing-cargo -Eu set-version -p tor-hsrproxy 0.41.0
* Plumb web-time-compat/full dependency through everywhere.Ian Jackson2026-03-301-0/+1
| | | | As generated by maint/fixup-features.
* tor-cert: Port to web-time-compatNick Mathewson2026-03-264-9/+12
|
* cell, proto, cert: Simplify CERTS cell building.Nick Mathewson2026-03-193-3/+34
| | | | | | | | Formerly we required the caller for push_cert_body to specify the type of the cert that they were pushing. But in nearly every case, the certificate object that the caller is holding knows what its own type is! This makes the tor_proto build_certs_cell function a bit less error-prone, since we don't have to worry about mismatch.
* cert: Fix minor but annoying bug in cert expiry calculationNick Mathewson2026-03-171-2/+18
| | | | | | | | | | | | We documented our SystemTime-to-expiry conversion as always rounding _up_, but we did not account for fractional seconds when doing so. Therefore, if the requested expiration was set partway through the first second of an hour, the conversion would round down. This patch fixes that, and adds a regression test. I've confirmed that the test fails without this patch. Closes #2407
* cert: Deduplicate expiry-in-hours logicNick Mathewson2026-03-174-34/+70
| | | | | | | These certificates use a weird expiration format: counting hours since the unix epoch. Previously we had it implemented in two different places. This patch centralizes it, since we are about to become slightly more complicated.
* Merge branch '2.1.0-bumps' into 'main'gabi-2502026-03-021-8/+8
|\ | | | | | | | | Version bumps for 2.1.0 See merge request tpo/core/arti!3733
| * Bump all the unstable tor- and arti- crates to 0.40.0.Gabriela Moldovan2026-03-021-7/+7
| | | | | | | | | | | | | | | | | | Done using: ``` for crate in $(./maint/list_crates | rg '^(tor|arti-)'); do cargo set-version -p $crate 0.40.0 done
| * Bump the versions of the non-{arti-,tor-} cratesGabriela Moldovan2026-03-021-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The non-{arti-,tor-} crates are: ``` ./maint/list-crates | rg -v '^(tor|arti)' oneshot-fused-workaround slotmap-careful test-temp-dir fslock-guard hashx equix caret fs-mistrust safelog retry-error futures-copy ``` Because this release bumps the MSRV, I am bumping the minor version of all of them. MINOR=" oneshot-fused-workaround slotmap-careful test-temp-dir fslock-guard hashx equix caret fs-mistrust safelog retry-error futures-copy " for crate in $MINOR; do cargo set-version --bump minor -p $crate; done ```
* | Run fixup-features in preparation for releaseGabriela Moldovan2026-03-021-0/+1
|/
* tor-cert: Ability to create Rsa->Ed25519 crosscerts.Nick Mathewson2026-02-193-5/+141
|
* Allow clippy::collapsible_if to triggerGabriela Moldovan2026-02-161-0/+1
| | | | | | | | | `clippy::collapsible_if` started triggering after bumping the MSRV to 1.88. Since this triggers from a lot of places, and since there even are a couple of instances where we explicitly allow `clippy::collapsible_ifs`, I've opened #2342 for deciding what to do about it.
* Bump MSRV from 1.86 to 1.89Gabriela Moldovan2026-02-161-1/+1
| | | | | | | As agreed at our last team meeting. See https://gitlab.torproject.org/tpo/core/arti/#minimum-supported-rust-version
* release: Bump `arti-*` and `tor-*` crates to 0.39.0Wesley Aptekar-Cassels2026-02-021-7/+7
| | | | | | | | | | Done via: ``` for crate in $(./maint/list-crates | rg '^(tor|arti-)'); do cargo set-version -p $crate 0.39.0 done ```