pub struct SessionTrustBundle {
pub version: String,
pub session_id: Uuid,
pub coordinator: Aid,
pub issued_at: Timestamp,
pub expires_at: Timestamp,
pub participants: Vec<ParticipantEntry>,
pub extensions: Option<ExtensionsMap>,
pub signature: String,
}Expand description
Coordinator-attested session membership artifact (RFC-AITP-0010 §3).
The schema is additionalProperties: false, with an explicit
extensions slot reserved per RFC-AITP-0001 §7.
Fields§
§version: StringMUST be "aitp/0.3" for this RFC.
session_id: UuidUUID v4 unique to this session. Used as a replay-binding scope.
coordinator: AidCoordinator’s AID. MUST match the issuer of every embedded TCT.
issued_at: TimestampWhen this bundle was signed.
expires_at: TimestampWhen the bundle MUST NOT be used after. MUST equal
min(participants[*].tct.expires_at) (RFC-AITP-0010 §6).
participants: Vec<ParticipantEntry>One entry per session participant.
extensions: Option<ExtensionsMap>Forward-compatible extension namespace (RFC-AITP-0001 §7).
Presence-sensitive, deliberately modeled as Option<ExtensionsMap>
rather than a defaulted empty map with skip_serializing_if = "is_empty". Under RFC 8785 canonicalization, absent (None) emits
no extensions key at all, while present-but-empty
(Some(ExtensionsMap::new())) emits "extensions":{} — different
bytes, different digest, different signature. Silently normalizing
one into the other would change the signing input and break
verification against a conformant peer (RFC-AITP-0001 §5.4.1).
signature: StringCoordinator’s signature over the canonical bundle JSON
excluding signature. JCS rules per RFC-AITP-0001 §5.4.1.
Trait Implementations§
Source§impl Clone for SessionTrustBundle
impl Clone for SessionTrustBundle
Source§impl Debug for SessionTrustBundle
impl Debug for SessionTrustBundle
Source§impl<'de> Deserialize<'de> for SessionTrustBundle
impl<'de> Deserialize<'de> for SessionTrustBundle
Source§fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(__deserializer: __D) -> Result<Self, __D::Error>where
__D: Deserializer<'de>,
impl Eq for SessionTrustBundle
Source§impl PartialEq for SessionTrustBundle
impl PartialEq for SessionTrustBundle
Source§impl Serialize for SessionTrustBundle
impl Serialize for SessionTrustBundle
impl StructuralPartialEq for SessionTrustBundle
Auto Trait Implementations§
impl Freeze for SessionTrustBundle
impl RefUnwindSafe for SessionTrustBundle
impl Send for SessionTrustBundle
impl Sync for SessionTrustBundle
impl Unpin for SessionTrustBundle
impl UnsafeUnpin for SessionTrustBundle
impl UnwindSafe for SessionTrustBundle
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.