ruma-events: Update the constructor of the start event for the new key agreement.

This commit is contained in:
Damir Jelić 2020-07-15 11:14:40 +02:00 committed by Jonas Platte
parent 9eb0266cb0
commit b5b0ca267b
No known key found for this signature in database
GPG Key ID: CC154DE0E30B7C67

View File

@ -41,7 +41,7 @@ pub struct MSasV1Content {
/// The key agreement protocols the sending device understands.
///
/// Must include at least `curve25519`.
/// Must include at least `Curve25519` or `Curve25519HkdfSha256`.
pub key_agreement_protocols: Vec<KeyAgreementProtocol>,
/// The hash methods the sending device understands.
@ -107,8 +107,17 @@ impl MSasV1Content {
/// `MessageAuthenticationCode::HkdfHmacSha256`.
/// * `short_authentication_string` does not include `ShortAuthenticationString::Decimal`.
pub fn new(options: MSasV1ContentOptions) -> Result<Self, InvalidInput> {
if !options.key_agreement_protocols.contains(&KeyAgreementProtocol::Curve25519) {
return Err(InvalidInput("`key_agreement_protocols` must contain at least `KeyAgreementProtocol::Curve25519`".into()));
if !options.key_agreement_protocols.contains(&KeyAgreementProtocol::Curve25519)
&& !options
.key_agreement_protocols
.contains(&KeyAgreementProtocol::Curve25519HkdfSha256)
{
return Err(InvalidInput(
"`key_agreement_protocols` must contain at \
least `KeyAgreementProtocol::Curve25519` or \
`KeyAgreementProtocol::Curve25519HkdfSha256`"
.into(),
));
}
if !options.hashes.contains(&HashAlgorithm::Sha256) {
@ -121,11 +130,19 @@ impl MSasV1Content {
.message_authentication_codes
.contains(&MessageAuthenticationCode::HkdfHmacSha256)
{
return Err(InvalidInput("`message_authentication_codes` must contain at least `MessageAuthenticationCode::HkdfHmacSha256`".into()));
return Err(InvalidInput(
"`message_authentication_codes` must contain \
at least `MessageAuthenticationCode::HkdfHmacSha256`"
.into(),
));
}
if !options.short_authentication_string.contains(&ShortAuthenticationString::Decimal) {
return Err(InvalidInput("`short_authentication_string` must contain at least `ShortAuthenticationString::Decimal`".into()));
return Err(InvalidInput(
"`short_authentication_string` must contain \
at least `ShortAuthenticationString::Decimal`"
.into(),
));
}
Ok(Self {