Skip to content

Commit e3349ab

Browse files
marcoscaceresmohamedamir
authored andcommitted
Define interaction between platform credential chooser and the user agent (#306)
1 parent 05b69d8 commit e3349ab

File tree

1 file changed

+121
-0
lines changed

1 file changed

+121
-0
lines changed

index.html

Lines changed: 121 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -485,6 +485,13 @@ <h2>
485485
via an [=digital credential/exchange protocol=], to respond to a
486486
[=digital credential/presentation request=] by a [=verifier=].
487487
</dd>
488+
<dt>
489+
<dfn data-for="digital credential">Credential request</dfn>
490+
</dt>
491+
<dd>
492+
A [=digital credential/presentation request=] or an [=digital
493+
credential/issuance request=].
494+
</dd>
488495
<dt>
489496
<dfn data-dfn-for="digital credential" data-local-lt=
490497
"issuance">Issuance request</dfn>
@@ -539,7 +546,121 @@ <h2>
539546
issuance protocol is identified by a [=digital credential/protocol
540547
identifier=]. See also section [[[#protocol-registry]]].
541548
</dd>
549+
<dt>
550+
Request coordinator
551+
</dt>
552+
<dd>
553+
See [=credential request coordinator=].
554+
</dd>
542555
</dl><!--
556+
// MARK: Credential Request Coordinator
557+
-->
558+
<h2>
559+
Credential Request Coordinator
560+
</h2>
561+
<p>
562+
The <dfn data-local-lt="coordinator">credential request coordinator</dfn>
563+
is a user-agent-defined component that mediates [=digital credential=]
564+
interactions through the [=top-level traversable=]. Each [=top-level
565+
traversable=] has exactly one associated coordinator. The coordinator
566+
ensures that at most one interaction is active across all [=child
567+
navigables=], orchestrates the end-to-end flow of presentation or
568+
issuance, and manages transitions between [=credential request
569+
coordinator/interaction states=].
570+
</p>
571+
<p>
572+
A user agent MAY delegate some or all coordinator responsibilities to
573+
external wallet applications, platform components, or other trusted
574+
entities according to user or platform policy.
575+
</p>
576+
<p>
577+
The coordinator manages the lifecycle of the interaction's {{Promise}}
578+
and its associated {{AbortSignal}} (if any), including resolution with
579+
the user's selected [=digital credential=], the [=holder=]'s response, or rejection due to errors or
580+
the user or program aborting the [=credential request=].
581+
</p>
582+
<p>
583+
The [=credential request coordinator=]:
584+
</p>
585+
<ul>
586+
<li>Validates and transforms presentation or issuance inputs and outputs.
587+
</li>
588+
<li>Requests the platform to display, for user selection, the credentials
589+
that are available for the current request and/or the holders that can
590+
handle the current request. The availability of credentials and holders
591+
is determined by matching the request parameters, user consent, and
592+
platform policy.
593+
</li>
594+
<li>[=Resolves=] the interaction's {{Promise}} with the selected [=digital credential=] or [=holder=]'s response, or [=rejects=] it to indicate that the [=credential request=] was aborted.
595+
</li>
596+
</ul>
597+
<aside class="note">
598+
<p>
599+
Although the coordinator handles input/output coordination, it is the
600+
responsibility of the platform together with available [=holders=], to
601+
present the UI that allows the user to choose a [=digital credential=] and/or a [=holder].
602+
</p>
603+
</aside>
604+
<h3>
605+
Interaction states
606+
</h3>
607+
<p>
608+
The [=credential request coordinator=] has a finite set of
609+
<dfn data-dfn-for="credential request coordinator">interaction
610+
states</dfn>, which are used to manage the lifecycle of a [=credential request=]:
611+
</p>
612+
<dl>
613+
<dt>
614+
"<dfn data-dfn-for="credential request coordinator">idle</dfn>":
615+
</dt>
616+
<dd>
617+
No [=credential request=] is currently in progress.
618+
</dd>
619+
<dt>
620+
"<dfn data-dfn-for="credential request coordinator">requesting</dfn>":
621+
</dt>
622+
<dd>
623+
A [=credential request=] is in progress and the user interface is
624+
presented.
625+
</dd>
626+
<dt>
627+
"<dfn data-dfn-for="credential request coordinator">aborting</dfn>":
628+
</dt>
629+
<dd>
630+
The active interaction is being canceled due to an error, a user
631+
action, or a [=AbortController/signal abort=]; the coordinator is
632+
cleaning up before returning to "[=credential request
633+
coordinator/idle=]".
634+
</dd>
635+
</dl>
636+
<p>
637+
The coordinator is initialized in the [=credential request
638+
coordinator/idle=] [=credential request coordinator/interaction state=].
639+
</p>
640+
<h3>
641+
Prepare credential requests
642+
</h3>
643+
<p>
644+
To be written.
645+
</p>
646+
<h3>
647+
Abort the credential request
648+
</h3>
649+
<p>
650+
To be written.
651+
</p>
652+
<h3>
653+
Dismiss the credential request
654+
</h3>
655+
<p>
656+
To be written.
657+
</p>
658+
<h3>
659+
Present the credential request
660+
</h3>
661+
<p>
662+
To be written.
663+
</p><!--
543664
// MARK: The Digital Credentials API
544665
-->
545666
<h2>

0 commit comments

Comments
 (0)