Compare commits

..

12 Commits

Author SHA1 Message Date
Damir Jelić dda080c497 sqlite: Bump the version 2024-07-19 10:18:27 +02:00
Damir Jelić a18f90bfaa chore: Fix some invalid test data 2024-07-18 17:10:00 +02:00
Damir Jelić 60ed367fd9 chore: Format the changelog a bit better 2024-07-18 17:10:00 +02:00
Damir Jelić 1157067dba chore: Prepare the matrix-sdk-crypto release 0.7.2 2024-07-18 17:10:00 +02:00
Damir Jelić 8efdba6136 crypto: Fix UserIdentity::is_verified to take into account our own identity
The `UserIdentity::is_verified()` method in the matrix-sdk-crypto crate
before version 0.7.2 doesn't take into account the verification status
of the user's own identity while performing the check and may as a result
return a value contrary to what is implied by its name and documentation.

This patch fixes this and adds a regression test.

The method itself is not used internally and as such has not a larger
impact.

Co-authored-by: Denis Kasak <dkasak@termina.org.uk>
Signed-off-by: Damir Jelić <poljar@termina.org.uk>
2024-07-18 17:10:00 +02:00
Damir Jelić 1029e51eb3 chore: Use a released version of vodozemac (#3721) 2024-07-18 17:10:00 +02:00
Damir Jelić f25916cb5c chore: Remove an unused import 2024-05-13 12:48:30 +02:00
Damir Jelić 637e830e85 chore: Fix the formatting 2024-05-13 12:48:30 +02:00
Damir Jelić 04362cdc36 chore(crypto): Bump the version of the crypto crate to 0.7.1 2024-05-13 12:31:26 +02:00
Valere fa10bbb5dd fix(crypto): Avoid incorrect usage of private backup key
This fixes instances of key backup corruption and prevents inadvertently
logging the private backup key to the logs.
2024-05-13 12:31:26 +02:00
Benjamin Bouvier 4164effbf9 Bump matrix-sdk to 0.7.1 2024-01-22 11:27:03 +01:00
Sami J. Mäkinen 917e8c291e Upgrade aquamarine dependency 2024-01-22 11:25:56 +01:00
9 changed files with 355 additions and 146 deletions
Generated
+138 -127
View File
@@ -11,7 +11,7 @@ dependencies = [
"macroific",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -41,9 +41,9 @@ dependencies = [
[[package]]
name = "aes"
version = "0.8.3"
version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ac1f845298e95f983ff1944b728ae08b8cebab80d684f0a832ed0fc74dfa27e2"
checksum = "b169f7a6d4742236a0a00c541b845991d0ac43e546831af1249753ab4c3aa3a0"
dependencies = [
"cfg-if",
"cipher",
@@ -57,7 +57,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c3a9648d43b9cd48db467b3f87fdd6e146bcc88ab0180006cef2179fe11d01"
dependencies = [
"cfg-if",
"getrandom 0.2.11",
"getrandom 0.2.15",
"once_cell",
"version_check",
"zerocopy",
@@ -161,16 +161,16 @@ checksum = "d301b3b94cb4b2f23d7917810addbbaff90738e0ca2be692bd027e70d7e0330c"
[[package]]
name = "aquamarine"
version = "0.4.0"
version = "0.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "074b80d14d0240b6ce94d68f059a2d26a5d77280ae142662365a21ef6e2594ef"
checksum = "21cc1548309245035eb18aa7f0967da6bc65587005170c56e6ef2788a4cf3f4e"
dependencies = [
"include_dir",
"itertools 0.10.5",
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -217,7 +217,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -347,7 +347,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -358,7 +358,7 @@ checksum = "c980ee35e870bd1a4d2c8294d4c04d0499e67bca1e4b5cefcc693c2fa00caea9"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -425,7 +425,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b62ddb9cb1ec0a098ad4bbf9344d0713fa193ae1a80af55febcff2627b6a00c1"
dependencies = [
"futures-core",
"getrandom 0.2.11",
"getrandom 0.2.15",
"instant",
"pin-project-lite",
"rand 0.8.5",
@@ -465,6 +465,12 @@ version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
[[package]]
name = "base64"
version = "0.22.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "72b3254f16251a8381aa12e40e3c4d2f0199f8c6508fbecb9d91f575e0fbb8c6"
[[package]]
name = "base64ct"
version = "1.6.0"
@@ -782,7 +788,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1026,7 +1032,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "30d2b3721e861707777e3195b0158f950ae6dc4a27e4d02ff9f67e3eb3de199e"
dependencies = [
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1040,16 +1046,15 @@ dependencies = [
[[package]]
name = "curve25519-dalek"
version = "4.1.1"
version = "4.1.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e89b8c6a2e4b1f45971ad09761aafb85514a84744b67a95e32c3cc1352d1f65c"
checksum = "97fb8b7c4503de7d6ae7b42ab72a5a59857b4c937ec27a3d4539dba95b5ab2be"
dependencies = [
"cfg-if",
"cpufeatures",
"curve25519-dalek-derive",
"digest",
"fiat-crypto",
"platforms",
"rustc_version",
"serde",
"subtle",
@@ -1064,7 +1069,7 @@ checksum = "f46882e17999c6cc590af592290432be3bce0428cb0d5f8b6715e4dc7b383eb3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1088,7 +1093,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1099,7 +1104,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
dependencies = [
"darling_core",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1180,7 +1185,7 @@ dependencies = [
"macroific",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1204,7 +1209,7 @@ checksum = "5fe87ce4529967e0ba1dcf8450bab64d97dfd5010a6256187ffe2e43e6f0e049"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1258,7 +1263,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1294,9 +1299,9 @@ dependencies = [
[[package]]
name = "ed25519-dalek"
version = "2.1.0"
version = "2.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1f628eaec48bfd21b865dc2950cfa014450c01d2fa2b69a86c2fd5844ec523c0"
checksum = "4a3daa8e81a3963a60642bcc1f90a670680bd4a77535faa384e9d1c79d620871"
dependencies = [
"curve25519-dalek",
"ed25519",
@@ -1583,7 +1588,7 @@ checksum = "dd65f1b59dd22d680c7a626cc4a000c1e03d241c51c3e034d2bc9f1e90734f9b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1653,7 +1658,7 @@ dependencies = [
"macroific",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1859,7 +1864,7 @@ checksum = "87750cf4b7a4c0625b1529e4c543c2182106e4dedc60a2a6455e00d212c489ac"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -1931,9 +1936,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.11"
version = "0.2.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7"
dependencies = [
"cfg-if",
"js-sys",
@@ -2512,15 +2517,6 @@ dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.11.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b1c173a5686ce8bfa551b3563d0c2170bf24ca44da99c7ca4bfdab5418c3fe57"
dependencies = [
"either",
]
[[package]]
name = "itertools"
version = "0.12.0"
@@ -2638,9 +2634,9 @@ checksum = "03087c2bad5e1034e8cace5926dec053fb3790248370865f5117a7d0213354c8"
[[package]]
name = "libc"
version = "0.2.151"
version = "0.2.155"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "302d7ab3130588088d277783b1e2d2e10c9e9e4a16dd9050e6ec93fb3e7048f4"
checksum = "97b3888a4aecf77e811145cadf6eef5901f4782c53886191b2f693f24761847c"
[[package]]
name = "libm"
@@ -2728,7 +2724,7 @@ dependencies = [
"cfg-if",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -2739,7 +2735,7 @@ checksum = "13198c120864097a565ccb3ff947672d969932b7975ebd4085732c9f09435e55"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -2752,7 +2748,7 @@ dependencies = [
"macroific_core",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -2942,9 +2938,9 @@ checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
[[package]]
name = "matrix-pickle"
version = "0.1.1"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d7fd26463ce5d86b8d9bb9c4142d453198ba22fb91bd46d3c9f144ae699d821d"
checksum = "7eb521190328c57a2051f70250beb874dc0fac6bcd22b615f7f9700b7b4fb826"
dependencies = [
"matrix-pickle-derive",
"thiserror",
@@ -2952,20 +2948,20 @@ dependencies = [
[[package]]
name = "matrix-pickle-derive"
version = "0.1.1"
version = "0.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "93779aa78d39c2fe34746287b10a866192cf8af1b81767fff76bd64099acc0f5"
checksum = "c6fb3c7231cbb7fbbc50871615edebf65183b382cdaa1fe21c5e88a12617de8e"
dependencies = [
"proc-macro-crate 2.0.1",
"proc-macro-crate 3.1.0",
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
name = "matrix-sdk"
version = "0.7.0"
version = "0.7.1"
dependencies = [
"anyhow",
"anymap2",
@@ -3090,7 +3086,7 @@ dependencies = [
[[package]]
name = "matrix-sdk-crypto"
version = "0.7.0"
version = "0.7.2"
dependencies = [
"aes",
"anyhow",
@@ -3214,7 +3210,7 @@ dependencies = [
"assert_matches2",
"async-trait",
"base64 0.21.5",
"getrandom 0.2.11",
"getrandom 0.2.15",
"gloo-utils",
"indexed_db_futures",
"js-sys",
@@ -3305,7 +3301,7 @@ dependencies = [
"blake3",
"chacha20poly1305",
"displaydoc",
"getrandom 0.2.11",
"getrandom 0.2.15",
"hmac",
"pbkdf2",
"rand 0.8.5",
@@ -3322,7 +3318,7 @@ name = "matrix-sdk-test"
version = "0.7.0"
dependencies = [
"ctor",
"getrandom 0.2.11",
"getrandom 0.2.15",
"http",
"matrix-sdk-test-macros",
"once_cell",
@@ -3339,7 +3335,7 @@ name = "matrix-sdk-test-macros"
version = "0.7.0"
dependencies = [
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -3638,7 +3634,7 @@ version = "2.2.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd6c2c7054110ce4d7b4756d7b7fe507fea9413968ad0ef8f1d043d504aec725"
dependencies = [
"getrandom 0.2.11",
"getrandom 0.2.15",
"olm-sys",
"serde",
"serde_json",
@@ -3702,7 +3698,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -3927,7 +3923,7 @@ dependencies = [
"regex",
"regex-syntax 0.7.5",
"structmeta",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -4020,7 +4016,7 @@ dependencies = [
"phf_shared 0.11.2",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -4058,7 +4054,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -4134,12 +4130,6 @@ version = "0.2.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b4596b6d070b27117e987119b4dac604f3c58cfb0b191112e24771b2faeac1a6"
[[package]]
name = "platforms"
version = "3.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "626dec3cac7cc0e1577a2ec3fc496277ec2baa084bebad95bb6fdbfae235f84c"
[[package]]
name = "plotters"
version = "0.3.5"
@@ -4253,14 +4243,22 @@ dependencies = [
[[package]]
name = "proc-macro-crate"
version = "2.0.1"
version = "2.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "97dc5fea232fc28d2f597b37c4876b348a40e33f3b02cc975c8d006d78d94b1a"
checksum = "7e8366a6159044a37876a2b9817124296703c586a5c92e2c53751fa06d8d43e8"
dependencies = [
"toml_datetime",
"toml_edit 0.20.2",
]
[[package]]
name = "proc-macro-crate"
version = "3.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6d37c51ca738a55da99dc0c4a34860fd675453b8b36209178c2249bb13651284"
dependencies = [
"toml_edit 0.21.1",
]
[[package]]
name = "proc-macro-error"
version = "1.0.4"
@@ -4287,9 +4285,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.74"
version = "1.0.86"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2de98502f212cfcea8d0bb305bd0f49d7ebdd75b64ba0a68f937d888f4e0d6db"
checksum = "5e719e8df665df0d1c8fbfd238015744736151d4445ec0836b8e628aae103b77"
dependencies = [
"unicode-ident",
]
@@ -4322,12 +4320,12 @@ dependencies = [
[[package]]
name = "prost"
version = "0.12.3"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "146c289cda302b98a28d40c8b3b90498d6e526dd24ac2ecea73e4e491685b94a"
checksum = "e13db3d3fde688c61e2446b4d843bc27a7e8af269a69440c0308021dc92333cc"
dependencies = [
"bytes",
"prost-derive 0.12.3",
"prost-derive 0.13.1",
]
[[package]]
@@ -4345,15 +4343,15 @@ dependencies = [
[[package]]
name = "prost-derive"
version = "0.12.3"
version = "0.13.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "efb6c9a1dd1def8e2124d17e83a20af56f1570d6c2d2bd9e266ccb768df3840e"
checksum = "18bec9b0adc4eba778b33684b7ba3e7137789434769ee3ce3930463ef904cfca"
dependencies = [
"anyhow",
"itertools 0.11.0",
"itertools 0.12.0",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -4462,7 +4460,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom 0.2.11",
"getrandom 0.2.15",
]
[[package]]
@@ -4533,7 +4531,7 @@ version = "0.4.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a18479200779601e498ada4e8c1e1f50e3ee19deb0259c25825a98b5603b2cb4"
dependencies = [
"getrandom 0.2.11",
"getrandom 0.2.15",
"libredox",
"thiserror",
]
@@ -4666,7 +4664,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "688c63d65483050968b2a8937f7995f443e27041a0f7700aa59b0822aedebb74"
dependencies = [
"cc",
"getrandom 0.2.11",
"getrandom 0.2.15",
"libc",
"spin 0.9.8",
"untrusted",
@@ -4761,7 +4759,7 @@ dependencies = [
"base64 0.21.5",
"bytes",
"form_urlencoded",
"getrandom 0.2.11",
"getrandom 0.2.15",
"http",
"indexmap 2.1.0",
"js-sys",
@@ -4850,12 +4848,12 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0280534a4b3e34416f883285fac4f9c408cd0b737890ae66f3e7a7056d14be80"
dependencies = [
"once_cell",
"proc-macro-crate 2.0.1",
"proc-macro-crate 2.0.0",
"proc-macro2",
"quote",
"ruma-identifiers-validation",
"serde",
"syn 2.0.46",
"syn 2.0.71",
"toml 0.8.2",
]
@@ -5058,7 +5056,7 @@ checksum = "1db149f81d46d2deba7cd3c50772474707729550221e69588478ebf9ada425ae"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -5130,9 +5128,9 @@ dependencies = [
[[package]]
name = "serde"
version = "1.0.194"
version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0b114498256798c94a0689e1a15fec6005dee8ac1f41de56404b67afc2a4b773"
checksum = "bc76f558e0cbb2a839d37354c575f1dc3fdc6546b5be373ba43d95f231bf7c12"
dependencies = [
"serde_derive",
]
@@ -5150,22 +5148,22 @@ dependencies = [
[[package]]
name = "serde_bytes"
version = "0.11.14"
version = "0.11.15"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8b8497c313fd43ab992087548117643f6fcd935cbf36f176ffda0aacf9591734"
checksum = "387cc504cb06bb40a96c8e04e951fe01854cf6bc921053c954e4a606d9675c6a"
dependencies = [
"serde",
]
[[package]]
name = "serde_derive"
version = "1.0.194"
version = "1.0.204"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a3385e45322e8f9931410f01b3031ec534c3947d0e94c18049af4d9f9907d4e0"
checksum = "e0cd7e117be63d3c3678776753929474f3b04a43a080c744d6b0ae2a8c28e222"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -5194,9 +5192,9 @@ dependencies = [
[[package]]
name = "serde_json"
version = "1.0.110"
version = "1.0.120"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6fbd975230bada99c8bb618e0c365c2eefa219158d5c6c29610fd09ff1833257"
checksum = "4e0d21c9a8cae1235ad58a00c11cb40d4b1e5c784f1ef2c537876ed6ffd8b7c5"
dependencies = [
"itoa",
"ryu",
@@ -5261,7 +5259,7 @@ dependencies = [
"darling",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -5441,7 +5439,7 @@ dependencies = [
"proc-macro2",
"quote",
"structmeta-derive",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -5452,14 +5450,14 @@ checksum = "a60bcaff7397072dca0017d1db428e30d5002e00b6847703e2e42005c95fbe00"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
name = "subtle"
version = "2.5.0"
version = "2.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "81cdd64d312baedb58e21336b31bc043b77e01cc99033ce76ef539f78e965ebc"
checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292"
[[package]]
name = "symbolic-common"
@@ -5497,9 +5495,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.46"
version = "2.0.71"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "89456b690ff72fddcecf231caedbe615c59480c93358a93dfae7fc29e3ebbf0e"
checksum = "b146dcf730474b4bcd16c311627b31ede9ab149045db4d6088b3becaea046462"
dependencies = [
"proc-macro2",
"quote",
@@ -5549,22 +5547,22 @@ dependencies = [
[[package]]
name = "thiserror"
version = "1.0.56"
version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d54378c645627613241d077a3a79db965db602882668f9136ac42af9ecb730ad"
checksum = "c0342370b38b6a11b6cc11d6a805569958d54cfa061a29969c3b5ce2ea405724"
dependencies = [
"thiserror-impl",
]
[[package]]
name = "thiserror-impl"
version = "1.0.56"
version = "1.0.63"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa0faa943b50f3db30a20aa7e265dbc66076993efed8463e8de414e5d06d3471"
checksum = "a4558b58466b9ad7ca0f102865eccc95938dca1a74a856f2b57b6629050da261"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -5679,7 +5677,7 @@ checksum = "5b8a1e28f2deaa14e508979454cb3a223b10b938b45af148bc0986de36f1923b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -5763,9 +5761,9 @@ dependencies = [
[[package]]
name = "toml_datetime"
version = "0.6.3"
version = "0.6.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7cda73e2f1397b1262d6dfdcef8aafae14d1de7748d66822d3bfeeb6d03e5e4b"
checksum = "4badfd56924ae69bcc9039335b2e017639ce3f9b001c393c1b2d1ef846ce2cbf"
dependencies = [
"serde",
]
@@ -5794,6 +5792,17 @@ dependencies = [
"winnow",
]
[[package]]
name = "toml_edit"
version = "0.21.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6a8534fd7f78b5405e860340ad6575217ce99f38d4d5c8f2442cb5ecb50090e1"
dependencies = [
"indexmap 2.1.0",
"toml_datetime",
"winnow",
]
[[package]]
name = "tonic"
version = "0.9.2"
@@ -5908,7 +5917,7 @@ checksum = "34704c8d6ebcbc939824180af020566b01a7c01f80641264eba0999f6c2b6be7"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -6119,7 +6128,7 @@ version = "0.25.3"
source = "git+https://github.com/mozilla/uniffi-rs?rev=0d58c94cbd2ef63554f3388d03d55984be76bb1f#0d58c94cbd2ef63554f3388d03d55984be76bb1f"
dependencies = [
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -6150,7 +6159,7 @@ dependencies = [
"proc-macro2",
"quote",
"serde",
"syn 2.0.46",
"syn 2.0.71",
"toml 0.5.11",
"uniffi_build",
"uniffi_meta",
@@ -6243,7 +6252,7 @@ version = "1.6.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5e395fcf16a7a3d8127ec99782007af141946b4795001f876d54fb0d55978560"
dependencies = [
"getrandom 0.2.11",
"getrandom 0.2.15",
"serde",
"wasm-bindgen",
]
@@ -6279,22 +6288,24 @@ checksum = "49874b5167b65d7193b8aba1567f5c7d93d001cafc34600cee003eda787e483f"
[[package]]
name = "vodozemac"
version = "0.5.0"
version = "0.7.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6c66c59f2218deeddfe34c0fee8a1908967f8566bafd91c3c6b9600d0b68cde1"
checksum = "051d4af70b53b42adf2aac459a305851b8d754f210aaf11ab509e1065beff422"
dependencies = [
"aes",
"arrayvec",
"base64 0.21.5",
"base64 0.22.1",
"base64ct",
"cbc",
"chacha20poly1305",
"curve25519-dalek",
"ed25519-dalek",
"getrandom 0.2.11",
"getrandom 0.2.15",
"hkdf",
"hmac",
"matrix-pickle",
"pkcs7",
"prost 0.12.3",
"prost 0.13.1",
"rand 0.8.5",
"serde",
"serde_bytes",
@@ -6364,7 +6375,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
"wasm-bindgen-shared",
]
@@ -6398,7 +6409,7 @@ checksum = "f0eb82fcb7930ae6219a7ecfd55b217f5f0893484b7a13022ebb2b2bf20b5283"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@@ -6431,7 +6442,7 @@ checksum = "794645f5408c9a039fd09f4d113cdfb2e7eba5ff1956b07bcf701cf4b394fe89"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
@@ -6708,9 +6719,9 @@ dependencies = [
[[package]]
name = "x25519-dalek"
version = "2.0.0"
version = "2.0.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fb66477291e7e8d2b0ff1bcb900bf29489a9692816d79874bea351e7a8b6de96"
checksum = "c7e468321c81fb07fa7f4c636c3972b9100f0346e5b6a9f2bd0603a52f7ed277"
dependencies = [
"curve25519-dalek",
"rand_core 0.6.4",
@@ -6774,14 +6785,14 @@ checksum = "9ce1b18ccd8e73a9321186f97e46f9f04b778851177567b1975109d26a08d2a6"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
name = "zeroize"
version = "1.7.0"
version = "1.8.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "525b4ec142c6b68a2d10f01f7bbf6755599ca3f81ea53b8431b7dd348f5fdb2d"
checksum = "ced3678a2879b30306d323f4542626697a464a97c0a07c9aebf7ebca65cd4dde"
dependencies = [
"zeroize_derive",
]
@@ -6794,7 +6805,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.46",
"syn 2.0.71",
]
[[package]]
+1 -1
View File
@@ -51,7 +51,7 @@ tracing = { version = "0.1.40", default-features = false, features = ["std"] }
tracing-core = "0.1.32"
uniffi = { version = "0.25.3", git = "https://github.com/mozilla/uniffi-rs", rev = "0d58c94cbd2ef63554f3388d03d55984be76bb1f" }
uniffi_bindgen = { version = "0.25.3", git = "https://github.com/mozilla/uniffi-rs", rev = "0d58c94cbd2ef63554f3388d03d55984be76bb1f" }
vodozemac = "0.5.0"
vodozemac = { version = "0.7.0" }
zeroize = "1.6.0"
matrix-sdk = { path = "crates/matrix-sdk", version = "0.7.0", default-features = false }
+11
View File
@@ -1,3 +1,14 @@
# 0.7.2
### Security Fixes
- Fix `UserIdentity::is_verified` to take into account our own identity
[#d8d9dae](https://github.com/matrix-org/matrix-rust-sdk/commit/d8d9dae9d77bee48a2591b9aad9bd2fa466354cc) (Moderate, [GHSA-4qg4-cvh2-crgg](https://github.com/matrix-org/matrix-rust-sdk/security/advisories/GHSA-4qg4-cvh2-crgg)).
# 0.7.1
### Security Fixes
- Don't log the private part of the backup key, introduced in [#71136e4](https://github.com/matrix-org/matrix-rust-sdk/commit/71136e44c03c79f80d6d1a2446673bc4d53a2067).
# 0.7.0
- Add method to mark a list of inbound group sessions as backed up:
+1 -1
View File
@@ -9,7 +9,7 @@ name = "matrix-sdk-crypto"
readme = "README.md"
repository = "https://github.com/matrix-org/matrix-rust-sdk"
rust-version = { workspace = true }
version = "0.7.0"
version = "0.7.2"
[package.metadata.docs.rs]
rustdoc-args = ["--cfg", "docsrs"]
+33 -2
View File
@@ -626,8 +626,10 @@ mod tests {
use serde_json::json;
use crate::{
olm::BackedUpRoomKey, store::BackupDecryptionKey, types::RoomKeyBackupInfo, OlmError,
OlmMachine,
olm::BackedUpRoomKey,
store::{BackupDecryptionKey, Changes, CryptoStore, MemoryStore},
types::RoomKeyBackupInfo,
OlmError, OlmMachine,
};
fn room_key() -> BackedUpRoomKey {
@@ -850,4 +852,33 @@ mod tests {
assert!(result.trusted());
}
#[async_test]
async fn test_fix_backup_key_mismatch() {
let store = MemoryStore::new();
let backup_decryption_key = BackupDecryptionKey::new().unwrap();
store
.save_changes(Changes {
backup_decryption_key: Some(backup_decryption_key.clone()),
backup_version: Some("1".to_owned()),
..Default::default()
})
.await
.unwrap();
// Create the machine using `with_store` and without a call to enable_backup_v1,
// like regenerate_olm would do
let alice = OlmMachine::with_store(alice_id(), alice_device_id(), store).await.unwrap();
let binding = alice.backup_machine().backup_key.read().await;
let machine_backup_key = binding.as_ref().unwrap();
assert_eq!(
machine_backup_key.to_base64(),
backup_decryption_key.megolm_v1_public_key().to_base64(),
"The OlmMachine loaded the wrong backup key."
);
}
}
@@ -226,7 +226,11 @@ impl Deref for UserIdentity {
impl UserIdentity {
/// Is this user identity verified.
pub fn is_verified(&self) -> bool {
self.own_identity.as_ref().is_some_and(|o| o.is_identity_signed(&self.inner).is_ok())
self.own_identity.as_ref().is_some_and(|own_identity| {
// The identity of another user is verified iff our own identity is verified and
// if our own identity has signed the other user's identity.
own_identity.is_verified() && own_identity.is_identity_signed(&self.inner).is_ok()
})
}
/// Manually verify this user.
@@ -778,7 +782,7 @@ pub(crate) mod tests {
use assert_matches::assert_matches;
use matrix_sdk_test::async_test;
use ruma::{device_id, user_id};
use ruma::{device_id, user_id, UserId};
use serde_json::{json, Value};
use tokio::sync::Mutex;
@@ -788,10 +792,15 @@ pub(crate) mod tests {
};
use crate::{
identities::{manager::testing::own_key_query, Device},
machine::tests::{
get_machine_pair, mark_alice_identity_as_verified_test_helper,
setup_cross_signing_for_machine_test_helper,
},
olm::{Account, PrivateCrossSigningIdentity},
store::{CryptoStoreWrapper, MemoryStore},
store::{Changes, CryptoStoreWrapper, MemoryStore},
types::{CrossSigningKey, MasterPubkey, SelfSigningPubkey, Signatures, UserSigningPubkey},
verification::VerificationMachine,
OlmMachine,
};
#[test]
@@ -1006,4 +1015,84 @@ pub(crate) mod tests {
[second_device_id]
);
}
async fn get_machine_pair_with_signed_identities(
alice: &UserId,
bob: &UserId,
) -> (OlmMachine, OlmMachine) {
let (alice, bob, _) = get_machine_pair(alice, bob, false).await;
setup_cross_signing_for_machine_test_helper(&alice, &bob).await;
mark_alice_identity_as_verified_test_helper(&alice, &bob).await;
(alice, bob)
}
#[async_test]
async fn test_other_user_is_verified_if_my_identity_is_verified_and_they_are_cross_signed() {
let alice_user_id = user_id!("@alice:localhost");
let bob_user_id = user_id!("@bob:localhost");
let (alice, bob) =
get_machine_pair_with_signed_identities(alice_user_id, bob_user_id).await;
let bobs_own_identity =
bob.get_identity(bob.user_id(), None).await.unwrap().unwrap().own().unwrap();
let bobs_alice_identity =
bob.get_identity(alice.user_id(), None).await.unwrap().unwrap().other().unwrap();
assert!(bobs_own_identity.is_verified(), "Bob's identity should be verified.");
assert!(bobs_alice_identity.is_verified(), "Alice's identity should be verified as well.");
}
#[async_test]
async fn test_other_user_is_not_verified_if_they_are_not_cross_signed() {
let alice_user_id = user_id!("@alice:localhost");
let bob_user_id = user_id!("@bob:localhost");
let (alice, bob, _) = get_machine_pair(alice_user_id, bob_user_id, false).await;
setup_cross_signing_for_machine_test_helper(&alice, &bob).await;
let bobs_own_identity =
bob.get_identity(bob.user_id(), None).await.unwrap().unwrap().own().unwrap();
let bobs_alice_identity =
bob.get_identity(alice.user_id(), None).await.unwrap().unwrap().other().unwrap();
assert!(bobs_own_identity.is_verified(), "Bob's identity should be verified.");
assert!(!bobs_alice_identity.is_verified(), "Alice's identity should not be considered verified since Bob has not signed it.");
}
#[async_test]
async fn test_other_user_is_not_verified_if_my_identity_is_not_verified() {
let alice_user_id = user_id!("@alice:localhost");
let bob_user_id = user_id!("@bob:localhost");
let (alice, bob, _) = get_machine_pair(alice_user_id, bob_user_id, false).await;
setup_cross_signing_for_machine_test_helper(&alice, &bob).await;
mark_alice_identity_as_verified_test_helper(&alice, &bob).await;
let bobs_own_identity =
bob.get_identity(bob.user_id(), None).await.unwrap().unwrap().own().unwrap();
let bobs_alice_identity =
bob.get_identity(alice.user_id(), None).await.unwrap().unwrap().other().unwrap();
assert!(bobs_own_identity.is_verified(), "Bob's identity should be verified.");
assert!(bobs_alice_identity.is_verified(), "Alice's identity should be verified as well.");
bobs_own_identity.mark_as_unverified();
bob.store()
.save_changes(Changes {
identities: crate::store::IdentityChanges {
changed: vec![bobs_own_identity.inner.clone().into()],
..Default::default()
},
..Default::default()
})
.await
.unwrap();
assert!(!bobs_own_identity.is_verified(), "Bob's identity should not be verified anymore.");
assert!(
!bobs_alice_identity.is_verified(),
"Alice's identity should not be verified either."
);
}
}
+76 -9
View File
@@ -313,13 +313,16 @@ impl OlmMachine {
}
};
// FIXME: This is a workaround for `regenerate_olm` clearing the backup
// state. Ideally, backups should not get automatically enabled since
// the `OlmMachine` doesn't get enough info from the homeserver for this
// to work reliably.
let saved_keys = store.load_backup_keys().await?;
let maybe_backup_key = saved_keys.decryption_key.and_then(|k| {
if let Some(version) = saved_keys.backup_version {
MegolmV1BackupKey::from_base64(&k.to_base64()).ok().map(|k| {
k.set_version(version);
k
})
let megolm_v1_backup_key = k.megolm_v1_public_key();
megolm_v1_backup_key.set_version(version);
Some(megolm_v1_backup_key)
} else {
None
}
@@ -2169,8 +2172,10 @@ pub(crate) mod tests {
use crate::{
error::EventError,
machine::{EncryptionSyncChanges, OlmMachine},
olm::{InboundGroupSession, OutboundGroupSession, VerifyJson},
store::Changes,
olm::{
BackedUpRoomKey, ExportedRoomKey, InboundGroupSession, OutboundGroupSession, VerifyJson,
},
store::{BackupDecryptionKey, Changes, CryptoStore, MemoryStore},
types::{
events::{
room::encrypted::{EncryptedToDeviceEvent, ToDeviceEncryptedEventContent},
@@ -2273,7 +2278,7 @@ pub(crate) mod tests {
(machine, otk)
}
async fn get_machine_pair(
pub(crate) async fn get_machine_pair(
alice: &UserId,
bob: &UserId,
use_fallback_key: bool,
@@ -3218,7 +3223,7 @@ pub(crate) mod tests {
);
}
async fn setup_cross_signing_for_machine_test_helper(alice: &OlmMachine, bob: &OlmMachine) {
pub async fn setup_cross_signing_for_machine_test_helper(alice: &OlmMachine, bob: &OlmMachine) {
let CrossSigningBootstrapRequests { upload_signing_keys_req: alice_upload_signing, .. } =
alice.bootstrap_cross_signing(false).await.expect("Expect Alice x-signing key request");
@@ -3339,7 +3344,7 @@ pub(crate) mod tests {
bob.receive_keys_query_response(&TransactionId::new(), &kq_response).await.unwrap();
}
async fn mark_alice_identity_as_verified_test_helper(alice: &OlmMachine, bob: &OlmMachine) {
pub async fn mark_alice_identity_as_verified_test_helper(alice: &OlmMachine, bob: &OlmMachine) {
let alice_device =
bob.get_device(alice.user_id(), alice.device_id(), None).await.unwrap().unwrap();
@@ -4071,4 +4076,66 @@ pub(crate) mod tests {
// The waiting should successfully complete.
wait.await.unwrap();
}
#[async_test]
async fn test_fix_incorrect_usage_of_backup_key_causing_decryption_errors() {
let store = MemoryStore::new();
let backup_decryption_key = BackupDecryptionKey::new().unwrap();
store
.save_changes(Changes {
backup_decryption_key: Some(backup_decryption_key.clone()),
backup_version: Some("1".to_owned()),
..Default::default()
})
.await
.unwrap();
// Some valid key data
let data = json!({
"algorithm": "m.megolm.v1.aes-sha2",
"room_id": "!room:id",
"sender_key": "FOvlmz18LLI3k/llCpqRoKT90+gFF8YhuL+v1YBXHlw",
"session_id": "/2K+V777vipCxPZ0gpY9qcpz1DYaXwuMRIu0UEP0Wa0",
"session_key": "AQAAAAAclzWVMeWBKH+B/WMowa3rb4ma3jEl6n5W4GCs9ue65CruzD3ihX+85pZ9hsV9Bf6fvhjp76WNRajoJYX0UIt7aosjmu0i+H+07hEQ0zqTKpVoSH0ykJ6stAMhdr6Q4uW5crBmdTTBIsqmoWsNJZKKoE2+ldYrZ1lrFeaJbjBIY/9ivle++74qQsT2dIKWPanKc9Q2Gl8LjESLtFBD9Fmt",
"sender_claimed_keys": {
"ed25519": "F4P7f1Z0RjbiZMgHk1xBCG3KC4/Ng9PmxLJ4hQ13sHA"
},
"forwarding_curve25519_key_chain": []
});
let backed_up_room_key: BackedUpRoomKey = serde_json::from_value(data).unwrap();
// Create the machine using `with_store` and without a call to enable_backup_v1,
// like regenerate_olm would do
let alice = OlmMachine::with_store(user_id(), alice_device_id(), store).await.unwrap();
let exported_key = ExportedRoomKey::from_backed_up_room_key(
room_id!("!room:id").to_owned(),
"/2K+V777vipCxPZ0gpY9qcpz1DYaXwuMRIu0UEP0Wa0".into(),
backed_up_room_key,
);
alice.store().import_exported_room_keys(vec![exported_key], |_, _| {}).await.unwrap();
let (_, request) = alice.backup_machine().backup().await.unwrap().unwrap();
let key_backup_data = request.rooms[&room_id!("!room:id").to_owned()]
.sessions
.get("/2K+V777vipCxPZ0gpY9qcpz1DYaXwuMRIu0UEP0Wa0")
.unwrap()
.deserialize()
.unwrap();
let ephemeral = key_backup_data.session_data.ephemeral.encode();
let ciphertext = key_backup_data.session_data.ciphertext.encode();
let mac = key_backup_data.session_data.mac.encode();
// Prior to the fix for GHSA-9ggc-845v-gcgv, this would produce a
// `Mac(MacError)`
backup_decryption_key
.decrypt_v1(&ephemeral, &mac, &ciphertext)
.expect("The backed up key should be decrypted successfully");
}
}
+1 -1
View File
@@ -1,6 +1,6 @@
[package]
name = "matrix-sdk-sqlite"
version = "0.7.0"
version = "0.7.1"
edition = "2021"
repository = "https://github.com/matrix-org/matrix-rust-sdk"
description = "Sqlite storage backend for matrix-sdk"
+2 -2
View File
@@ -9,7 +9,7 @@ name = "matrix-sdk"
readme = "README.md"
repository = "https://github.com/matrix-org/matrix-rust-sdk"
rust-version = { workspace = true }
version = "0.7.0"
version = "0.7.1"
[package.metadata.docs.rs]
features = ["docsrs"]
@@ -62,7 +62,7 @@ docsrs = ["e2e-encryption", "sqlite", "indexeddb", "sso-login", "qrcode", "image
[dependencies]
anyhow = { workspace = true, optional = true }
anymap2 = "0.13.0"
aquamarine = "0.4.0"
aquamarine = "0.5.0"
as_variant = { workspace = true }
async-channel = "2.1.0"
async-stream = { workspace = true }