1#![forbid(unsafe_code)]
44#![warn(missing_docs)]
45#![cfg_attr(
49 test,
50 allow(
51 clippy::unwrap_used,
52 clippy::indexing_slicing,
53 clippy::cast_possible_truncation,
54 clippy::arithmetic_side_effects
55 )
56)]
57
58pub mod container;
59pub mod crypto;
60pub mod error;
61pub mod file;
62pub mod fsatomic;
63pub mod header;
64pub mod keyslot;
65pub mod pack;
66pub mod payload;
67pub mod recovery;
68pub mod reencrypt;
69pub mod restore;
70pub mod scan;
71pub mod session;
72pub mod shard;
73pub mod slot;
74pub mod slotdir;
75pub mod source;
76pub mod unpack;
77pub mod dirname;
78pub mod devicekey;
79pub mod dirsidecar;
80pub mod tlv;
81pub mod tree;
82pub mod util;
83pub mod wordlist;
84
85pub use container::{ContainerBuilder, ContainerEntry, ContainerIndex, EntryKind, EntryMeta};
86pub use crypto::{Argon2Params, CipherId, Fek, Kek, SecretKey};
87pub use error::{Error, ExitCode, Result};
88pub use file::{
89 EncryptOptions, EncryptedFile, OpenedFile, RandomMaterial, encrypt, is_omy_file, open,
90 open_with_password, peek_header,
91};
92pub use fsatomic::{AtomicWriter, TempPlaintext, write_atomic};
93pub use header::{FixedHeader, MAGIC_FILE, MAGIC_SHARD, flags};
94pub use recovery::{RecoveryCode, ParseError as RecoveryParseError};
95pub use scan::{ScanHit, ScanOptions, ScanResult, UnlockOutcome, probe_file, scan_dir};
96pub use session::{CredentialKind, SessionKeys};
97pub use shard::{ShardHeader, merge, split};
98pub use source::{BlockSource, ContainerEntryView, LocalFileSource, MemorySource, read_source_range};
99pub use tlv::{TlvEntry, TlvSet};
100
101pub const FORMAT_VERSION: (u16, u16) = (header::VERSION_MAJOR, header::VERSION_MINOR);
103
104pub const FILE_EXTENSION: &str = "omy";