alpm_types/package/validation.rs
1//! Package validation handling.
2
3/// The validation method used during installation of a package.
4///
5/// A validation method can ensure the integrity of a package.
6/// Certain methods (i.e. [`PackageValidation::Pgp`]) can also be used to ensure a package's
7/// authenticity.
8///
9/// # Examples
10///
11/// Parsing from strings:
12///
13/// ```
14/// use std::str::FromStr;
15///
16/// use alpm_types::PackageValidation;
17///
18/// # fn main() -> Result<(), alpm_types::Error> {
19/// assert_eq!(
20/// PackageValidation::from_str("none")?,
21/// PackageValidation::None
22/// );
23/// assert_eq!(PackageValidation::from_str("md5")?, PackageValidation::Md5);
24/// assert_eq!(
25/// PackageValidation::from_str("sha256")?,
26/// PackageValidation::Sha256
27/// );
28/// assert_eq!(PackageValidation::from_str("pgp")?, PackageValidation::Pgp);
29///
30/// // Invalid values return an error.
31/// assert!(PackageValidation::from_str("crc32").is_err());
32/// # Ok(())
33/// # }
34/// ```
35///
36/// Displaying and serializing:
37///
38/// ```
39/// use alpm_types::PackageValidation;
40///
41/// # fn main() -> Result<(), alpm_types::Error> {
42/// assert_eq!(PackageValidation::Md5.to_string(), "md5");
43/// assert_eq!(
44/// serde_json::to_string(&PackageValidation::Sha256).expect("Serialization failed"),
45/// "\"Sha256\""
46/// );
47/// # Ok(())
48/// # }
49/// ```
50#[derive(
51 Clone,
52 Debug,
53 PartialEq,
54 serde::Deserialize,
55 serde::Serialize,
56 strum::EnumString,
57 strum::Display,
58 strum::AsRefStr,
59)]
60#[strum(serialize_all = "lowercase")]
61pub enum PackageValidation {
62 /// The package integrity and authenticity is **not validated**.
63 None,
64 /// The package is validated against an accompanying **MD5 hash digest**.
65 Md5,
66 /// The package is validated against an accompanying **SHA-256 hash digest**.
67 Sha256,
68 /// The package is validated using **PGP signatures**.
69 Pgp,
70}