pub struct PurgeOperationSigningBody {
pub format_version: u32,
pub spool_uuid: Vec<u8>,
pub purge_identity: Option<PurgeSidecarIdentity>,
pub payload_sha256: Vec<u8>,
pub leaf_capability_id: Vec<u8>,
}Expand description
Canonical purge body reconstructed by a verifier from PurgeTransfer. Protobuf serialization is NEVER signed. canonical_purge_operation_v2 is:
u32_be(format_version) raw 16-byte spool_uuid blob_hash as a u32-length-prefixed string 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-purge-operation-v2” || canonical_purge_operation_v2(body))
v2 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; raw purge payload <= 67,108,864 bytes. The leaf grant requires exactly PURGE. Unknown actions/versions, non-canonical ids, trailing bytes, oversized inputs, and a mismatch with transfer identity or payload fail closed.
Fields§
§format_version: u32Exactly 2.
spool_uuid: Vec<u8>§purge_identity: Option<PurgeSidecarIdentity>§payload_sha256: Vec<u8>§leaf_capability_id: Vec<u8>Trait Implementations§
Source§impl Clone for PurgeOperationSigningBody
impl Clone for PurgeOperationSigningBody
Source§fn clone(&self) -> PurgeOperationSigningBody
fn clone(&self) -> PurgeOperationSigningBody
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 PurgeOperationSigningBody
impl Debug for PurgeOperationSigningBody
Source§impl Default for PurgeOperationSigningBody
impl Default for PurgeOperationSigningBody
impl Eq for PurgeOperationSigningBody
Source§impl Hash for PurgeOperationSigningBody
impl Hash for PurgeOperationSigningBody
Source§impl Message for PurgeOperationSigningBody
impl Message for PurgeOperationSigningBody
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.