Sign in

    partsieve

    OOXML capability audit and verified rebuild; restricted XLSM spike

    ooxml
    xlsx
    vba
    audit
    verified-rebuild
    Download zip
    Author
    Version
    0.1.0-spike
    License
    Apache-2.0
    Last updated
    19 days ago
    Downloads
    36

    #zlhahaha/partsieve

    See README.md for the implemented spike, commands, limits, evidence, and unsupported features. The first prototype version is 0.1.0-spike.

    SieveError

    pub(all) suberror SieveError {
    Refused(String)
    Incomplete(String)
    } derive(
    Debug
    )

    Audit

    pub(all) struct Audit {
    schema : String
    input_hash : String
    format : String
    main_part : String
    coverage : String
    profile : String
    checked_rules : Array[String]
    limitations : Array[String]
    parts : Array[PartRecord]
    relationships : Array[Relationship]
    findings : Array[Finding]
    } derive(Eq, ToJson,
    Debug
    )

    Audit::equal

    fn Audit::equal(Audit, Audit) -> Bool

    Audit::not_equal

    fn Audit::not_equal(x : Audit, y : Audit) -> Bool

    Audit::to_json

    fn Audit::to_json(Audit) -> Json

    Audit::to_repr

    Disposition

    pub(all) struct Disposition {
    part : String
    classification : String
    before_hash : String
    after_hash : String?
    } derive(Eq, ToJson,
    Debug
    )

    Disposition::equal

    fn Disposition::equal(Disposition, Disposition) -> Bool

    Disposition::not_equal

    fn Disposition::not_equal(x : Disposition, y : Disposition) -> Bool

    Disposition::to_json

    fn Disposition::to_json(Disposition) -> Json

    Finding

    pub(all) struct Finding {
    rule : String
    capability : String
    part : String
    evidence : Array[String]
    } derive(Eq, ToJson,
    Debug
    )

    Finding::equal

    fn Finding::equal(Finding, Finding) -> Bool

    Finding::not_equal

    fn Finding::not_equal(x : Finding, y : Finding) -> Bool

    Finding::to_json

    fn Finding::to_json(Finding) -> Json

    Finding::to_repr

    Limits

    pub(all) struct Limits {
    input_bytes : Int
    entry_bytes : Int
    total_bytes : Int
    entries : Int
    xml_bytes : Int
    xml_depth : Int
    xml_nodes : Int
    xml_attributes : Int
    output_bytes : Int
    } derive(Eq, ToJson,
    Debug
    )

    Limits::default

    fn Limits::default() -> Limits

    Limits::equal

    fn Limits::equal(Limits, Limits) -> Bool

    Limits::not_equal

    fn Limits::not_equal(x : Limits, y : Limits) -> Bool

    Limits::to_json

    fn Limits::to_json(Limits) -> Json

    Limits::to_repr

    Operation

    pub(all) struct Operation {
    kind : String
    part : String
    relationship_id : String
    rule : String
    reason : String
    } derive(Eq, ToJson,
    Debug
    )

    Operation::equal

    fn Operation::equal(Operation, Operation) -> Bool

    Operation::not_equal

    fn Operation::not_equal(x : Operation, y : Operation) -> Bool

    Operation::to_json

    fn Operation::to_json(Operation) -> Json

    PartRecord

    pub(all) struct PartRecord {
    name : String
    content_type : String
    sha256 : String
    } derive(Eq, ToJson,
    Debug
    )

    PartRecord::equal

    fn PartRecord::equal(PartRecord, PartRecord) -> Bool

    PartRecord::not_equal

    fn PartRecord::not_equal(x : PartRecord, y : PartRecord) -> Bool

    PartRecord::to_json

    fn PartRecord::to_json(PartRecord) -> Json

    Rebuilt

    pub(all) struct Rebuilt {
    bytes : Bytes
    receipt : Receipt
    }

    Receipt

    pub(all) struct Receipt {
    schema : String
    tool : String
    rules : String
    policy : String
    profile : String
    input_hash : String
    output_hash : String
    input_size : Int
    output_size : Int
    input_format : String
    output_format : String
    limits : Limits
    audit : Audit
    plan : RewritePlan
    dispositions : Array[Disposition]
    structure : String
    preservation : String
    independent_validation : String
    limitations : Array[String]
    } derive(Eq, ToJson,
    Debug
    )

    Receipt::equal

    fn Receipt::equal(Receipt, Receipt) -> Bool

    Receipt::not_equal

    fn Receipt::not_equal(x : Receipt, y : Receipt) -> Bool

    Receipt::to_json

    fn Receipt::to_json(Receipt) -> Json

    Receipt::to_repr

    Relationship

    pub(all) struct Relationship {
    source : String
    id : String
    kind : String
    target : String
    resolved : String
    external : Bool
    } derive(Eq, ToJson,
    Debug
    )

    Relationship::equal

    Relationship::not_equal

    fn Relationship::not_equal(x : Relationship, y : Relationship) -> Bool

    Relationship::to_json

    RewritePlan

    pub(all) struct RewritePlan {
    schema : String
    input_hash : String
    policy : String
    profile : String
    operations : Array[Operation]
    } derive(Eq, ToJson,
    Debug
    )

    RewritePlan::equal

    fn RewritePlan::equal(RewritePlan, RewritePlan) -> Bool

    RewritePlan::not_equal

    fn RewritePlan::not_equal(x : RewritePlan, y : RewritePlan) -> Bool

    RewritePlan::to_json

    fn RewritePlan::to_json(RewritePlan) -> Json

    audit

    fn audit(input : Bytes, limits? : Limits) -> Audit raise

    digest

    fn digest(bytes : BytesView) -> String

    plan

    fn plan(input : Bytes, limits? : Limits) -> RewritePlan raise

    rebuild

    fn rebuild(input : Bytes, limits? : Limits) -> Rebuilt raise

    resolve_target

    fn resolve_target(source : String, target : String) -> String raise

    verify

    fn verify(output : Bytes, original : Bytes, limits? : Limits) -> Receipt raise

    Powered by MoonBit

    Site sourceReport issuePackagesBuild queueSkillsStatistics

    © 2026 mooncakes.io