pub struct SidecarOperationSigningBody {
pub format_version: u32,
pub required_actions: Vec<i32>,
pub spool_uuid: Vec<u8>,
pub sidecar_identity: Option<SidecarIdentity>,
pub payload_sha256: Vec<u8>,
pub leaf_capability_id: Vec<u8>,
}Expand description
Canonical operation body reconstructed by a verifier from the transfer. Protobuf serialization is NEVER signed. canonical_sidecar_operation_v1 is:
u32_be(format_version) u32_be(required_actions.count) repeated u32_be(action), sorted numerically and unique raw 16-byte spool_uuid u32_be(sidecar identity discriminator) identity fields in field order (fixed bytes raw; strings u32-length-prefixed) raw 32-byte payload_sha256 raw 32-byte leaf_capability_id
operation_signature is Ed25519 by the leaf capability subject key over:
SHA-256(“heddle-sidecar-operation-v1” || canonical_sidecar_operation_v1(body))
v1 limits are strict: encoded OwnerAuthorizationBundle <= 1,048,576 bytes; owner_state_chain <= 256; capability_chain 1..64; grants per capability 1..64; path segments per selector <= 64 and each segment 1..255 UTF-8 bytes; required_actions 1..2; raw sidecar payload <= 67,108,864 bytes. Redaction requires exactly REDACT, plus PURGE when the payload carries purge evidence; visibility requires exactly VISIBILITY; every current state attachment requires exactly METADATA_SUPERSESSION. Unknown actions/versions, duplicate actions, non-canonical ids, trailing bytes, oversized inputs, and a mismatch with transfer identity or payload fail closed.
Fields§
§format_version: u32Exactly 1.
required_actions: Vec<i32>§spool_uuid: Vec<u8>§sidecar_identity: Option<SidecarIdentity>§payload_sha256: Vec<u8>§leaf_capability_id: Vec<u8>Implementations§
Source§impl SidecarOperationSigningBody
impl SidecarOperationSigningBody
Sourcepub fn required_actions(
&self,
) -> FilterMap<Cloned<Iter<'_, i32>>, fn(i32) -> Option<SpoolCapabilityAction>> ⓘ
pub fn required_actions( &self, ) -> FilterMap<Cloned<Iter<'_, i32>>, fn(i32) -> Option<SpoolCapabilityAction>> ⓘ
Returns an iterator which yields the valid enum values contained in required_actions.
Sourcepub fn push_required_actions(&mut self, value: SpoolCapabilityAction)
pub fn push_required_actions(&mut self, value: SpoolCapabilityAction)
Appends the provided enum value to required_actions.
Trait Implementations§
Source§impl Clone for SidecarOperationSigningBody
impl Clone for SidecarOperationSigningBody
Source§fn clone(&self) -> SidecarOperationSigningBody
fn clone(&self) -> SidecarOperationSigningBody
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for SidecarOperationSigningBody
impl Debug for SidecarOperationSigningBody
impl Eq for SidecarOperationSigningBody
Source§impl Hash for SidecarOperationSigningBody
impl Hash for SidecarOperationSigningBody
Source§impl Message for SidecarOperationSigningBody
impl Message for SidecarOperationSigningBody
Source§fn encoded_len(&self) -> usize
fn encoded_len(&self) -> usize
Source§fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
fn encode(&self, buf: &mut impl BufMut) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
fn encode_length_delimited(
&self,
buf: &mut impl BufMut,
) -> Result<(), EncodeError>where
Self: Sized,
Source§fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
fn encode_length_delimited_to_vec(&self) -> Vec<u8> ⓘwhere
Self: Sized,
Source§fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
fn decode_length_delimited(buf: impl Buf) -> Result<Self, DecodeError>where
Self: Default,
Source§fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self. Read moreSource§fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
fn merge_length_delimited(&mut self, buf: impl Buf) -> Result<(), DecodeError>where
Self: Sized,
self.