Table of Contents

Class ZkRequest

Namespace
Tessio.Verifier.Core.Mdoc
Assembly
Tessio.Verifier.Core.Mdoc.dll

Asks the wallet for a zero knowledge proof of the requested elements: the zkRequest a request carries in its ItemsRequest's requestInfo.

public sealed class ZkRequest
Inheritance
ZkRequest
Inherited Members

Remarks

Pass one to CreateRequest(string, string, IReadOnlyList<string>, ZkRequest) or CreateSignedRequest(string, string, IReadOnlyList<string>, string, MdocReaderKey, byte[]?, ZkRequest). Keep it with the request and set the same one as ZkRequest when verifying the answer, so a proof made with a circuit it did not offer is refused. The age verification profile carries zero knowledge proofs over the Digital Credentials API only (technical specification 1.1.0, Annex A, A.6), so no other transport takes one.

Constructors

ZkRequest(IEnumerable<string>)

Asks for a proof made with one of the circuits systemIds names.

public ZkRequest(IEnumerable<string> systemIds)

Parameters

systemIds IEnumerable<string>

The zkSystemId of each circuit the wallet may prove with, for example longfellow-libzk-v1_6_1_4096_2945_137e…. Offer only circuits the verifier accepts; with the zero knowledge package that is LongfellowProofVerifier.SystemIds. Offer one only where the answer is checked by an MdocVerifier whose CheckStatus is false: one that checks status refuses every proof. Annex A, A.8 puts one system in scope, longfellow-libzk-v1. Each identifier must name it in the form the A.11 example and the Longfellow wallet libraries use, with a lowercase hash, because the circuit parameters written beside it are read from it.

Exceptions

ArgumentNullException

systemIds or one of its items is null.

ArgumentException

systemIds is empty, holds an identifier not of that form or names one circuit twice.

Properties

Required

zkRequired: whether the wallet must answer with a proof. Leave it false, the default, for the age verification profile: its Annex A, A.6 has a plain mdoc presentation answer where the device cannot make a proof, and A.9 says "A Relying Party SHALL NOT reject a presentation solely on the ground that it uses the plain ISO mDoc fallback mechanism".

public bool Required { get; init; }

Property Value

bool