pub struct Credential<T = BTreeMap<String, Value>> {Show 15 fields
pub context: OneOrMany<Context>,
pub id: Option<Url>,
pub types: OneOrMany<String>,
pub credential_subject: OneOrMany<Subject>,
pub issuer: Issuer,
pub issuance_date: Timestamp,
pub expiration_date: Option<Timestamp>,
pub credential_status: Option<Status>,
pub credential_schema: OneOrMany<Schema>,
pub refresh_service: OneOrMany<RefreshService>,
pub terms_of_use: OneOrMany<Policy>,
pub evidence: OneOrMany<Evidence>,
pub non_transferable: Option<bool>,
pub properties: T,
pub proof: Option<Proof>,
}
Expand description
Represents a set of claims describing an entity.
Fields§
§context: OneOrMany<Context>
The JSON-LD context(s) applicable to the Credential
.
id: Option<Url>
A unique URI
that may be used to identify the Credential
.
types: OneOrMany<String>
One or more URIs defining the type of the Credential
.
credential_subject: OneOrMany<Subject>
One or more Object
s representing the Credential
subject(s).
issuer: Issuer
A reference to the issuer of the Credential
.
issuance_date: Timestamp
A timestamp of when the Credential
becomes valid.
expiration_date: Option<Timestamp>
A timestamp of when the Credential
should no longer be considered valid.
credential_status: Option<Status>
Information used to determine the current status of the Credential
.
credential_schema: OneOrMany<Schema>
Information used to assist in the enforcement of a specific Credential
structure.
refresh_service: OneOrMany<RefreshService>
Service(s) used to refresh an expired Credential
.
terms_of_use: OneOrMany<Policy>
Terms-of-use specified by the Credential
issuer.
evidence: OneOrMany<Evidence>
Human-readable evidence used to support the claims within the Credential
.
non_transferable: Option<bool>
Indicates that the Credential
must only be contained within a
Presentation
with a proof issued from the Credential
subject.
properties: T
Miscellaneous properties.
proof: Option<Proof>
Optional cryptographic proof, unrelated to JWT.
Implementations§
Source§impl<T> Credential<T>
impl<T> Credential<T>
Sourcepub fn base_context() -> &'static Context
pub fn base_context() -> &'static Context
Returns the base JSON-LD context.
Sourcepub fn builder(properties: T) -> CredentialBuilder<T>
pub fn builder(properties: T) -> CredentialBuilder<T>
Creates a new CredentialBuilder
to configure a Credential
.
This is the same as CredentialBuilder::new.
Sourcepub fn from_builder(
builder: CredentialBuilder<T>,
) -> Result<Credential<T>, Error>
pub fn from_builder( builder: CredentialBuilder<T>, ) -> Result<Credential<T>, Error>
Returns a new Credential
based on the CredentialBuilder
configuration.
Sourcepub fn check_structure(&self) -> Result<(), Error>
pub fn check_structure(&self) -> Result<(), Error>
Validates the semantic structure of the Credential
.
Sourcepub fn set_proof(&mut self, proof: Option<Proof>)
pub fn set_proof(&mut self, proof: Option<Proof>)
Sets the proof property of the Credential
.
Note that this proof is not related to JWT.
Sourcepub fn serialize_jwt(
&self,
custom_claims: Option<BTreeMap<String, Value>>,
) -> Result<String, Error>
pub fn serialize_jwt( &self, custom_claims: Option<BTreeMap<String, Value>>, ) -> Result<String, Error>
Serializes the Credential
as a JWT claims set
in accordance with VC Data Model v1.1.
The resulting string can be used as the payload of a JWS when issuing the credential.
Sourcepub fn serialize_jpt(
&self,
custom_claims: Option<BTreeMap<String, Value>>,
) -> Result<JptClaims, Error>
pub fn serialize_jpt( &self, custom_claims: Option<BTreeMap<String, Value>>, ) -> Result<JptClaims, Error>
Serializes the Credential
as a JPT claims set
Trait Implementations§
Source§impl<T> Clone for Credential<T>where
T: Clone,
impl<T> Clone for Credential<T>where
T: Clone,
Source§fn clone(&self) -> Credential<T>
fn clone(&self) -> Credential<T>
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source
. Read moreSource§impl<T> Debug for Credential<T>where
T: Debug,
impl<T> Debug for Credential<T>where
T: Debug,
Source§impl<'de, T> Deserialize<'de> for Credential<T>where
T: Deserialize<'de>,
impl<'de, T> Deserialize<'de> for Credential<T>where
T: Deserialize<'de>,
Source§fn deserialize<__D>(
__deserializer: __D,
) -> Result<Credential<T>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
fn deserialize<__D>(
__deserializer: __D,
) -> Result<Credential<T>, <__D as Deserializer<'de>>::Error>where
__D: Deserializer<'de>,
Source§impl<T> Display for Credential<T>where
T: Serialize,
impl<T> Display for Credential<T>where
T: Serialize,
Source§impl From<StatusList2021Credential> for Credential
impl From<StatusList2021Credential> for Credential
Source§fn from(value: StatusList2021Credential) -> Credential
fn from(value: StatusList2021Credential) -> Credential
Source§impl<T> PartialEq for Credential<T>where
T: PartialEq,
impl<T> PartialEq for Credential<T>where
T: PartialEq,
Source§impl<T> Serialize for Credential<T>where
T: Serialize,
impl<T> Serialize for Credential<T>where
T: Serialize,
Source§fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
fn serialize<__S>(
&self,
__serializer: __S,
) -> Result<<__S as Serializer>::Ok, <__S as Serializer>::Error>where
__S: Serializer,
Source§impl TryFrom<Credential> for StatusList2021Credential
impl TryFrom<Credential> for StatusList2021Credential
Source§type Error = StatusList2021CredentialError
type Error = StatusList2021CredentialError
Source§fn try_from(
credential: Credential,
) -> Result<StatusList2021Credential, <StatusList2021Credential as TryFrom<Credential>>::Error>
fn try_from( credential: Credential, ) -> Result<StatusList2021Credential, <StatusList2021Credential as TryFrom<Credential>>::Error>
Source§impl TryFrom<JwtCredential> for Credential
impl TryFrom<JwtCredential> for Credential
Source§fn try_from(
value: JwtCredential,
) -> Result<Credential, <Credential as TryFrom<JwtCredential>>::Error>
fn try_from( value: JwtCredential, ) -> Result<Credential, <Credential as TryFrom<JwtCredential>>::Error>
impl<T> Eq for Credential<T>where
T: Eq,
impl<T> StructuralPartialEq for Credential<T>
Auto Trait Implementations§
impl<T> Freeze for Credential<T>where
T: Freeze,
impl<T> RefUnwindSafe for Credential<T>where
T: RefUnwindSafe,
impl<T> Send for Credential<T>where
T: Send,
impl<T> Sync for Credential<T>where
T: Sync,
impl<T> Unpin for Credential<T>where
T: Unpin,
impl<T> UnwindSafe for Credential<T>where
T: UnwindSafe,
Blanket Implementations§
§impl<U> As for U
impl<U> As for U
§fn as_<T>(self) -> Twhere
T: CastFrom<U>,
fn as_<T>(self) -> Twhere
T: CastFrom<U>,
self
to type T
. The semantics of numeric casting with the as
operator are followed, so <T as As>::as_::<U>
can be used in the same way as T as U
for numeric conversions. Read more§impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedExplicit<'a, E> for Twhere
T: 'a,
§impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
impl<'a, T, E> AsTaggedImplicit<'a, E> for Twhere
T: 'a,
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> Conv for T
impl<T> Conv for T
§impl<T> ConvertTo<T> for Twhere
T: Send,
impl<T> ConvertTo<T> for Twhere
T: Send,
fn convert(self) -> Result<T, Error>
fn convert_unchecked(self) -> T
§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
key
and return true
if they are equal.§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
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.§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
§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,
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,
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,
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,
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,
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,
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,
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,
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,
Source§impl<T> FromJson for Twhere
T: for<'de> Deserialize<'de>,
impl<T> FromJson for Twhere
T: for<'de> Deserialize<'de>,
Source§fn from_json(json: &(impl AsRef<str> + ?Sized)) -> Result<Self, Error>
fn from_json(json: &(impl AsRef<str> + ?Sized)) -> Result<Self, Error>
Self
from a string of JSON text.Source§fn from_json_slice(json: &(impl AsRef<[u8]> + ?Sized)) -> Result<Self, Error>
fn from_json_slice(json: &(impl AsRef<[u8]> + ?Sized)) -> Result<Self, Error>
Self
from bytes of JSON text.Source§fn from_json_value(json: Value) -> Result<Self, Error>
fn from_json_value(json: Value) -> Result<Self, Error>
Self
from a serde_json::Value
.§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§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a Request
Source§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T
in a tonic::Request
§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,
§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,
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,
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
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
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
self
, then passes self.deref()
into the pipe function.§impl<T> PolicyExt for Twhere
T: ?Sized,
impl<T> PolicyExt 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
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
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
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
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
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
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
.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
.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
.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
.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
.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
.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
.tap_deref()
only in debug builds, and is erased in release
builds.Source§impl<T> ToJson for Twhere
T: Serialize,
impl<T> ToJson for Twhere
T: Serialize,
Source§fn to_json_value(&self) -> Result<Value, Error>
fn to_json_value(&self) -> Result<Value, Error>
self
as a serde_json::Value
.§impl<T> ToStringFallible for Twhere
T: Display,
impl<T> ToStringFallible for Twhere
T: Display,
§fn try_to_string(&self) -> Result<String, TryReserveError>
fn try_to_string(&self) -> Result<String, TryReserveError>
ToString::to_string
, but without panic on OOM.