class Bakelite::Core::IntegrityVerifier

Overview

Tier 1 Core Engine: Streaming SHA-256 content-addressing & CRC32 chunk integrity verifier for Bakelite binary containers (.bkl), appended executables, volumes, and virtual filesystems.

Defined in:

bakelite/core/integrity_verifier.cr

Constructors

Class Method Summary

Instance Method Summary

Constructor Detail

def self.new(verify_crc32 : Bool = true, verify_chunks : Bool = true, verify_sha256 : Bool = true, strict_manifest : Bool = false, fail_fast : Bool = false, volume_filter : String | Nil = nil, expected_digests : Hash(String, String) = {} of String => String, expected_crc32s : Hash(String, UInt32) = {} of String => UInt32, required_files : Enumerable(String) = [] of String, expected_manifest_sha256 : String | Nil = nil, max_decompressed_bytes : Int64 = DEFAULT_MAX_DECOMPRESSED_BYTES) #

[View source]

Class Method Detail

def self.compute_manifest_sha256(entries : Array(FileVerificationEntry)) : String #

Computes the canonical deterministic SHA-256 manifest digest across a list of FileVerificationEntry items.


[View source]
def self.normalize_sha256(digest : String) : String #

Normalizes a SHA-256 hex digest string (strips optional "sha256:" prefix and downcases).


[View source]

Instance Method Detail

def add_invariant(name : String = "invariant_#{@invariants.size + 1}", &block : VerificationReport -> Bool) : self #

Registers a custom verification invariant predicate.


[View source]
def expect_crc32(path : String, crc32 : UInt32) : self #

Registers an expected CRC32 checksum for a virtual file path.


[View source]
def expect_digest(path : String, sha256 : String) : self #

Registers an expected SHA-256 hex digest for a virtual file path.


[View source]
def expect_manifest(digests : Hash(String, String), strict : Bool = false) : self #

Registers a full map of expected file SHA-256 digests.


[View source]
def expect_manifest(manifest : ArchiveManifest, strict : Bool = true) : self #

Registers an expected ArchiveManifest instance.


[View source]
def expect_manifest_sha256(digest : String) : self #

Registers the expected overall deterministic manifest SHA-256 digest.


[View source]
def expect_sha256(path : String, sha256 : String) : self #

Alias for expect_digest.


[View source]
def expected_crc32s : Hash(String, UInt32) #

[View source]
def expected_crc32s=(expected_crc32s : Hash(String, UInt32)) #

[View source]
def expected_digests : Hash(String, String) #

[View source]
def expected_digests=(expected_digests : Hash(String, String)) #

[View source]
def expected_manifest_sha256 : String | Nil #

[View source]
def expected_manifest_sha256=(expected_manifest_sha256 : String | Nil) #

[View source]
def fail_fast : Bool #

[View source]
def fail_fast=(fail_fast : Bool) #

[View source]
def invariants : Array(Tuple(String, Proc(VerificationReport, Bool))) #

[View source]
def invariants=(invariants : Array(Tuple(String, Proc(VerificationReport, Bool)))) #

[View source]
def max_decompressed_bytes : Int64 #

[View source]
def max_decompressed_bytes=(max_decompressed_bytes : Int64) #

[View source]
def require_file(path : String) : self #

Declares that a virtual file path must exist in the verified archive.


[View source]
def require_files(paths : Enumerable(String)) : self #

Declares multiple required virtual file paths.


[View source]
def required_files : Set(String) #

[View source]
def required_files=(required_files : Set(String)) #

[View source]
def strict_manifest : Bool #

[View source]
def strict_manifest=(strict_manifest : Bool) #

[View source]
def verify(target : Path | String | Bytes | IO | Volume | FS::Registry | Array(Volume)) : VerificationReport #

Polymorphic verification dispatch for paths, byte buffers, streams, volumes, or registries.


[View source]
def verify!(target : Path | String | Bytes | IO | Volume | FS::Registry | Array(Volume)) : VerificationReport #

Executes verification and raises IntegrityError / CorruptContainerError / InvalidTrailerError on failure.


[View source]
def verify_bytes(bytes : Bytes, source_name : String = "<memory>") : VerificationReport #

Verifies an in-memory .bkl container byte slice.


[View source]
def verify_chunks : Bool #

[View source]
def verify_chunks=(verify_chunks : Bool) #

[View source]
def verify_crc32 : Bool #

[View source]
def verify_crc32=(verify_crc32 : Bool) #

[View source]
def verify_file(archive_path : Path | String) : VerificationReport #

Verifies a standalone .bkl archive or executable overlay on disk.


[View source]
def verify_io(io : IO, size : Int64 | Nil = nil, source_name : String = "<stream>") : VerificationReport #

Verifies a .bkl container from an open IO stream.


[View source]
def verify_registry(registry : FS::Registry, target_name : String = "<registry>") : VerificationReport #

Verifies all visible union files across a Bakelite::FS::Registry.


[View source]
def verify_sha256 : Bool #

[View source]
def verify_sha256=(verify_sha256 : Bool) #

[View source]
def verify_volume(volume : Volume) : VerificationReport #

Verifies a single mounted or in-memory Bakelite::Volume.


[View source]
def verify_volumes(volumes : Array(Volume), target_name : String = "<volumes>", container_sha256 : String | Nil = nil) : VerificationReport #

Verifies an array of Bakelite::Volume instances.


[View source]
def volume_filter : String | Nil #

[View source]
def volume_filter=(volume_filter : String | Nil) #

[View source]