pub struct ProofRequest {
pub id: String,
pub version: RequestVersion,
pub created_at: u64,
pub expires_at: u64,
pub rp_id: RpId,
pub action: FieldElement,
pub oprf_public_key: OprfPublicKey,
pub signature: Signature,
pub nonce: FieldElement,
pub requests: Vec<RequestItem>,
pub constraints: Option<ConstraintExpr<'static>>,
}Expand description
A proof request from a relying party for an authenticator
Fields§
§id: StringUnique identifier for this request
version: RequestVersionVersion of the request
created_at: u64Unix timestamp (seconds since epoch) when the request was created
expires_at: u64Unix timestamp (seconds since epoch) when request expires
rp_id: RpIdRegistered RP id
action: FieldElementThe raw representation of the action. This must be already a field element.
When dealing with strings or bytes, such value can be hashed e.g. with a byte-friendly hash function like keccak256 or SHA256 and then reduced to a field element.
oprf_public_key: OprfPublicKeyThe nullifier key of the RP (FIXME: documentation & serialization after #129)
signature: SignatureThe RP’s ECDSA signature over the request
nonce: FieldElementUnique nonce for this request (serialized as hex string)
requests: Vec<RequestItem>Specific credential requests. This defines which credentials to ask for.
constraints: Option<ConstraintExpr<'static>>Constraint expression (all/any) optional
Implementations§
Source§impl ProofRequest
impl ProofRequest
Sourcepub fn credentials_to_prove(
&self,
available: &HashSet<String>,
) -> Option<Vec<&RequestItem>>
pub fn credentials_to_prove( &self, available: &HashSet<String>, ) -> Option<Vec<&RequestItem>>
Determine which requested credentials to prove given available credentials.
Returns None if constraints (or lack thereof) cannot be satisfied with the available set.
§Panics
Panics if constraints are present but invalid according to the type invariants (this should not occur as constraints are provided by trusted request issuer).
Sourcepub fn find_request_by_issuer_schema_id(
&self,
issuer_schema_id: FieldElement,
) -> Option<&RequestItem>
pub fn find_request_by_issuer_schema_id( &self, issuer_schema_id: FieldElement, ) -> Option<&RequestItem>
Find a request item by issuer schema ID if available
Sourcepub const fn is_expired(&self, now: u64) -> bool
pub const fn is_expired(&self, now: u64) -> bool
Returns true if the request is expired relative to now (unix timestamp in seconds)
Sourcepub fn digest_hash(&self) -> Result<[u8; 32], PrimitiveError>
pub fn digest_hash(&self) -> Result<[u8; 32], PrimitiveError>
Compute the digest hash of this request that should be signed by the RP, which right now
includes the nonce and the timestamp of the request.
§Returns
A 32-byte hash that represents this request and should be signed by the RP.
§Errors
Returns a PrimitiveError if FieldElement serialization fails (which should never occur in practice).
Note: the timestamp is encoded as little-endian to mirror the RP-side signing performed in test fixtures and the OPRF stub.
Sourcepub fn validate_response(
&self,
response: &ProofResponse,
) -> Result<(), ValidationError>
pub fn validate_response( &self, response: &ProofResponse, ) -> Result<(), ValidationError>
Validate that a response satisfies this request: id match and constraints semantics.
§Errors
Returns a ValidationError if the response does not correspond to this request or
does not satisfy the declared constraints.
Sourcepub fn from_json(json: &str) -> Result<Self, Error>
pub fn from_json(json: &str) -> Result<Self, Error>
Parse from JSON
§Errors
Returns an error if the JSON is invalid or contains duplicate issuer schema ids.
Trait Implementations§
Source§impl Clone for ProofRequest
impl Clone for ProofRequest
Source§fn clone(&self) -> ProofRequest
fn clone(&self) -> ProofRequest
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for ProofRequest
impl Debug for ProofRequest
Source§impl<'de> Deserialize<'de> for ProofRequest
impl<'de> Deserialize<'de> for ProofRequest
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>,
Source§impl PartialEq for ProofRequest
impl PartialEq for ProofRequest
Source§impl Serialize for ProofRequest
impl Serialize for ProofRequest
impl Eq for ProofRequest
impl StructuralPartialEq for ProofRequest
Auto Trait Implementations§
impl Freeze for ProofRequest
impl RefUnwindSafe for ProofRequest
impl Send for ProofRequest
impl Sync for ProofRequest
impl Unpin for ProofRequest
impl UnwindSafe for ProofRequest
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,
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.Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§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