mirror of
https://github.com/chatmail/core.git
synced 2026-05-05 22:36:30 +03:00
Do not include "prefer-encrypt=nopreference;" in Autocrypt header
Specification https://autocrypt.org/level1.html#the-autocrypt-header says that prefer-encrypt attribute can only occur with the value `mutual`.
This commit is contained in:
@@ -100,11 +100,11 @@ impl fmt::Display for Aheader {
|
|||||||
// wrap the lines according to RFC 5322
|
// wrap the lines according to RFC 5322
|
||||||
// (which may insert a linebreak before every whitespace)
|
// (which may insert a linebreak before every whitespace)
|
||||||
let keydata = self.public_key.to_base64(78);
|
let keydata = self.public_key.to_base64(78);
|
||||||
write!(
|
write!(fmt, "addr={};", self.addr)?;
|
||||||
fmt,
|
if self.prefer_encrypt == EncryptPreference::Mutual {
|
||||||
"addr={}; prefer-encrypt={}; keydata={}",
|
write!(fmt, " prefer-encrypt=mutual;")?;
|
||||||
self.addr, self.prefer_encrypt, keydata
|
}
|
||||||
)
|
write!(fmt, " keydata={}", keydata)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -229,6 +229,7 @@ mod tests {
|
|||||||
let ah = Aheader::from_str(fixed_header).expect("failed to parse");
|
let ah = Aheader::from_str(fixed_header).expect("failed to parse");
|
||||||
assert_eq!(ah.addr, "a@b.example.org");
|
assert_eq!(ah.addr, "a@b.example.org");
|
||||||
assert_eq!(ah.prefer_encrypt, EncryptPreference::Mutual);
|
assert_eq!(ah.prefer_encrypt, EncryptPreference::Mutual);
|
||||||
|
assert_eq!(format!("{}", ah), fixed_header);
|
||||||
|
|
||||||
let rendered = ah.to_string();
|
let rendered = ah.to_string();
|
||||||
assert_eq!(rendered, fixed_header);
|
assert_eq!(rendered, fixed_header);
|
||||||
@@ -255,4 +256,30 @@ mod tests {
|
|||||||
assert!(Aheader::from_str(" ;;").is_err());
|
assert!(Aheader::from_str(" ;;").is_err());
|
||||||
assert!(Aheader::from_str("addr=a@t.de; unknwon=1; keydata=jau").is_err());
|
assert!(Aheader::from_str("addr=a@t.de; unknwon=1; keydata=jau").is_err());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_display_aheader() {
|
||||||
|
assert!(format!(
|
||||||
|
"{}",
|
||||||
|
Aheader::new(
|
||||||
|
"test@example.com".to_string(),
|
||||||
|
Key::from_base64(RAWKEY, KeyType::Public).unwrap(),
|
||||||
|
EncryptPreference::Mutual
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.contains("prefer-encrypt=mutual;"));
|
||||||
|
|
||||||
|
// According to Autocrypt Level 1 specification,
|
||||||
|
// only "prefer-encrypt=mutual;" can be used.
|
||||||
|
// If the setting is nopreference, the whole attribute is omitted.
|
||||||
|
assert!(!format!(
|
||||||
|
"{}",
|
||||||
|
Aheader::new(
|
||||||
|
"test@example.com".to_string(),
|
||||||
|
Key::from_base64(RAWKEY, KeyType::Public).unwrap(),
|
||||||
|
EncryptPreference::NoPreference
|
||||||
|
)
|
||||||
|
)
|
||||||
|
.contains("prefer-encrypt"));
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user