pub struct SecurityState {
entity_id: Uuid,
version: u64,
}
Expand description
The security state is a signed object attesting to the security state of a user.
It contains a version, which can only ever increment. Based on the version, old formats and features are blocked. This prevents a server from downgrading a user’s account features, because only the user can create this signed object.
Fields§
§entity_id: Uuid
The entity ID is a permanent, unchangeable, unique identifier for the object this security state applies to. For users, this is the user ID, which never changes.
version: u64
The version of the security state gates feature availability. It can only ever be incremented. Components can use it to gate format support of specific formats (like item url hashes).
Implementations§
Source§impl SecurityState
impl SecurityState
Sourcepub fn initialize_for_user(user_id: Uuid) -> Self
pub fn initialize_for_user(user_id: Uuid) -> Self
Initialize a new SecurityState
for the given user ID, to the lowest version possible.
The user needs to be a v2 encryption user.
Sourcepub fn sign<Ids: KeyIds>(
&self,
signing_key_id: Ids::Signing,
ctx: &mut KeyStoreContext<'_, Ids>,
) -> Result<SignedSecurityState, CryptoError>
pub fn sign<Ids: KeyIds>( &self, signing_key_id: Ids::Signing, ctx: &mut KeyStoreContext<'_, Ids>, ) -> Result<SignedSecurityState, CryptoError>
Signs the SecurityState
with the provided signing key ID from the context.
Trait Implementations§
Source§impl Clone for SecurityState
impl Clone for SecurityState
Source§fn clone(&self) -> SecurityState
fn clone(&self) -> SecurityState
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl Debug for SecurityState
impl Debug for SecurityState
Source§impl<'de> Deserialize<'de> for SecurityState
impl<'de> Deserialize<'de> for SecurityState
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>,
Auto Trait Implementations§
impl Freeze for SecurityState
impl RefUnwindSafe for SecurityState
impl Send for SecurityState
impl Sync for SecurityState
impl Unpin for SecurityState
impl UnwindSafe for SecurityState
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> CompatExt for T
impl<T> CompatExt for T
§impl<T, UT> HandleAlloc<UT> for T
impl<T, UT> HandleAlloc<UT> for T
§fn new_handle(value: Arc<T>) -> Handle
fn new_handle(value: Arc<T>) -> Handle
§unsafe fn clone_handle(handle: Handle) -> Handle
unsafe fn clone_handle(handle: Handle) -> Handle
§unsafe fn consume_handle(handle: Handle) -> Arc<T>
unsafe fn consume_handle(handle: Handle) -> Arc<T>
Arc<>
Read more§impl<T> Instrument for T
impl<T> Instrument for T
§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left
is true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self
into a Left
variant of Either<Self, Self>
if into_left(&self)
returns true
.
Converts self
into a Right
variant of Either<Self, Self>
otherwise. Read more