sos_integrity/
lib.rs

1#![deny(missing_docs)]
2#![forbid(unsafe_code)]
3#![cfg_attr(all(doc, CHANNEL_NIGHTLY), feature(doc_auto_cfg))]
4//! Integrity checks for vaults, event logs and external files.
5mod account_integrity;
6mod error;
7mod event_integrity;
8#[cfg(feature = "files")]
9mod file_integrity;
10mod vault_integrity;
11
12pub use account_integrity::{account_integrity, FolderIntegrityEvent};
13pub use event_integrity::event_integrity;
14pub use vault_integrity::vault_integrity;
15
16#[cfg(feature = "files")]
17pub use file_integrity::{file_integrity, FileIntegrityEvent};
18
19pub use error::Error;
20
21/// Result type for the library.
22pub(crate) type Result<T> = std::result::Result<T, Error>;
23
24use sos_core::{commit::CommitHash, ExternalFile, VaultId};
25
26/// Reasons why an integrity check can fail.
27#[derive(Debug)]
28pub enum IntegrityFailure {
29    /// Vault or event log file or data is missing.
30    MissingFolder(VaultId),
31    /// External file is missing.
32    MissingFile(ExternalFile),
33    /// Checksum mismatch for a folder vault or event log.
34    CorruptedFolder {
35        /// Folder identifier.
36        folder_id: VaultId,
37        /// Expected file name checksum.
38        expected: CommitHash,
39        /// Actual file name checksum.
40        actual: CommitHash,
41    },
42    /// Checksum mismatch for an external file.
43    CorruptedFile {
44        /// External file reference.
45        external_file: ExternalFile,
46        /// Expected file name checksum.
47        expected: CommitHash,
48        /// Actual file name checksum.
49        actual: CommitHash,
50    },
51    /// Other error encountered.
52    Error(Error),
53}