#![no_std]
#![cfg_attr(test, allow(clippy::expect_used, clippy::unwrap_used))]
#![deny(unsafe_code)]
extern crate alloc;
pub mod budget_split;
pub mod capability_verify;
pub mod clock;
pub mod evaluate;
pub(crate) mod formal_aeneas;
pub(crate) mod formal_core;
#[cfg(feature = "fuzz")]
pub mod fuzz;
pub mod guard;
pub mod normalized;
pub mod passport_verify;
pub mod receipts;
#[cfg(feature = "revocation-view")]
pub mod revocation_view;
pub mod rng;
pub mod scope;
pub use budget_split::{
BudgetRegistry, BudgetSplit, BudgetSplitError, InMemoryBudgetRegistry, NoopBudgetRegistry,
MAX_BUDGET_SHARE_BPS,
};
pub use capability_verify::{
verify_capability, verify_capability_full, verify_capability_full_with_root,
verify_capability_with_floor, verify_capability_with_floor_and_resolver,
verify_capability_with_floor_and_trust_root, verify_capability_with_negotiated_floor,
CapabilityError, CapabilityFeatureContext, TrustRootResolver, VerifiedCapability,
};
pub use clock::{Clock, FixedClock};
pub use evaluate::{
evaluate, evaluate_with_crypto_floor, evaluate_with_crypto_floor_and_budgets,
evaluate_with_full_floor, evaluate_with_full_floor_and_root, EvaluateInput, EvaluationVerdict,
KernelCoreError,
};
pub use guard::{Guard, GuardContext, PortableToolCallRequest};
pub use normalized::{
NormalizationError, NormalizedCapability, NormalizedConstraint, NormalizedEvaluationVerdict,
NormalizedMonetaryAmount, NormalizedOperation, NormalizedPromptGrant, NormalizedRequest,
NormalizedResourceGrant, NormalizedRuntimeAssuranceTier, NormalizedScope, NormalizedToolGrant,
NormalizedVerdict, NormalizedVerifiedCapability,
};
pub use passport_verify::{
verify_parsed_passport, verify_passport, PortablePassportBody, PortablePassportEnvelope,
VerifiedPassport, VerifyError, PORTABLE_PASSPORT_SCHEMA,
};
pub use receipts::{
sign_receipt, sign_receipt_relaying_trusted_body, sign_receipt_with_handle, ReceiptSigningError,
};
#[cfg(feature = "revocation-view")]
pub use revocation_view::{
RevocationSnapshot, RevocationView, RevocationViewError, RevocationViewSubject,
};
pub use rng::{NullRng, Rng};
pub use scope::{MatchedGrant, ScopeMatchError};
#[cfg(kani)]
mod kani_harnesses;
#[cfg(kani)]
mod kani_public_harnesses;
#[derive(Debug, Clone, Copy, PartialEq, Eq)]
pub enum Verdict {
Allow,
Deny,
PendingApproval,
}