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}