Skip to main content

hdiff_update_core/
lib.rs

1//! Core library for signed HDiffPatch-based differential application updates.
2//!
3//! The crate contains manifest selection, Ed25519 signing and verification,
4//! hashing, downloads, and process wrappers for `hdiffz` and `hpatchz`.
5//! It does not bundle HDiffPatch binaries.
6
7mod directory_manifest;
8mod directory_update;
9mod download;
10mod error;
11mod fs_ops;
12mod hash;
13mod manifest;
14mod security;
15mod tool;
16mod tree;
17mod version;
18
19pub use directory_manifest::{
20    DirectoryDelta, DirectoryPlatformRelease, DirectoryUpdateManifest, DIRECTORY_UPDATE_ALGORITHM,
21    DIRECTORY_UPDATE_SCHEMA_VERSION,
22};
23pub use directory_update::{
24    load_directory_update_manifest, prepare_directory_update, read_directory_manifest_file,
25    read_directory_transaction, write_directory_transaction, write_json_file_atomic,
26    DirectoryTransactionState, DirectoryUpdateTransaction, PrepareDirectoryUpdateOptions,
27    PreparedDirectoryUpdate, PreparedDirectoryUpdateKind,
28};
29pub use download::{
30    download_to_file, read_url_to_string, DownloadEvent, DownloadStats, HttpHeader,
31};
32pub use error::{Error, Result};
33pub use fs_ops::ensure_available_space;
34pub use hash::{sha256_bytes, sha256_file, verify_sha256, FileDigest};
35pub use manifest::{default_platform, Artifact, ManifestSignature, MANIFEST_SIGNATURE_ALGORITHM};
36pub use security::{
37    generate_update_keypair, public_key_id, sign_directory_manifest,
38    verify_directory_manifest_signature, verify_directory_manifest_signature_with_keys,
39    UpdateKeypair,
40};
41pub use tool::{
42    apply_directory_patch, create_directory_patch, inspect_diff, resolve_tool_path,
43    ApplyDirectoryPatchOptions, CreateDirectoryPatchOptions, DirectoryPatchApplyResult,
44    DirectoryPatchCreateResult, ToolOutput, DEFAULT_DIRECTORY_ALGORITHM,
45};
46pub use tree::{
47    build_file_tree_manifest, copy_managed_tree, normalize_managed_paths, normalize_relative_path,
48    path_for_manifest_entry, validate_file_tree_manifest, verify_file_tree, FileTreeManifest,
49    TreeFile, TreeVerification,
50};
51pub use version::validate_version_upgrade;