mirror of
https://github.com/matrix-org/matrix-rust-sdk.git
synced 2026-08-01 18:36:54 -04:00
refactor(crypto): Inline Account::sign_master_key
Co-Authored-By: Richard van der Hoff <richard@matrix.org> Co-Authored-By: Andy Balaam <andy.balaam@matrix.org> Signed-off-by: Skye Elliot <actuallyori@gmail.com>
This commit is contained in:
@@ -25,7 +25,7 @@ use as_variant::as_variant;
|
||||
use matrix_sdk_common::locks::RwLock;
|
||||
use ruma::{
|
||||
DeviceId, EventId, OwnedDeviceId, OwnedUserId, RoomId, UserId,
|
||||
api::client::keys::upload_signatures::v3::Request as SignatureUploadRequest,
|
||||
api::client::keys::upload_signatures::v3::{Request as SignatureUploadRequest, SignedKeys},
|
||||
events::{key::verification::VerificationMethod, room::message::MessageType},
|
||||
};
|
||||
use serde::{Deserialize, Deserializer, Serialize};
|
||||
@@ -40,7 +40,8 @@ use crate::{
|
||||
types::{Changes, IdentityChanges},
|
||||
},
|
||||
types::{
|
||||
MasterPubkey, SelfSigningPubkey, UserSigningPubkey, requests::OutgoingVerificationRequest,
|
||||
CrossSigningKey, MasterPubkey, SelfSigningPubkey, UserSigningPubkey,
|
||||
requests::OutgoingVerificationRequest,
|
||||
},
|
||||
verification::VerificationMachine,
|
||||
};
|
||||
@@ -230,7 +231,23 @@ impl OwnUserIdentity {
|
||||
|
||||
let cache = self.store.cache().await?;
|
||||
let account = cache.account().await?;
|
||||
account.sign_master_key(&self.master_key)
|
||||
|
||||
let public_key = self
|
||||
.master_key
|
||||
.get_first_key()
|
||||
.ok_or(SignatureError::MissingSigningKey)?
|
||||
.to_base64()
|
||||
.into();
|
||||
|
||||
let mut cross_signing_key: CrossSigningKey = (*self.master_key).as_ref().clone();
|
||||
cross_signing_key.signatures.clear();
|
||||
account.sign_cross_signing_key(&mut cross_signing_key)?;
|
||||
|
||||
let mut user_signed_keys = SignedKeys::new();
|
||||
user_signed_keys.add_cross_signing_keys(public_key, cross_signing_key.to_raw());
|
||||
|
||||
let signed_keys = [(self.user_id().to_owned(), user_signed_keys)].into();
|
||||
Ok(SignatureUploadRequest::new(signed_keys))
|
||||
}
|
||||
|
||||
/// Send a verification request to our other devices.
|
||||
|
||||
@@ -31,10 +31,7 @@ use ruma::{
|
||||
OwnedUserId, RoomId, SecondsSinceUnixEpoch, UInt, UserId,
|
||||
api::client::{
|
||||
dehydrated_device::{DehydratedDeviceData, DehydratedDeviceV2},
|
||||
keys::{
|
||||
upload_keys,
|
||||
upload_signatures::v3::{Request as SignatureUploadRequest, SignedKeys},
|
||||
},
|
||||
keys::{upload_keys, upload_signatures::v3::Request as SignatureUploadRequest},
|
||||
},
|
||||
canonical_json::to_canonical_value,
|
||||
events::{AnyToDeviceEvent, room::history_visibility::HistoryVisibility},
|
||||
@@ -70,7 +67,7 @@ use crate::{
|
||||
types::{Changes, DeviceChanges},
|
||||
},
|
||||
types::{
|
||||
CrossSigningKey, DeviceKeys, EventEncryptionAlgorithm, MasterPubkey, OneTimeKey, SignedKey,
|
||||
CrossSigningKey, DeviceKeys, EventEncryptionAlgorithm, OneTimeKey, SignedKey,
|
||||
events::{
|
||||
olm_v1::AnyDecryptedOlmEvent,
|
||||
room::encrypted::{
|
||||
@@ -846,25 +843,6 @@ impl Account {
|
||||
Ok(())
|
||||
}
|
||||
|
||||
/// Sign the given Master Key
|
||||
pub fn sign_master_key(
|
||||
&self,
|
||||
master_key: &MasterPubkey,
|
||||
) -> Result<SignatureUploadRequest, SignatureError> {
|
||||
let public_key =
|
||||
master_key.get_first_key().ok_or(SignatureError::MissingSigningKey)?.to_base64().into();
|
||||
|
||||
let mut cross_signing_key: CrossSigningKey = master_key.as_ref().clone();
|
||||
cross_signing_key.signatures.clear();
|
||||
self.sign_cross_signing_key(&mut cross_signing_key)?;
|
||||
|
||||
let mut user_signed_keys = SignedKeys::new();
|
||||
user_signed_keys.add_cross_signing_keys(public_key, cross_signing_key.to_raw());
|
||||
|
||||
let signed_keys = [(self.user_id().to_owned(), user_signed_keys)].into();
|
||||
Ok(SignatureUploadRequest::new(signed_keys))
|
||||
}
|
||||
|
||||
/// Convert a JSON value to the canonical representation and sign the JSON
|
||||
/// string.
|
||||
///
|
||||
|
||||
Reference in New Issue
Block a user