1#![cfg_attr(all(not(feature = "std"), not(test)), no_std)]
18#![deny(missing_docs)]
19#![deny(rustdoc::broken_intra_doc_links)]
20#![cfg_attr(docsrs, feature(doc_cfg, doc_auto_cfg))]
21
22mod addr;
23mod elf;
24mod exit_code;
25mod hash;
26mod image;
27mod sys_state;
28
29use anyhow::Result;
30use risc0_zkp::core::digest::Digest;
31
32pub use self::image::{MemoryImage, Page, KERNEL_START_ADDR};
33
34pub use crate::{
35 addr::{ByteAddr, WordAddr},
36 elf::{AbiKind, Program, ProgramBinary, ProgramBinaryHeader},
37 exit_code::{ExitCode, InvalidExitCodeError},
38 hash::{tagged_iter, tagged_list, tagged_list_cons, tagged_struct, Digestible},
39 sys_state::{read_sha_halfs, write_sha_halfs, DecodeError, SystemState},
40};
41
42pub(crate) const WORD_SIZE: usize = 4;
43const PAGE_BYTES: usize = 1024;
44pub(crate) const PAGE_WORDS: usize = PAGE_BYTES / WORD_SIZE;
45
46pub fn compute_image_id(blob: &[u8]) -> Result<Digest> {
48 ProgramBinary::decode(blob)?.compute_image_id()
49}