Skip to main content

ResponseItem

Struct ResponseItem 

Source
pub struct ResponseItem {
    pub identifier: String,
    pub issuer_schema_id: u64,
    pub proof: ZeroKnowledgeProof,
    pub nullifier: Option<FieldElement>,
    pub session_nullifier: Option<SessionNullifier>,
    pub expires_at_min: u64,
}
Expand description

Per-credential response item returned by the Authenticator.

Each entry corresponds to one requested credential with its proof material. If any credential cannot be satisfied, the entire proof response will have an error at the ProofResponse level with an empty responses array.

§Nullifier Types

  • Uniqueness proofs: Use nullifier field (a single FieldElement). The contract’s verify() function takes this as a separate uint256 nullifier param.

  • Session proofs: Use session_nullifier field (contains both nullifier and action). The contract’s verifySession() function expects uint256[2] sessionNullifier.

Exactly one of nullifier or session_nullifier should be present.

Fields§

§identifier: String

An RP-defined identifier for this request item used to match against constraints and responses.

Example: orb, document.

§issuer_schema_id: u64

Unique identifier for the credential schema and issuer pair.

§proof: ZeroKnowledgeProof

Encoded World ID Proof. See ZeroKnowledgeProof for more details.

§nullifier: Option<FieldElement>

Nullifier for Uniqueness proofs.

A unique, one-time identifier derived from (user, rpId, action) that lets RPs detect duplicate actions without learning who the user is. Used with the contract’s verify() function.

Present for Uniqueness proofs, absent for Session proofs.

§session_nullifier: Option<SessionNullifier>

Session nullifier for Session proofs.

Contains both the nullifier and action values that are cryptographically bound together. Used with the contract’s verifySession() function which expects uint256[2] sessionNullifier.

Present for Session proofs, absent for Uniqueness proofs.

§expires_at_min: u64

The minimum expiration required for the Credential used in the proof.

This precise value must be used when verifying the proof on-chain.

Implementations§

Source§

impl ResponseItem

Source

pub const fn new_uniqueness( identifier: String, issuer_schema_id: u64, proof: ZeroKnowledgeProof, nullifier: FieldElement, expires_at_min: u64, ) -> Self

Create a new response item for a Uniqueness proof.

Source

pub const fn new_session( identifier: String, issuer_schema_id: u64, proof: ZeroKnowledgeProof, session_nullifier: SessionNullifier, expires_at_min: u64, ) -> Self

Create a new response item for a Session proof.

Source

pub const fn is_session(&self) -> bool

Returns true if this is a Session proof response.

Source

pub const fn is_uniqueness(&self) -> bool

Returns true if this is a Uniqueness proof response.

Trait Implementations§

Source§

impl Clone for ResponseItem

Source§

fn clone(&self) -> ResponseItem

Returns a duplicate 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 Debug for ResponseItem

Source§

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

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

impl<'de> Deserialize<'de> for ResponseItem

Source§

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 Serialize for ResponseItem

Source§

fn serialize<__S>(&self, __serializer: __S) -> Result<__S::Ok, __S::Error>
where __S: Serializer,

Serialize this value into the given Serde serializer. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

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

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

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

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

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

Source§

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

Mutably borrows from an owned value. Read more
Source§

impl<T> CloneToUninit for T
where T: Clone,

Source§

unsafe fn clone_to_uninit(&self, dest: *mut u8)

🔬This is a nightly-only experimental API. (clone_to_uninit)
Performs copy-assignment from self to dest. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

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

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> IntoEither for T

Source§

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 more
Source§

fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
where F: FnOnce(&Self) -> bool,

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
Source§

impl<T> Pointable for T

Source§

const ALIGN: usize

The alignment of pointer.
Source§

type Init = T

The type for initializers.
Source§

unsafe fn init(init: <T as Pointable>::Init) -> usize

Initializes a with the given initializer. Read more
Source§

unsafe fn deref<'a>(ptr: usize) -> &'a T

Dereferences the given pointer. Read more
Source§

unsafe fn deref_mut<'a>(ptr: usize) -> &'a mut T

Mutably dereferences the given pointer. Read more
Source§

unsafe fn drop(ptr: usize)

Drops the object pointed to by the given pointer. Read more
Source§

impl<T> Same for T

Source§

type Output = T

Should always be Self
Source§

impl<T> ToOwned for T
where T: Clone,

Source§

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 T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

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

Source§

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

The type returned in the event of a conversion error.
Source§

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

Performs the conversion.
Source§

impl<V, T> VZip<V> for T
where V: MultiLane<T>,

Source§

fn vzip(self) -> V

Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

impl<'de, T> BorrowedRpcObject<'de> for T
where T: RpcBorrow<'de> + RpcSend,

Source§

impl<T> DeserializeOwned for T
where T: for<'de> Deserialize<'de>,

Source§

impl<'de, T> RpcBorrow<'de> for T
where T: Deserialize<'de> + Debug + Send + Sync + Unpin,

Source§

impl<T> RpcObject for T
where T: RpcSend + RpcRecv,

Source§

impl<T> RpcRecv for T
where T: DeserializeOwned + Debug + Send + Sync + Unpin + 'static,

Source§

impl<T> RpcSend for T
where T: Serialize + Clone + Debug + Send + Sync + Unpin,