crypto: Don't panic if the key id can't be parsed.

master
Damir Jelić 2020-08-14 14:25:51 +02:00
parent 181c2a92de
commit d21e8213b5
2 changed files with 5 additions and 2 deletions

View File

@ -13,7 +13,7 @@
// limitations under the License. // limitations under the License.
use cjson::Error as CjsonError; use cjson::Error as CjsonError;
use matrix_sdk_common::identifiers::{DeviceId, UserId}; use matrix_sdk_common::identifiers::{DeviceId, Error as IdentifierError, UserId};
use olm_rs::errors::{OlmGroupSessionError, OlmSessionError}; use olm_rs::errors::{OlmGroupSessionError, OlmSessionError};
use serde_json::Error as SerdeError; use serde_json::Error as SerdeError;
use thiserror::Error; use thiserror::Error;
@ -120,6 +120,9 @@ pub enum SignatureError {
#[error("the signature used a unsupported algorithm")] #[error("the signature used a unsupported algorithm")]
UnsupportedAlgorithm, UnsupportedAlgorithm,
#[error("the key id of the signing key is invalid")]
InvalidKeyId(#[from] IdentifierError),
#[error("the signing key is missing from the object that signed the message")] #[error("the signing key is missing from the object that signed the message")]
MissingSigningKey, MissingSigningKey,

View File

@ -104,7 +104,7 @@ impl MasterPubkey {
verify_json( verify_json(
&self.0.user_id, &self.0.user_id,
&DeviceKeyId::try_from(key_id.as_str()).unwrap(), &DeviceKeyId::try_from(key_id.as_str())?,
key, key,
&mut to_value(subkey.cross_signing_key()).map_err(|_| SignatureError::NotAnObject)?, &mut to_value(subkey.cross_signing_key()).map_err(|_| SignatureError::NotAnObject)?,
) )