summaryrefslogtreecommitdiff
path: root/crates/tor-cert/src/lib.rs
Commit message (Collapse)AuthorAgeFilesLines
* 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-291-14/+6
| | | | | | | | | | | | | 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 type rename everywhereIan Jackson2026-04-291-4/+0
| | | | Abolish the type alias and change call references.
* tor-cert: Ed25519CertBuilder: rename from Ed25519CertConstructorIan Jackson2026-04-291-1/+5
| | | | | | | | | | 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-271-7/+0
| | | | This reverts commit 68caf324a320fff1a4f0e9b0f5014a34d0e3729f.
* tor-cert: Provide ed25519 cert decoding via tor-bytesIan Jackson2026-04-271-0/+7
| | | | | 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-231-1/+27
| | | | | | | | 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-231-0/+7
| | | | Otherwise we can't implement trait-based decoding in tor-netdoc.
* tor-cert: impl From<Ed25519Identity> for CertifiedKeyIan Jackson2026-04-231-1/+4
|
* tor-cert: Derive Debug, Clone for SigCheckedCertClara Engler2026-04-221-0/+1
| | | | | Most other certificate types do so too and we will need it in tor-netdoc.
* tor-cert: Port to web-time-compatNick Mathewson2026-03-261-5/+6
|
* cell, proto, cert: Simplify CERTS cell building.Nick Mathewson2026-03-191-1/+1
| | | | | | | | 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-171-4/+52
| | | | | | | 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.
* 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.
* cert: Extract x509 code into new tor-cert-x509 crate.Nick Mathewson2026-02-021-1/+2
|
* maint/add_warning: Run script to add new warningGabriela Moldovan2026-01-271-0/+1
| | | | This adds the lint to all our crates.
* Fix name of clippy lint to unchecked_time_subtraction (2)Ian Jackson2025-11-061-2/+2
| | | | Run maint/add_warning
* tor-cert: Generate x509 identity certificates for CERT cellsNick Mathewson2025-10-071-0/+2
| | | | Closes #2197.
* Remove "doc_auto_cfg" incantation from all crates.Nick Mathewson2025-09-291-1/+1
| | | | This feature has been removed from nightly, in favor of doc_cfg.
* Temporarily suppress mismatched_lifetime_syntaxes.Gabriela Moldovan2025-07-071-0/+1
| | | | See #2060.
* Wrap ed25519-dalek types.Nick Mathewson2025-03-181-1/+0
| | | | | | | | | | | With this change, we'll no longer need to expose the types from dalek-cryptography as part of our API, and we'll have more freedom to switch ed25519 implementations, or to upgrade to a newer `rand` ahead of their schedule. Unlike with x25519-dalek, I had to tweak the API a bit: There's no way to get a &PublicKey out of a Keypair now, and implementing the old ed25519-dalek traits seemed unnecessary.
* cert: reserve 0x0C for FAMILY_V_IDENTITY (happy families) certs.Nick Mathewson2025-02-111-0/+4
|
* clippy: deny `mod_module_files`Steven Engler2025-01-061-0/+1
| | | | | | Denies 'mod.rs' files for consistency. https://rust-lang.github.io/rust-clippy/master/index.html#mod_module_files
* add_warnings, *: Allow clippy::needless_lifetimesNick Mathewson2024-12-031-0/+1
| | | | | | | | In 1.83, this warning triggers on many of our crates. We're thinking of fixing them all, but for now, we're going to disable the warning. This is part of #1765.
* Re-run maint/add_warning.Nick Mathewson2024-05-061-2/+2
| | | | This commit is automatically generated.
* Run maint/add_warning.Nick Mathewson2024-03-131-0/+1
|
* deny clippy::unchecked_duration_subtractiontrinity-1686a2024-02-291-0/+1
|
* Convert to the latest versions of dalek-cryptographyNick Mathewson2023-11-291-1/+1
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | The main changes that we have to adjust for are as follows: * In x25519-dalek: * `StaticSecret` is now behind a feature. * `StaticSecret::new` is deprecated in favor of `StaticSecret::random_from_rng`. * StaticSecret no longer does its own clamping. * In ed25519-dalek: * `SecretKey` has (in effect) been renamed to `SigningKey`. The name `SecretKey` is now an alias for `[u8; 32]`. * `SigningKey` is effectively a keypair, since it contains a public key as well. * `PublicKey` has been renamed to `VerifyingKey`. * The functions to extract a signing key and verifying key have been renamed as you might expect. * `ExpandedSecretKey` has been moved to `hasmat` and no longer implements `sign`. * `ExpanededSecretKey` now has as its elements a scalar and a hash prefix. * Various functions that took `&[u8]` now take `&[u8; N]`. * We no longer need a wrapper for older versions of rand. There is a single test in tor-keymgr that does not pass. I've marked it as ignore for now, in hopes that @gabi-250 can help me figure it out. This closes #808. There are several changes I want to make before we merge, however. They are marked with TODO DALEK.
* tor-cert: Add EncodedEd25519Cert type.Gabriela Moldovan2023-10-251-0/+2
|
* Run maint/add_warning to add lint block everywhereIan Jackson2023-08-231-0/+1
|
* tor-cert: actually use dangerously_assume_timelyEmil Engler2023-08-101-1/+1
| | | | | | This commit makes a trait function use another currently unused trait function, thereby increasing the test coverage, as well as being potentially more correct from a semantic point of view.
* Run add_warnings on all files.Nick Mathewson2023-08-041-2/+2
|
* Run maint/add_warning to actually apply new lint allowsIan Jackson2023-07-101-0/+2
|
* Run add_warning to remove `missing_panics_doc` deny.Nick Mathewson2023-07-061-1/+0
| | | | Closes #950.
* Remove spurious todo-hs items in tor-cert.Nick Mathewson2023-06-281-6/+0
| | | | | | | I am not sure why we wrote these comments, but they are incorrect: I've investigated the C code and found only 3 key types. The "unimplemented" types that the TODO comment here complains about are in fact certificate types.
* lints: Run maint/add_warning to actually apply new lintsIan Jackson2023-06-211-0/+2
|
* Deprecate check_key, and refactor its logic into the new functions.Nick Mathewson2023-05-161-16/+33
| | | | Closes #759
* tor-cert: Add new functions to replace KeyUnknownCert::check_key.Nick Mathewson2023-05-161-0/+30
| | | | | | | These should have a cleaner API than check_key, and be easier to understand. Part of #759
* fix a couple clippy lintstrinity-1686a2023-05-081-3/+3
|
* Merge branch 'ticket_525_part2' into 'main'Nick Mathewson2023-02-091-7/+11
|\ | | | | | | | | Apply restricted_msg to ChanMsg parts of tor-proto See merge request tpo/core/arti!1013
| * Change tor_bytes::Error::BadMessage to a Cow.Nick Mathewson2023-02-091-7/+11
| | | | | | | | | | | | | | | | | | | | Actually, to avoid making a breaking change, I'm deprecating BadMessage and creating a new InvalidMessage variant that takes a Cow. This way I don't need to track every crate that re-exposes tor_bytes::Error and call this a breaking change in those. Making this change will allow tor_bytes errors to be much more helpful.
* | Rename key identifiers that have changed in the specNick Mathewson2023-02-081-2/+2
|/ | | | | | | | | Generated with perl: s/K([PS])_hs_intro_tid/K$1_hs_ipt_sid/g; s/K([PS])_onion_ntor/K$1_ntor/g; s/K([PS])_hs_intro_ntor/K$1_hss_ntor/g; s/K([PS])_hs_desc_ephem/K$1_hss_desc_enc/g;
* tor-cert: document hs-related certificate types.Nick Mathewson2023-02-071-4/+25
| | | | | Also, explain why a few of these certificates aren't actually useful as certificates. (This issue is also documented in torspec!110)
* tor-cert: Implement Timebound for Ed25519CertNick Mathewson2023-02-071-4/+16
| | | | | This allows us to run `is_valid_at` and friends on the certificate itself, which we will use soon in hsdesc validity checks.
* Allow clippy::unchecked_duration_subtraction in testsNick Mathewson2023-01-271-0/+1
| | | | | This panics on error, and we're fine with a panic on misbehavior in tests.
* Disable clippy::unlinlined-format-argsNick Mathewson2023-01-271-0/+1
| | | | | | | | This warning kind of snuck up on us! (See #748) For now, let's disable it. (I've cleaned it up in a couple of examples, since those are meant to be more idiomatic and user-facing.) Closes #748.
* tor-cert: add a few hs TODOsNick Mathewson2023-01-061-0/+3
|
* test lint blocks: Add many many automaticallyIan Jackson2022-12-121-0/+8
| | | | | This is precisely the result of running the rune in maint/adhoc-add-lint-blocks.
* Run add_warnings.Nick Mathewson2022-11-031-0/+1
|