pub struct ThreadControlAuthority {
pub format: u32,
pub owner: Option<OwnerHistory>,
pub mint_root_public_key: Vec<u8>,
pub sealed_biscuit: Vec<u8>,
pub mint_root_association: Option<MintRootAssociation>,
}Expand description
Original author evidence bound into each signed Thread metadata operation. Supplied history never establishes trust: receivers verify against separately admitted author/actor account authority at first durable admission, resolved independently of Spool governance. Durable device certificates survive an ordinary owner Rotate without recertification: match the exact retained host-admitted (or P1/P2/P4 witness-attested) attachment and a historical issuer with no Recover since. See native-host-witness.md for inventory provenance. Canonical protobuf encoding is mandatory and the entire envelope is bounded to 64 KiB.
Fields§
§format: u32Must be 1.
owner: Option<OwnerHistory>§mint_root_public_key: Vec<u8>Ed25519, exactly 32 bytes.
sealed_biscuit: Vec<u8>Sealed Biscuit only: never publish an appendable credential’s proof secret.
mint_root_association: Option<MintRootAssociation>Durable owner-signed roots and temporary passkey roots are deliberately distinct proof shapes; verifiers never reinterpret one as the other. A verifier MUST scan the raw message before protobuf decoding and reject an encoding containing both tags 4 and 6; oneof last-wins decoding is unsafe.
Trait Implementations§
Source§impl Clone for ThreadControlAuthority
impl Clone for ThreadControlAuthority
Source§impl Debug for ThreadControlAuthority
impl Debug for ThreadControlAuthority
Source§impl Default for ThreadControlAuthority
impl Default for ThreadControlAuthority
Source§impl Message for ThreadControlAuthority
impl Message for ThreadControlAuthority
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.