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.
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 serde_json::Error as SerdeError;
use thiserror::Error;
@ -120,6 +120,9 @@ pub enum SignatureError {
#[error("the signature used a unsupported algorithm")]
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")]
MissingSigningKey,

View File

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