Skip to content

Commit 80f5e83

Browse files
committed
Update presage and patch dependencies to support latest upstream libsignal changes.
1 parent 81f434a commit 80f5e83

11 files changed

Lines changed: 1954 additions & 1273 deletions

File tree

Cargo.lock

Lines changed: 1909 additions & 1255 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
resolver = "2"
33
members = [
44
"crates/bitpart",
5-
"crates/bitpart-cli",
5+
# "crates/bitpart-cli",
66
"crates/bitpart-common",
77
"crates/presage-store-bitpart",
88
]
@@ -20,6 +20,7 @@ keywords = ["signal", "chat", "bot"]
2020
reqwest-websocket = { git = 'https://github.com/throneless-tech/reqwest-websocket' }
2121
curve25519-dalek = { git = 'https://github.com/signalapp/curve25519-dalek', tag = 'signal-curve25519-4.1.3' }
2222
quickcheck_async = { git = 'https://github.com/markbt/quickcheck_async', branch = 'syn-deps' }
23+
libsqlite3-sys = { version = "0.36.0", git = "https://github.com/whisperfish/rusqlite", rev = '2a42b3354c9194700d08aa070f70a131a470e7dc' }
2324

2425
[profile.dev]
2526
debug = true

crates/bitpart-cli/Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ serde = { version = "1.0.204", features = ["derive"] }
2222
serde_json = "1.0.132"
2323
similar = "2.7.0"
2424
tokio = { version = "1.43.0", features = ["full"] }
25-
tokio-tungstenite = { version = "0.26.1", features = ["url"] }
25+
tokio-tungstenite = { version = "0.26.1", features = ["url", "native-tls"] }
2626
tracing = "0.1.41"
2727
tracing-log = "0.2.0"
2828
tracing-subscriber = { version = "0.3.19", features = ["env-filter"] }

crates/bitpart-common/Cargo.toml

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@ figment = "0.10.19"
1818
futures = "0.3.31"
1919
hex = "0.4.3"
2020
opentelemetry-otlp = "0.29.0"
21-
presage = { git = "https://github.com/whisperfish/presage", rev = "c9276897d1ae31212f724dcece830822e3b037fd" }
21+
presage = { git = "https://github.com/whisperfish/presage", rev = "52057088c979eb404432ef2f7f9939ce141bb964" }
2222
presage-store-bitpart= { path = "../presage-store-bitpart" }
2323
prost = "0.13.5"
24-
sea-orm = "~1.0"
24+
sea-orm = { git = "https://github.com/throneless-tech/sea-orm", rev = "0c889ce5643fa1431f5107fe597070f3248a95e6", features = ["sqlx-sqlite", "runtime-tokio-rustls", "macros"] }
25+
sea-orm-migration = { git = "https://github.com/throneless-tech/sea-orm", rev = "0c889ce5643fa1431f5107fe597070f3248a95e6" }
2526
serde = { version = "1.0.204", features = ["derive"] }
2627
serde_json = "1.0.132"
2728
thiserror = "2.0.12"

crates/bitpart-common/src/error.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ use hex;
2222
use opentelemetry_otlp;
2323
use presage::{
2424
self,
25-
libsignal_service::{prelude::InvalidDeviceId, protocol::SignalProtocolError},
25+
libsignal_service::{protocol::InvalidDeviceId, protocol::SignalProtocolError},
2626
};
2727
use presage_store_bitpart::BitpartStoreError;
2828
use prost;

crates/bitpart/Cargo.toml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ keywords.workspace = true
1212
[dependencies]
1313
anyhow = "1.0"
1414
async-recursion = "1.1.1"
15-
axum = { version = "0.8.0", features = ["http2", "macros", "ws"] }
15+
axum = { version = "^0.8.8", features = ["http2", "macros", "ws"] }
1616
base64 = "0.22.1"
1717
bincode = "1.3.3"
1818
bitpart-common = { path = "../bitpart-common" }
@@ -25,19 +25,19 @@ figment = { version = "0.10.19", features = ["env", "toml"] }
2525
figment_file_provider_adapter = "0.1.1"
2626
futures = "0.3.31"
2727
hex = "0.4.3"
28-
libsqlite3-sys = { version = "0.26.0", features = ["bundled-sqlcipher"] }
28+
libsqlite3-sys = { version = "0.36.0", features = ["bundled-sqlcipher-custom-crypto"] }
2929
md-5 = "0.10.6"
3030
mime_guess = "2.0.5"
3131
opentelemetry = "0.29.1"
3232
opentelemetry-otlp = { version = "0.29.0", features = ["reqwest-rustls"] }
3333
opentelemetry_sdk = "0.29.0"
34-
presage = { git = "https://github.com/whisperfish/presage", rev = "c9276897d1ae31212f724dcece830822e3b037fd" }
34+
presage = { git = "https://github.com/whisperfish/presage", rev = "52057088c979eb404432ef2f7f9939ce141bb964" }
3535
presage-store-bitpart= { path = "../presage-store-bitpart" }
3636
rand = "0.8.5"
37-
regex = "1.10.6"
37+
regex = "1.11.2"
3838
sanitise-file-name = "1.0.0"
39-
sea-orm = { version = "~1.0", features = ["sqlx-sqlite", "runtime-tokio-rustls", "macros"] }
40-
sea-orm-migration = "1.0.1"
39+
sea-orm = { git = "https://github.com/throneless-tech/sea-orm", rev = "0c889ce5643fa1431f5107fe597070f3248a95e6", features = ["sqlx-sqlite", "runtime-tokio-rustls", "macros"] }
40+
sea-orm-migration = { git = "https://github.com/throneless-tech/sea-orm", rev = "0c889ce5643fa1431f5107fe597070f3248a95e6" }
4141
serde = { version = "1.0.204", features = ["derive"] }
4242
serde_json = "1.0.117"
4343
subtle = { version = "2.6.1", features = ["const-generics"] }

crates/presage-store-bitpart/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -15,10 +15,10 @@ base64 = "0.22"
1515
chrono = "0.4.35"
1616
fs_extra = "1.3"
1717
futures = "0.3.31"
18-
presage = { git = "https://github.com/whisperfish/presage", rev = "c9276897d1ae31212f724dcece830822e3b037fd" }
18+
presage = { git = "https://github.com/whisperfish/presage", rev = "52057088c979eb404432ef2f7f9939ce141bb964" }
1919
prost = "0.13"
2020
quickcheck_macros = "1.0.0"
21-
sea-orm = { version = "~1.0", features = ["sqlx-sqlite", "runtime-tokio-rustls", "macros"] }
21+
sea-orm = { git = "https://github.com/throneless-tech/sea-orm", rev = "0c889ce5643fa1431f5107fe597070f3248a95e6", features = ["sqlx-sqlite", "runtime-tokio-rustls", "macros"] }
2222
serde = { version = "1.0", features = ["derive"] }
2323
serde_json = { version = "1.0", features = ["preserve_order"] }
2424
sha2 = "0.10"

crates/presage-store-bitpart/src/error.rs

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,10 +18,11 @@
1818
// along with this program. If not, see <http://www.gnu.org/licenses/>.
1919

2020
use presage::{
21-
libsignal_service::{prelude::InvalidDeviceId, protocol::SignalProtocolError},
21+
libsignal_service::{protocol::InvalidDeviceId, protocol::SignalProtocolError},
2222
store::StoreError,
2323
};
2424
use sea_orm::DbErr;
25+
use std::array::TryFromSliceError;
2526
use std::str;
2627
use tracing::error;
2728

@@ -53,6 +54,8 @@ pub enum BitpartStoreError {
5354
SignalProtocol(#[from] SignalProtocolError),
5455
#[error("Invalid device ID: `{0}`")]
5556
InvalidDeviceId(#[from] InvalidDeviceId),
57+
#[error("Invalid master key: `{0}`")]
58+
InvalidMasterKey(#[from] TryFromSliceError),
5659
}
5760

5861
impl StoreError for BitpartStoreError {}

crates/presage-store-bitpart/src/lib.rs

Lines changed: 23 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@
2020
use base64::prelude::*;
2121
use presage::{
2222
libsignal_service::{
23-
prelude::{ProfileKey, Uuid},
23+
prelude::{MasterKey, ProfileKey, Uuid},
2424
protocol::{IdentityKeyPair, SenderCertificate},
2525
},
2626
manager::RegistrationData,
@@ -49,6 +49,7 @@ const BITPART_TREE_STATE: &str = "state";
4949

5050
const BITPART_KEY_REGISTRATION: &str = "registration";
5151
const BITPART_KEY_SENDER_CERTIFICATE: &str = "sender_certificate";
52+
const BITPART_KEY_MASTER: &str = "master";
5253

5354
#[derive(Clone)]
5455
pub struct BitpartStore {
@@ -309,6 +310,27 @@ impl StateStore for BitpartStore {
309310
.await?;
310311
Ok(())
311312
}
313+
314+
async fn fetch_master_key(&self) -> Result<Option<MasterKey>, Self::StateStoreError> {
315+
let value: Option<Vec<u8>> = self.get(BITPART_TREE_STATE, BITPART_KEY_MASTER).await?;
316+
value
317+
.map(|value| MasterKey::from_slice(&value))
318+
.transpose()
319+
.map_err(From::from)
320+
}
321+
322+
async fn store_master_key(
323+
&self,
324+
master_key: Option<&MasterKey>,
325+
) -> Result<(), Self::StateStoreError> {
326+
self.insert(
327+
BITPART_TREE_STATE,
328+
BITPART_KEY_MASTER,
329+
master_key.map(|k| &k.inner[..]),
330+
)
331+
.await?;
332+
Ok(())
333+
}
312334
}
313335

314336
impl Store for BitpartStore {

crates/presage-store-bitpart/src/protobuf.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -27,9 +27,9 @@ use std::str::FromStr;
2727
use presage::libsignal_service::content::Content;
2828
use presage::libsignal_service::content::ContentBody;
2929
use presage::libsignal_service::content::Metadata;
30-
use presage::libsignal_service::prelude::DeviceId;
3130
use presage::libsignal_service::prelude::Uuid;
3231
use presage::libsignal_service::proto;
32+
use presage::libsignal_service::protocol::DeviceId;
3333
use presage::libsignal_service::protocol::ServiceId;
3434

3535
use crate::BitpartStoreError;

0 commit comments

Comments
 (0)