Skip to main content

pask_wire/
lib.rs

1// SPDX-License-Identifier: Apache-2.0
2// Copyright (c) 2026 Wilder Management Inc. (d/b/a Wilder Robotics) <rob@wilder-robotics.com>
3// pask-wire is licensed Apache-2.0. No commercial agreement is required to use,
4// modify or redistribute it; see LICENSING.md in the workspace root.
5
6//! Specified producer and verifier processing for Physical-Site Engagement Receipts
7//! under `wilder.pser/0.5` and `wilder.pser/0.6`.
8//!
9//! Package names (`pask-*`), profile versions (`wilder.pser/<version>`) and
10//! Internet-Draft revision numbers identify different things and are versioned
11//! independently of one another.
12//!
13//! Passing the implemented checks does not establish complete profile conformance,
14//! authenticated ownership of a supplied key, or that a physical event occurred.
15//! The crate README describes the supported processing and remaining limits.
16
17#![no_std]
18#![forbid(unsafe_code)]
19
20#[cfg(feature = "alloc")]
21extern crate alloc;
22#[cfg(feature = "std")]
23extern crate std;
24
25#[cfg(feature = "alloc")]
26mod canonical_example;
27#[cfg(feature = "alloc")]
28mod chain;
29#[cfg(feature = "alloc")]
30mod cwt;
31#[cfg(feature = "alloc")]
32mod digest;
33#[cfg(feature = "alloc")]
34mod entry;
35#[cfg(feature = "alloc")]
36mod envelope;
37#[cfg(feature = "alloc")]
38mod error;
39#[cfg(feature = "alloc")]
40mod payload;
41#[cfg(feature = "alloc")]
42mod receipt;
43#[cfg(feature = "alloc")]
44pub mod testvectors;
45
46#[cfg(feature = "alloc")]
47pub use canonical_example::{canonical_example, canonical_example_06};
48#[cfg(feature = "alloc")]
49pub use chain::{AffiliationChange, ChainReport, verify_chain};
50#[cfg(feature = "alloc")]
51pub use digest::{sha256_prefixed, validate_sha256};
52#[cfg(feature = "alloc")]
53pub use entry::{candidate_leaf_hash, derive_candidate_entry};
54#[cfg(feature = "alloc")]
55pub use envelope::{CONTENT_TYPE, CONTENT_TYPE_06, produce_ed25519, verify_ed25519};
56#[cfg(feature = "es256")]
57pub use envelope::{produce_es256, verify_es256};
58#[cfg(feature = "alloc")]
59pub use error::{Error, Result};
60#[cfg(feature = "alloc")]
61pub use payload::{
62    AckProvenance, BindingMode, IssuerAffiliation, Payload, SPEC_VERSION, SPEC_VERSION_06,
63    canonicalize_json, is_supported_spec,
64};
65#[cfg(feature = "alloc")]
66pub use receipt::{
67    AttachedReceipts, INCLUSION_PROOF_LABEL, InclusionProof, RECEIPTS_LABEL, RFC9162_SHA256,
68    Receipt, VDP_LABEL, VDS_LABEL, VerifiedInclusion, attached_receipts, leaf_hash,
69    verify_inclusion,
70};
71
72#[cfg(feature = "alloc")]
73mod receipt_cbor;
74#[cfg(feature = "alloc")]
75mod receipt_inspection;
76#[cfg(feature = "alloc")]
77pub use receipt_inspection::{
78    EnvelopeReport, InspectionFinding, InspectionLimits, InspectionPolicy, InspectionStatus,
79    UnauthenticatedReceiptClaims, inspect_scitt_receipt,
80};
81
82#[cfg(feature = "alloc")]
83mod receipt_verification;
84#[cfg(feature = "alloc")]
85pub use receipt_verification::{
86    BindingProvenance, ProofVerification, ReceiptVerificationPolicy, ReceiptVerificationReport,
87    RotationPolicy, TrustInputOrigin, TsKeyAssociation, TsPublicKey, TsTrustContext,
88    VerificationLimits, VerifyingKeyEvidence, verify_scitt_receipt,
89};
90
91#[cfg(feature = "alloc")]
92mod transparent_statement;
93#[cfg(feature = "alloc")]
94pub use transparent_statement::{
95    DigestTarget, ExpectedDigest, IssuerKeyInput, OuterStatementReport, ReceiptContainerState,
96    SOFTWARE_SITE_CONTENT_TYPE, StatementApplicationPolicy, StatementReceiptOutcome,
97    StatementVerificationInputs, SubjectMapping, SubjectPolicy, TransparentStatementPolicy,
98    TransparentStatementReport, inspect_transparent_statement, verify_transparent_statement,
99};