pub struct ProofRequest {
pub id: String,
pub version: RequestVersion,
pub created_at: u64,
pub expires_at: u64,
pub rp_id: RpId,
pub oprf_key_id: OprfKeyId,
pub session_id: Option<FieldElement>,
pub action: Option<FieldElement>,
pub signature: Signature,
pub nonce: FieldElement,
pub requests: Vec<RequestItem>,
pub constraints: Option<ConstraintExpr<'static>>,
}Expand description
A proof request from a Relying Party (RP) for an Authenticator.
Fields§
§id: StringUnique identifier for this request.
version: RequestVersionVersion of the request.
created_at: u64Unix timestamp (seconds) when the request was created.
expires_at: u64Unix timestamp (seconds) when the request expires.
rp_id: RpIdRegistered RP identifier from the RpRegistry.
oprf_key_id: OprfKeyIdOprfKeyId of the RP.
session_id: Option<FieldElement>Session identifier that links proofs for the same user/RP pair across requests.
If provided, a Session Proof will be generated instead of a Uniqueness Proof. The proof will only be valid if the session ID is meant for this context and this particular World ID holder.
action: Option<FieldElement>An RP-defined context that scopes what the user is proving uniqueness on.
This parameter expects a field element. When dealing with strings or bytes, hash with a byte-friendly hash function like keccak256 or SHA256 and reduce to the field.
signature: SignatureThe RP’s ECDSA signature over the request.
nonce: FieldElementUnique nonce for this request provided by the RP.
requests: Vec<RequestItem>Specific credential requests. This defines which credentials to ask for.
constraints: Option<ConstraintExpr<'static>>Constraint expression (all/any/enumerate) optional.
Implementations§
Source§impl ProofRequest
impl ProofRequest
Sourcepub fn credentials_to_prove(
&self,
available: &HashSet<u64>,
) -> Option<Vec<&RequestItem>>
pub fn credentials_to_prove( &self, available: &HashSet<u64>, ) -> 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: u64,
) -> Option<&RequestItem>
pub fn find_request_by_issuer_schema_id( &self, issuer_schema_id: u64, ) -> 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).
The digest is computed as: SHA256(nonce || action || created_at || expires_at).
This mirrors the RP signature message format from rp::compute_rp_signature_msg.
Note: the timestamp is encoded as big-endian to mirror the RP-side signing
performed in test fixtures and the OPRF stub.
Sourcepub fn computed_action<R: CryptoRng + RngCore>(
&self,
rng: &mut R,
) -> FieldElement
pub fn computed_action<R: CryptoRng + RngCore>( &self, rng: &mut R, ) -> FieldElement
Gets the action value to use in the proof.
- When an explicit action is provided, it is returned directly.
- For session proofs (action is
None), a random action is generated.
Callers should cache the action during proof generation to ensure consistency across proof steps.
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 UnsafeUnpin 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§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<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