Struct concordium_std::Policy

source ·
pub struct Policy<Attributes> {
    pub identity_provider: u32,
    pub created_at: Timestamp,
    pub valid_to: Timestamp,
    pub items: Attributes,
}
Expand description

Policy on the credential of the account.

This is one of the key features of the Concordium blockchain. Each account on the chain is backed by an identity. The policy is verified and signed by the identity provider before an account can be created on the chain.

The type is parameterized by the choice of Attributes. These are either borrowed or owned, in the form of an iterator over key-value pairs or a vector of such. This flexibility is needed so that attributes can be accessed efficiently, as well as constructed conveniently for testing.

Fields§

§identity_provider: u32

Identity of the identity provider who signed the identity object that this policy is derived from.

§created_at: Timestamp

Timestamp at the beginning of the month when the identity object backing this policy was created. This timestamp has very coarse granularity in order for the identity provider to not be able to link identities they have created with accounts that users created on the chain. as a timestamp (which has millisecond granularity) in order to make it easier to compare with, e.g., slot_time.

§valid_to: Timestamp

Beginning of the month where the identity is no longer valid.

§items: Attributes

List of attributes, in ascending order of the tag.

Trait Implementations§

source§

impl<Attributes> Clone for Policy<Attributes>where
Attributes: Clone,

source§

fn clone(&self) -> Policy<Attributes>

Returns a copy of the value. Read more
1.0.0 · source§

fn clone_from(&mut self, source: &Self)

Performs copy-assignment from source. Read more
source§

impl<Attributes> Debug for Policy<Attributes>where
Attributes: Debug,

source§

fn fmt(&self, f: &mut Formatter<'_>) -> Result<(), Error>

Formats the value using the given formatter. Read more
source§

impl Deserial for Policy<Vec<(AttributeTag, AttributeValue), Global>>

source§

fn deserial<R>(
source: &mut R
) -> Result<Policy<Vec<(AttributeTag, AttributeValue), Global>>, ParseError>where
R: Read,

Attempt to read a structure from a given source, failing if an error occurs during deserialization or reading.
source§

impl HasPolicy for Policy<AttributesCursor>

§

type Iterator = PolicyAttributesIter

source§

fn identity_provider(&self) -> IdentityProvider

Identity provider who signed the identity object the credential is derived from.
source§

fn created_at(&self) -> Timestamp

Beginning of the month in milliseconds since unix epoch when the credential was created.
source§

fn valid_to(&self) -> Timestamp

Beginning of the month where the credential is no longer valid, in milliseconds since unix epoch.
source§

fn next_item(&mut self, buf: &mut [u8; 31]) -> Option<(AttributeTag, u8)>

Get the next attribute, storing it in the provided buffer. The return value, if Some, is a pair of an attribute tag, and the length, n of the attribute value. In this case, the attribute value is written in the first n bytes of the provided buffer. The rest of the buffer is unchanged. Read more
source§

fn attributes(&self) -> Self::Iterator

Get an iterator over all the attributes of the policy.
source§

impl Serial for Policy<Vec<(AttributeTag, AttributeValue), Global>>

source§

fn serial<W>(&self, out: &mut W) -> Result<(), <W as Write>::Err>where
W: Write,

Attempt to write the structure into the provided writer, failing if only part of the structure could be written. Read more

Auto Trait Implementations§

§

impl<Attributes> RefUnwindSafe for Policy<Attributes>where
Attributes: RefUnwindSafe,

§

impl<Attributes> Send for Policy<Attributes>where
Attributes: Send,

§

impl<Attributes> Sync for Policy<Attributes>where
Attributes: Sync,

§

impl<Attributes> Unpin for Policy<Attributes>where
Attributes: Unpin,

§

impl<Attributes> UnwindSafe for Policy<Attributes>where
Attributes: UnwindSafe,

Blanket Implementations§

source§

impl<T> Any for Twhere
T: 'static + ?Sized,

source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
source§

impl<T> Borrow<T> for Twhere
T: ?Sized,

const: unstable · source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
source§

impl<T> BorrowMut<T> for Twhere
T: ?Sized,

const: unstable · source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
source§

impl<T> From<T> for T

const: unstable · source§

fn from(t: T) -> T

Returns the argument unchanged.

source§

impl<T, U> Into<U> for Twhere
U: From<T>,

const: unstable · source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

source§

impl<T> ToOwned for Twhere
T: Clone,

§

type Owned = T

The resulting type after obtaining ownership.
source§

fn to_owned(&self) -> T

Creates owned data from borrowed data, usually by cloning. Read more
source§

fn clone_into(&self, target: &mut T)

Uses borrowed data to replace owned data, usually by cloning. Read more
source§

impl<T, U> TryFrom<U> for Twhere
U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
const: unstable · source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
source§

impl<T, U> TryInto<U> for Twhere
U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
const: unstable · source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
source§

impl<A> Serialize for Awhere
A: Deserial + Serial,