76 Commits

Author SHA1 Message Date
Jonas Platte
c82f600d6a
Fix new lints 2023-11-08 18:16:44 +01:00
Jonas Platte
e658b8b128
Remove 'www.' from ruma.io URLs 2023-10-12 15:44:00 +02:00
Jonas Platte
ba2914a22a
macros: Simplify symbol path 2023-08-25 10:36:25 +02:00
Jonas Platte
c7a3c4e4fc
Upgrade ed25519-dalek to 2.0
Co-authored-by: Kévin Commaille <zecakeh@tedomum.fr>
2023-08-24 20:48:54 +02:00
Jonas Platte
8e10064364 Enforce import grouping
Includes a few manual changes to make rustfmt behave a bit better.
2023-08-22 12:31:49 +02:00
Kévin Commaille
ffdd632701 signatures: Add missing RoomVersionId::V11 match 2023-08-12 15:54:41 +02:00
Jonas Platte
3dac70ead9
Remove most unreachable visibility modifiers 2023-07-19 14:32:14 +02:00
Jonas Platte
ba5bf8cfce
Replace assert_matches by assert_matches2 2023-06-08 11:37:11 +02:00
Kévin Commaille
d78c3e11f1 signatures: Remove age_ts from reference hash calculation
According to a spec clarification
2023-05-24 20:08:20 +02:00
Jonas Platte
4c85fe9c78
Replace compat feature with more fine-grained compat-* features
… and document them.
2023-04-20 14:00:27 +02:00
gnieto
7565588be7
signatures: Prevent accepting events without at least one valid signature
`verify_event` has been changed recently to be more aligned with the
spec. In the previous algorithm, it returned an error if the event was
not signed by at least one of the required entities.

The new algortihm is iterating over all the signtures for the required
entities *and* skipping unknown algorithms. If an event is signed only
by unkonwn algorithms, the event would be accepted and not verifications
will happen. In order to prevent that, we check that, at least, a single
key is checked. This covers the 2nd point in: https://spec.matrix.org/v1.6/appendices/#checking-for-a-signature

A few more test cases were added:

- The event is properly signed, but key map contains a key with an
  unknown algorithm. Under this circumstances, the event should be
  allowed.
- An event signed by multiple keys for an entity, should verify all
  those signatures
- An event signed by a single key with an unkown algorithm by the
  required entity, should fail
2023-03-02 09:34:57 +00:00
Jason Volk
87237bf100 signatures: Comply with the specified signature checking algorithm.
Based on research https://github.com/ruma/ruma/pull/1491#issuecomment-1445042510 by @zecakeh
2023-03-01 22:25:06 +01:00
Jason Volk
920a412da1 signatures: Skip keys which don't split so other keys can be used instead. 2023-03-01 22:25:06 +01:00
Jason Volk
bcb97b139d
signatures: Allow additional key version-string characters in compat mode
This complies with the published specification by default, with optional compatibility for additional federation keys in use.

Co-authored-by: Jonathan de Jong <jonathan@automatia.nl>
2023-03-01 09:54:38 +01:00
Kévin Commaille
f159776f52 chore: Make all applicable spec links use the latest spec instead of a specific version 2023-02-12 12:39:24 +01:00
Jonas Platte
fe5077b1a5
Upgrade base64 to 0.21 2023-01-31 18:01:01 +01:00
Jonas Platte
536341ca7e Upgrade base64 to 0.20 2022-12-20 15:34:50 +01:00
Jonas Platte
284b797e05
Add optional redacted_because insertion to redaction 2022-12-19 12:52:15 +01:00
Jonas Platte
ba9634f5bf
Update redact to take ownership of the event to be redacted 2022-12-19 10:42:27 +01:00
Kévin Commaille
045861441a doc: Update Matrix spec links to v1.4 2022-10-21 10:41:20 +02:00
Kévin Commaille
b538234bce chore: Fix new docs warnings 2022-10-12 10:31:23 +02:00
Jonas Platte
c745d3baf7
Fix clippy lint 2022-09-02 14:07:28 +02:00
Jonas Platte
6b04b6c567
signatures: Silence unreachable lint with unstable-exhaustive-patterns 2022-06-29 10:50:25 +02:00
Jonas Platte
a4a95e74fa Address review feedback and finish canonical JSON move 2022-06-23 10:18:26 +02:00
Jonas Platte
940450b953 [WIP] Move redaction from ruma-signatures to ruma-common 2022-06-23 10:18:26 +02:00
Jonas Platte
402b2764fb common: Move CanonicalJson out of serde mod and behind a Cargo feature 2022-06-23 10:18:26 +02:00
Kévin Commaille
3deae8eac7 identifiers: Add MatrixVersionId::V10
According to MSC3604
2022-06-21 13:38:34 +02:00
Kévin Commaille
75cf634413 signatures: Make some test assertions more helpful 2022-06-14 10:01:49 +02:00
Jonas Platte
8912182c56
Increase usage of implicit named arguments in format strings 2022-06-03 10:06:28 +02:00
Jonas Platte
73c2963ebd
Enforce consistent semicolons after ()-typed expressions in blocks 2022-06-03 08:40:16 +02:00
Jonathan de Jong
49663f4adf
signatures: Update pkcs8, and add ring backwards compatibility 2022-05-30 14:43:21 +02:00
Jonas Platte
5f902851af
Upgrade to Rust 2021 2022-05-27 12:04:23 +02:00
Jonas Platte
2257b4daf9
Derive Eq for types where it makes sense 2022-05-23 18:40:34 +02:00
Jonas Platte
6805f67d75
signatures: Remove PartialEq impl for Ed25519Verifier 2022-05-23 18:30:32 +02:00
Jonathan de Jong
cc72ddb689
Implement MSC2870 (Protect server ACLs from redaction) 2022-04-27 10:22:43 +02:00
Jonas Platte
6100a0fa12 Use new owned ID types in more places 2022-04-20 10:39:36 +02:00
Jonas Platte
d855ec33d6 identifiers: Update ToOwned implementations to use new types
… and a lot of changes that cascaded from that.
2022-04-20 10:39:36 +02:00
Jonas Platte
571fa90b8d
identifiers: Rename Error to IdParseError
… because it's now exported from the ruma-common crate root.
2022-03-28 12:22:28 +02:00
Timo Kösters
83e46b6aea
state-res: Fix restricted joins 2022-03-14 15:02:21 +01:00
Kévin Commaille
bdcf07be87
common: Merge ruma-serde into ruma-common 2022-03-10 12:11:00 +01:00
Kévin Commaille
088d1872b7
common: Merge ruma-identifiers into ruma-common 2022-03-09 17:46:51 +00:00
Jonathan de Jong
936bb64e84
Update links to spec.matrix.org/v1.2 2022-02-18 19:45:04 +01:00
Jonas Platte
41d6bcc2a6
Format code in doc comments 2022-02-18 11:33:16 +01:00
Jonas Platte
215cb35806
Clean up import grouping / ordering 2022-02-18 11:20:39 +01:00
Jonas Platte
2f84fdbd76
serde: Wrap base64::DecodeError to make base64 a private dependency 2022-02-12 00:36:20 +01:00
Jonas Platte
8d15c3d0f9
signatures: Merge SplitError into Error 2022-02-11 23:55:04 +01:00
Kévin Commaille
2da8a34ff4
signatures: Move Room v9 allowed content keys out of unstable-pre-spec
Part of #849
2022-02-10 18:11:29 +01:00
Jonathan de Jong
e4d8761222
signatures: Add redact_content function 2022-02-02 14:27:27 +01:00
Jonathan de Jong
bdf4a86770
signatures: Add redact_in_place 2022-02-01 15:03:22 +01:00
Jonas Platte
b7bcecbb77
serde: Fix lots of issues from previous commit 2022-01-23 14:10:57 +01:00