pub struct IdentityPublicKeyV1 {
pub id: KeyID,
pub purpose: Purpose,
pub security_level: SecurityLevel,
pub contract_bounds: Option<ContractBounds>,
pub key_type: KeyType,
pub read_only: bool,
pub data: BinaryData,
pub disabled_at: Option<TimestampMillis>,
pub total_budget: Option<Credits>,
pub expires_at: Option<TimestampMillis>,
}Expand description
An identity public key that may carry usage limits.
The first eight fields are the IdentityPublicKeyV0 fields in the same order. total_budget and
expires_at exist from protocol version 14 and are only allowed on AUTHENTICATION keys below
the MASTER security level. A key without limits keeps being written as V0.
Fields§
§id: KeyID§purpose: Purpose§security_level: SecurityLevel§contract_bounds: Option<ContractBounds>§key_type: KeyType§read_only: bool§data: BinaryData§disabled_at: Option<TimestampMillis>§total_budget: Option<Credits>The total credits that state transitions signed with this key may take from the identity over its lifetime. It never changes: how much of it is left lives in Drive, not in the key.
expires_at: Option<TimestampMillis>The block time, in milliseconds, from which the key can no longer sign.
Implementations§
Source§impl IdentityPublicKeyV1
impl IdentityPublicKeyV1
Sourcepub fn from_v0_with_limits(
key: IdentityPublicKeyV0,
total_budget: Option<Credits>,
expires_at: Option<TimestampMillis>,
) -> Self
pub fn from_v0_with_limits( key: IdentityPublicKeyV0, total_budget: Option<Credits>, expires_at: Option<TimestampMillis>, ) -> Self
Adds usage limits to a V0 key.
Trait Implementations§
Source§impl<'__de, __Context> BorrowDecode<'__de, __Context> for IdentityPublicKeyV1
impl<'__de, __Context> BorrowDecode<'__de, __Context> for IdentityPublicKeyV1
Source§fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>(
decoder: &mut __D,
) -> Result<Self, DecodeError>
fn borrow_decode<__D: BorrowDecoder<'__de, Context = __Context>>( decoder: &mut __D, ) -> Result<Self, DecodeError>
Attempt to decode this type with the given BorrowDecode.
Source§impl<'__de, __Context> BorrowDecodeUntrusted<'__de, __Context> for IdentityPublicKeyV1
impl<'__de, __Context> BorrowDecodeUntrusted<'__de, __Context> for IdentityPublicKeyV1
Source§fn borrow_decode_untrusted<__D: BorrowUntrustedDecoder<'__de, Context = __Context>>(
decoder: &mut __D,
) -> Result<Self, DecodeError>
fn borrow_decode_untrusted<__D: BorrowUntrustedDecoder<'__de, Context = __Context>>( decoder: &mut __D, ) -> Result<Self, DecodeError>
Borrow-decode with explicit untrusted field dispatch and resource handling.
Source§impl Clone for IdentityPublicKeyV1
impl Clone for IdentityPublicKeyV1
Source§fn clone(&self) -> IdentityPublicKeyV1
fn clone(&self) -> IdentityPublicKeyV1
Returns a duplicate of the value. Read more
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
Performs copy-assignment from
source. Read moreSource§impl Debug for IdentityPublicKeyV1
impl Debug for IdentityPublicKeyV1
Source§impl<__Context> Decode<__Context> for IdentityPublicKeyV1
impl<__Context> Decode<__Context> for IdentityPublicKeyV1
Source§impl<__Context> DecodeUntrusted<__Context> for IdentityPublicKeyV1
impl<__Context> DecodeUntrusted<__Context> for IdentityPublicKeyV1
Source§fn decode_untrusted<__D: UntrustedDecoder<Context = __Context>>(
decoder: &mut __D,
) -> Result<Self, DecodeError>
fn decode_untrusted<__D: UntrustedDecoder<Context = __Context>>( decoder: &mut __D, ) -> Result<Self, DecodeError>
Decode with explicit untrusted field dispatch and resource handling.
Source§impl Default for IdentityPublicKeyV1
impl Default for IdentityPublicKeyV1
Source§fn default() -> IdentityPublicKeyV1
fn default() -> IdentityPublicKeyV1
Returns the “default value” for a type. Read more
Source§impl<'de> Deserialize<'de> for IdentityPublicKeyV1
impl<'de> Deserialize<'de> for IdentityPublicKeyV1
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>,
Deserialize this value from the given Serde deserializer. Read more
Source§impl Encode for IdentityPublicKeyV1
impl Encode for IdentityPublicKeyV1
impl Eq for IdentityPublicKeyV1
Source§impl From<&IdentityPublicKeyV1> for IdentityPublicKeyInCreationV1
Available on crate feature state-transitions only.
impl From<&IdentityPublicKeyV1> for IdentityPublicKeyInCreationV1
Available on crate feature
state-transitions only.Source§fn from(key: &IdentityPublicKeyV1) -> Self
fn from(key: &IdentityPublicKeyV1) -> Self
Converts to this type from the input type.
Source§impl From<IdentityPublicKeyV1> for IdentityPublicKey
impl From<IdentityPublicKeyV1> for IdentityPublicKey
Source§fn from(value: IdentityPublicKeyV1) -> Self
fn from(value: IdentityPublicKeyV1) -> Self
Converts to this type from the input type.
Source§impl Hash for IdentityPublicKeyV1
impl Hash for IdentityPublicKeyV1
Source§impl IdentityPublicKeyGettersV0 for IdentityPublicKeyV1
impl IdentityPublicKeyGettersV0 for IdentityPublicKeyV1
Source§fn security_level(&self) -> SecurityLevel
fn security_level(&self) -> SecurityLevel
Returns the SecurityLevel
Source§fn data_owned(self) -> BinaryData
fn data_owned(self) -> BinaryData
Returns the data as BinaryData
Source§fn disabled_at(&self) -> Option<TimestampMillis>
fn disabled_at(&self) -> Option<TimestampMillis>
Returns the disabled_at timestamp as Option
Source§fn is_disabled(&self) -> bool
fn is_disabled(&self) -> bool
Is public key disabled
Source§fn contract_bounds(&self) -> Option<&ContractBounds>
fn contract_bounds(&self) -> Option<&ContractBounds>
Contract bounds
Source§impl IdentityPublicKeyGettersV1 for IdentityPublicKeyV1
impl IdentityPublicKeyGettersV1 for IdentityPublicKeyV1
Source§fn total_budget(&self) -> Option<Credits>
fn total_budget(&self) -> Option<Credits>
The total credits that state transitions signed with this key may take from the
identity over its lifetime,
None when the key has no budget. What is left of it is not
in the key: Drive tracks it.Source§fn expires_at(&self) -> Option<TimestampMillis>
fn expires_at(&self) -> Option<TimestampMillis>
The block time, in milliseconds, from which the key can no longer sign,
None when the
key does not expire.Source§fn is_expired_at(&self, time_ms: TimestampMillis) -> bool
fn is_expired_at(&self, time_ms: TimestampMillis) -> bool
Has the key expired at the given block time. The expiry instant itself is already expired.
Source§fn has_limits(&self) -> bool
fn has_limits(&self) -> bool
Does the key carry a budget or an expiry
Source§impl IdentityPublicKeyHashMethodsV0 for IdentityPublicKeyV1
impl IdentityPublicKeyHashMethodsV0 for IdentityPublicKeyV1
Source§fn public_key_hash(&self) -> Result<[u8; 20], ProtocolError>
fn public_key_hash(&self) -> Result<[u8; 20], ProtocolError>
Get the original public key hash
Source§fn validate_private_key_bytes(
&self,
private_key_bytes: &[u8; 32],
network: Network,
) -> Result<bool, ProtocolError>
fn validate_private_key_bytes( &self, private_key_bytes: &[u8; 32], network: Network, ) -> Result<bool, ProtocolError>
Verifies that the private key bytes match this identity public key
Source§impl IdentityPublicKeySettersV0 for IdentityPublicKeyV1
impl IdentityPublicKeySettersV0 for IdentityPublicKeyV1
Source§fn set_purpose(&mut self, purpose: Purpose)
fn set_purpose(&mut self, purpose: Purpose)
Sets the Purpose
Source§fn set_security_level(&mut self, security_level: SecurityLevel)
fn set_security_level(&mut self, security_level: SecurityLevel)
Sets the SecurityLevel
Source§fn set_key_type(&mut self, key_type: KeyType)
fn set_key_type(&mut self, key_type: KeyType)
Sets the KeyType
Source§fn set_read_only(&mut self, read_only: bool)
fn set_read_only(&mut self, read_only: bool)
Sets the read_only flag
Source§fn set_disabled_at(&mut self, timestamp_millis: u64)
fn set_disabled_at(&mut self, timestamp_millis: u64)
Sets the disabled_at timestamp
fn remove_disabled_at(&mut self)
impl JsonSafeFields for IdentityPublicKeyV1
Source§impl Ord for IdentityPublicKeyV1
impl Ord for IdentityPublicKeyV1
Source§fn cmp(&self, other: &IdentityPublicKeyV1) -> Ordering
fn cmp(&self, other: &IdentityPublicKeyV1) -> Ordering
1.21.0 (const: unstable) · Source§fn max(self, other: Self) -> Selfwhere
Self: Sized,
fn max(self, other: Self) -> Selfwhere
Self: Sized,
Compares and returns the maximum of two values. Read more
Source§impl PartialEq for IdentityPublicKeyV1
impl PartialEq for IdentityPublicKeyV1
Source§fn eq(&self, other: &IdentityPublicKeyV1) -> bool
fn eq(&self, other: &IdentityPublicKeyV1) -> bool
Tests for
self and other values to be equal, and is used by ==.Source§impl PartialOrd for IdentityPublicKeyV1
impl PartialOrd for IdentityPublicKeyV1
Source§impl Serialize for IdentityPublicKeyV1
impl Serialize for IdentityPublicKeyV1
impl StructuralPartialEq for IdentityPublicKeyV1
Auto Trait Implementations§
impl Freeze for IdentityPublicKeyV1
impl RefUnwindSafe for IdentityPublicKeyV1
impl Send for IdentityPublicKeyV1
impl Sync for IdentityPublicKeyV1
impl Unpin for IdentityPublicKeyV1
impl UnsafeUnpin for IdentityPublicKeyV1
impl UnwindSafe for IdentityPublicKeyV1
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
Mutably borrows from an owned value. Read more
impl<ST, DT> CastableFrom<ST, Initialized, Initialized> for DT
impl<ST, DT> CastableFrom<ST, Uninit, Uninit> for DT
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
§impl<Q, K> Comparable<K> for Q
impl<Q, K> Comparable<K> for Q
§impl<T> Conv for T
impl<T> Conv for T
§impl<T> CostsExt for T
impl<T> CostsExt for T
§fn wrap_with_cost(self, cost: OperationCost) -> CostContext<Self>where
Self: Sized,
fn wrap_with_cost(self, cost: OperationCost) -> CostContext<Self>where
Self: Sized,
Wraps any value into a
CostContext object with provided costs.§fn wrap_fn_cost(
self,
f: impl FnOnce(&Self) -> OperationCost,
) -> CostContext<Self>where
Self: Sized,
fn wrap_fn_cost(
self,
f: impl FnOnce(&Self) -> OperationCost,
) -> CostContext<Self>where
Self: Sized,
Wraps any value into
CostContext object with costs computed using the
value getting wrapped.§impl<'de, T> DefaultBorrowDecode<'de> for Twhere
T: BorrowDecode<'de, ()>,
impl<'de, T> DefaultBorrowDecode<'de> for Twhere
T: BorrowDecode<'de, ()>,
fn borrow_decode<D>(decoder: &mut D) -> Result<Self, DecodeError>
§impl<T> DefaultDecode for T
impl<T> DefaultDecode for T
impl<T> DeserializeOwned for Twhere
T: for<'de> Deserialize<'de>,
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Checks if this value is equivalent to the given key. Read more
§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
Compare self to
key and return true if they are equal.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
Compare self to
key and return true if they are equal.§impl<T> FmtForward for T
impl<T> FmtForward for T
§fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
fn fmt_binary(self) -> FmtBinary<Self>where
Self: Binary,
Causes
self to use its Binary implementation when Debug-formatted.§fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
fn fmt_display(self) -> FmtDisplay<Self>where
Self: Display,
Causes
self to use its Display implementation when
Debug-formatted.§fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
fn fmt_lower_exp(self) -> FmtLowerExp<Self>where
Self: LowerExp,
Causes
self to use its LowerExp implementation when
Debug-formatted.§fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
fn fmt_lower_hex(self) -> FmtLowerHex<Self>where
Self: LowerHex,
Causes
self to use its LowerHex implementation when
Debug-formatted.§fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
fn fmt_octal(self) -> FmtOctal<Self>where
Self: Octal,
Causes
self to use its Octal implementation when Debug-formatted.§fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
fn fmt_pointer(self) -> FmtPointer<Self>where
Self: Pointer,
Causes
self to use its Pointer implementation when
Debug-formatted.§fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
fn fmt_upper_exp(self) -> FmtUpperExp<Self>where
Self: UpperExp,
Causes
self to use its UpperExp implementation when
Debug-formatted.§fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
fn fmt_upper_hex(self) -> FmtUpperHex<Self>where
Self: UpperHex,
Causes
self to use its UpperHex implementation when
Debug-formatted.§fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
fn fmt_list(self) -> FmtList<Self>where
&'a Self: for<'a> IntoIterator,
Formats each item in a sequence. 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>
Converts
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>
Converts
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§impl<T, U> IntoOnNetwork<U> for Twhere
U: FromOnNetwork<T>,
impl<T, U> IntoOnNetwork<U> for Twhere
U: FromOnNetwork<T>,
§fn into_on_network(self, network: Network) -> U
fn into_on_network(self, network: Network) -> U
Calls U::from_on_network(self).
§impl<T, U> IntoPlatformVersioned<U> for Twhere
U: FromPlatformVersioned<T>,
impl<T, U> IntoPlatformVersioned<U> for Twhere
U: FromPlatformVersioned<T>,
§fn into_platform_versioned(self, platform_version: &PlatformVersion) -> U
fn into_platform_versioned(self, platform_version: &PlatformVersion) -> U
Performs the conversion.
§impl<T> Pipe for Twhere
T: ?Sized,
impl<T> Pipe for Twhere
T: ?Sized,
§fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
fn pipe<R>(self, func: impl FnOnce(Self) -> R) -> Rwhere
Self: Sized,
Pipes by value. This is generally the method you want to use. Read more
§fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref<'a, R>(&'a self, func: impl FnOnce(&'a Self) -> R) -> Rwhere
R: 'a,
Borrows
self and passes that borrow into the pipe function. Read more§fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
fn pipe_ref_mut<'a, R>(&'a mut self, func: impl FnOnce(&'a mut Self) -> R) -> Rwhere
R: 'a,
Mutably borrows
self and passes that borrow into the pipe function. Read more§fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
fn pipe_borrow<'a, B, R>(&'a self, func: impl FnOnce(&'a B) -> R) -> R
§fn pipe_borrow_mut<'a, B, R>(
&'a mut self,
func: impl FnOnce(&'a mut B) -> R,
) -> R
fn pipe_borrow_mut<'a, B, R>( &'a mut self, func: impl FnOnce(&'a mut B) -> R, ) -> R
§fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
fn pipe_as_ref<'a, U, R>(&'a self, func: impl FnOnce(&'a U) -> R) -> R
Borrows
self, then passes self.as_ref() into the pipe function.§fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
fn pipe_as_mut<'a, U, R>(&'a mut self, func: impl FnOnce(&'a mut U) -> R) -> R
Mutably borrows
self, then passes self.as_mut() into the pipe
function.§fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
fn pipe_deref<'a, T, R>(&'a self, func: impl FnOnce(&'a T) -> R) -> R
Borrows
self, then passes self.deref() into the pipe function.§impl<T> Pointable for T
impl<T> Pointable for T
impl<T> Read<Exclusive, BecauseExclusive> for Twhere
T: ?Sized,
§impl<T> Tap for T
impl<T> Tap for T
§fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow<B>(self, func: impl FnOnce(&B)) -> Self
Immutable access to the
Borrow<B> of a value. Read more§fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut<B>(self, func: impl FnOnce(&mut B)) -> Self
Mutable access to the
BorrowMut<B> of a value. Read more§fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref<R>(self, func: impl FnOnce(&R)) -> Self
Immutable access to the
AsRef<R> view of a value. Read more§fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut<R>(self, func: impl FnOnce(&mut R)) -> Self
Mutable access to the
AsMut<R> view of a value. Read more§fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref<T>(self, func: impl FnOnce(&T)) -> Self
Immutable access to the
Deref::Target of a value. Read more§fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
fn tap_deref_mut<T>(self, func: impl FnOnce(&mut T)) -> Self
Mutable access to the
Deref::Target of a value. Read more§fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
fn tap_dbg(self, func: impl FnOnce(&Self)) -> Self
Calls
.tap() only in debug builds, and is erased in release builds.§fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
fn tap_mut_dbg(self, func: impl FnOnce(&mut Self)) -> Self
Calls
.tap_mut() only in debug builds, and is erased in release
builds.§fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
fn tap_borrow_dbg<B>(self, func: impl FnOnce(&B)) -> Self
Calls
.tap_borrow() only in debug builds, and is erased in release
builds.§fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
fn tap_borrow_mut_dbg<B>(self, func: impl FnOnce(&mut B)) -> Self
Calls
.tap_borrow_mut() only in debug builds, and is erased in release
builds.§fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
fn tap_ref_dbg<R>(self, func: impl FnOnce(&R)) -> Self
Calls
.tap_ref() only in debug builds, and is erased in release
builds.§fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
fn tap_ref_mut_dbg<R>(self, func: impl FnOnce(&mut R)) -> Self
Calls
.tap_ref_mut() only in debug builds, and is erased in release
builds.§fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
fn tap_deref_dbg<T>(self, func: impl FnOnce(&T)) -> Self
Calls
.tap_deref() only in debug builds, and is erased in release
builds.§impl<T> TryConv for T
impl<T> TryConv for T
§impl<T, U> TryIntoPlatformVersioned<U> for Twhere
U: TryFromPlatformVersioned<T>,
impl<T, U> TryIntoPlatformVersioned<U> for Twhere
U: TryFromPlatformVersioned<T>,
§type Error = <U as TryFromPlatformVersioned<T>>::Error
type Error = <U as TryFromPlatformVersioned<T>>::Error
The type returned in the event of a conversion error.
§fn try_into_platform_versioned(
self,
platform_version: &PlatformVersion,
) -> Result<U, <U as TryFromPlatformVersioned<T>>::Error>
fn try_into_platform_versioned( self, platform_version: &PlatformVersion, ) -> Result<U, <U as TryFromPlatformVersioned<T>>::Error>
Performs the conversion.
§impl<T, U> TryIntoVersioned<U> for Twhere
U: TryFromVersioned<T>,
impl<T, U> TryIntoVersioned<U> for Twhere
U: TryFromVersioned<T>,
§type Error = <U as TryFromVersioned<T>>::Error
type Error = <U as TryFromVersioned<T>>::Error
The type returned in the event of a conversion error.
§fn try_into_versioned(
self,
grove_version: &GroveVersion,
) -> Result<U, <U as TryFromVersioned<T>>::Error>
fn try_into_versioned( self, grove_version: &GroveVersion, ) -> Result<U, <U as TryFromVersioned<T>>::Error>
Performs the conversion.