Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

fixup algs contd 2 #495

Merged
merged 5 commits into from
Jul 5, 2017
Merged
Changes from 3 commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
43 changes: 31 additions & 12 deletions index.bs
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
<h1>Web Authentication:<br>An API for accessing Public Key Credentials<br>[Level 1]</h1>
<pre class='metadata'>
Title: Web Authentication: An API for accessing Public Key Credentials
Status: ED
Prepare for TR: true
TR: https://www.w3.org/TR/webauthn/
Expand All @@ -11,7 +11,7 @@ Previous Version: https://www.w3.org/TR/2016/WD-webauthn-20160928/
Previous Version: https://www.w3.org/TR/2016/WD-webauthn-20160902/
Previous Version: https://www.w3.org/TR/2016/WD-webauthn-20160531/
Shortname: webauthn
Level:
Level: 1
Editor: Vijay Bharadwaj, w3cid 55440, Microsoft, [email protected]
Editor: Hubert Le Van Gong, w3cid 84817, PayPal, [email protected]
Editor: Dirk Balfanz, w3cid 47648, Google, [email protected]
Expand Down Expand Up @@ -621,7 +621,7 @@ When this method is invoked, the user agent MUST execute the following algorithm
1. Let |clientDataHash| be the [=hash of the serialized client data=] represented by |clientDataJSON|.

1. Let |currentlyAvailableAuthenticators| be a new [=ordered set=] consisting of all [=authenticators=]
available on this platform.
currently available on this platform.

1. Let |selectedAuthenticators| be a new [=ordered set=].

Expand Down Expand Up @@ -828,20 +828,39 @@ When this method is invoked, the user agent MUST execute the following algorithm
1. If |allowCredentialDescriptorList|
<dl class="switch">
: [=list/is not empty=]
:: [=in parallel=], [=list/for each=] credential descriptor |C| in |allowCredentialDescriptorList|:
1. If <code>|C|.{{transports}}</code> [=list/is not empty=], the client SHOULD select one |transport| from
{{transports}}. Then, using |transport|, invoke the [=authenticatorGetAssertion=] operation on
|authenticator|, with |rpId|, |clientDataHash|, |allowCredentialDescriptorList|, and
|authenticatorExtensions| as parameters.

1. Otherwise, using local configuration knowledge of the appropriate transport to use with |authenticator|,
invoke the [=authenticatorGetAssertion=] operation on |authenticator| with |rpId|,
|clientDataHash|, |allowCredentialDescriptorList|, and |clientExtensions| as parameters.
:: 1. Let |distinctTransports| be a new [=ordered set=].

1. [=list/For each=] credential descriptor |C| in |allowCredentialDescriptorList|,
[=set/append=] each value, if any, of <code>|C|.{{transports}}</code> to |distinctTransports|.

Note: This will aggregate only distinct values of {{transports}} (for this [=authenticator=]) in
|distinctTransports| due to the properties of [=ordered sets=].

1. If |distinctTransports|
<dl class="switch">
: [=list/is not empty=]
:: The client selects one |transport| value from |distinctTransports|, possibly incorporating local
configuration knowledge of the appropriate transport to use with |authenticator| in making its
selection.

Then, using |transport|, invoke [=in parallel=] the [=authenticatorGetAssertion=] operation on
|authenticator|, with |rpId|, |clientDataHash|, |allowCredentialDescriptorList|, and
|authenticatorExtensions| as parameters.

: [=list/is empty=]
:: Using local configuration knowledge of the appropriate transport to use with |authenticator|,
invoke [=in parallel=] the [=authenticatorGetAssertion=] operation on |authenticator| with |rpId|,
|clientDataHash|, |allowCredentialDescriptorList|, and |clientExtensions| as parameters.
</dl>

: [=list/is empty=]
:: Using local configuration knowledge of the appropriate transport to use with |authenticator|, invoke
[=in parallel=] the [=authenticatorGetAssertion=] operation on |authenticator| with |rpId|, |clientDataHash|,
and |clientExtensions| as parameters.

Note: In this case, the [=[RP]=] did not supply a list of acceptable credential descriptors. Thus the
authenticator is being asked to exercise any credential it may possess that is bound to
the [=[RP]=] identified by |rpId|.
Copy link
Contributor Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

s/identified/as identified/

</dl>

1. [=set/Append=] |authenticator| to |issuedRequests|.
Expand Down