diff --git a/index.bs b/index.bs
index 9ae2b19f7..32c64aa81 100644
--- a/index.bs
+++ b/index.bs
@@ -5784,7 +5784,7 @@ calling {{CredentialsContainer/create()|navigator.credentials.create()}} they se
[=attestation type=] as a part of [=verification procedure|verification=]. See the "Verification procedure" subsections of
[[#sctn-defined-attestation-formats]]. See also [[#sctn-attestation-privacy]]. For all [=attestation types=] defined in this
section other than [=self attestation|Self=] and [=None=], [=[RP]=] [=verification procedure|verification=] is followed by
-matching the [=attestation trust path|trust path=] to an acceptable root certificate per [step 24](#reg-ceremony-assess-trust)
+matching the [=attestation trust path|trust path=] to an acceptable root certificate per [step 23](#reg-ceremony-assess-trust)
of [[#sctn-registering-a-new-credential]].
Differentiating these [=attestation types=] becomes useful primarily as a means for determining if the [=attestation=] is acceptable
under [=[RP]=] policy.
@@ -5987,25 +5987,6 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
matches the {{PublicKeyCredentialParameters/alg}} attribute of one of the [=list/items=] in
|pkOptions|.{{PublicKeyCredentialCreationOptions/pubKeyCredParams}}
.
-
[=authData/extensions=]
in |authData| are as expected, considering the [=client
- extension input=] values that were given in |pkOptions|.{{PublicKeyCredentialCreationOptions/extensions}}
- and any specific policy of the [=[RP]=] regarding unsolicited extensions, i.e., those that were not specified as part of
- |pkOptions|.{{PublicKeyCredentialCreationOptions/extensions}}
.
- In the general case, the meaning of "are as expected" is specific to the [=[RP]=] and which extensions are in use.
-
- Note: [=Client platforms=] MAY enact local policy that sets additional [=authenticator extensions=] or
- [=client extensions=] and thus cause values to appear in the [=authenticator extension outputs=] or
- [=client extension outputs=] that were not originally specified as part of
- |pkOptions|.{{PublicKeyCredentialCreationOptions/extensions}}
. [=[RPS]=] MUST be prepared to handle such
- situations, whether it be to ignore the unsolicited extensions or reject the attestation. The [=[RP]=] can make this
- decision based on local policy and the extensions in use.
-
- Note: Since all extensions are OPTIONAL for both the [=client=] and the [=authenticator=], the [=[RP]=] MUST also be
- prepared to handle cases where none or not all of the requested extensions were acted upon.
- [=credentialId=]
is ≤ 1023 bytes. Credential IDs larger than this many bytes SHOULD cause the RP to fail this [=registration ceremony=].
@@ -6100,7 +6081,28 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
-1. If the attestation statement |attStmt| successfully verified but is not trustworthy per [step 24](#reg-ceremony-assess-trust) above,
+
+ [=authData/extensions=]
in |authData|
+ as required by the [=[RP]=].
+ Depending on each [=WebAuthn extensions|extension=],
+ processing steps may be concretely specified or it may be up to the [=[RP]=] what to do with extension outputs.
+ The [=[RP]=] MAY ignore any or all extension outputs.
+
+ [=Clients=] MAY set additional [=authenticator extensions=] or
+ [=client extensions=] and thus cause values to appear in the [=authenticator extension outputs=] or
+ [=client extension outputs=] that were not
+ requested by the [=[RP]=] in |pkOptions|.{{PublicKeyCredentialCreationOptions/extensions}}
.
+ The [=[RP]=] MUST be prepared to handle such situations,
+ whether by ignoring the unsolicited extensions or by rejecting the attestation. The [=[RP]=] can make this
+ decision based on local policy and the extensions in use.
+
+ Since all extensions are OPTIONAL for both the [=client=] and the [=authenticator=], the [=[RP]=] MUST also be
+ prepared to handle cases where none or not all of the requested extensions were acted upon.
+ [=authData/extensions=]
in |authData| are as expected, considering the [=client
- extension input=] values that were given in |pkOptions|.{{PublicKeyCredentialRequestOptions/extensions}}
- and any specific policy of the [=[RP]=] regarding unsolicited extensions, i.e., those that were not specified as part of
- |pkOptions|.{{PublicKeyCredentialRequestOptions/extensions}}
.
- In the general case, the meaning of "are as expected" is specific to the [=[RP]=] and which extensions are in use.
-
- Note: [=Client platforms=] MAY enact local policy that sets additional [=authenticator extensions=] or
- [=client extensions=] and thus cause values to appear in the [=authenticator extension outputs=] or
- [=client extension outputs=] that were not originally specified as part of
- |pkOptions|.{{PublicKeyCredentialRequestOptions/extensions}}
. [=[RPS]=] MUST be prepared to handle such
- situations, whether it be to ignore the unsolicited extensions or reject the assertion. The [=[RP]=] can make this
- decision based on local policy and the extensions in use.
-
- Note: Since all extensions are OPTIONAL for both the [=client=] and the [=authenticator=], the [=[RP]=] MUST also be
- prepared to handle cases where none or not all of the requested extensions were acted upon.
- |credentialRecord|.[$credential record/publicKey$]
,
@@ -6296,6 +6279,27 @@ a numbered step. If outdented, it (today) is rendered as a bullet in the midst o
the above state updates SHOULD be deferred to after those additional checks are completed successfully.
+
+ [=authData/extensions=]
in |authData|
+ as required by the [=[RP]=].
+ Depending on each [=WebAuthn extensions|extension=],
+ processing steps may be concretely specified or it may be up to the [=[RP]=] what to do with extension outputs.
+ The [=[RP]=] MAY ignore any or all extension outputs.
+
+ [=Clients=] MAY set additional [=authenticator extensions=] or
+ [=client extensions=] and thus cause values to appear in the [=authenticator extension outputs=] or
+ [=client extension outputs=] that were not
+ requested by the [=[RP]=] in |pkOptions|.{{PublicKeyCredentialRequestOptions/extensions}}
.
+ The [=[RP]=] MUST be prepared to handle such situations,
+ whether by ignoring the unsolicited extensions or by rejecting the assertion. The [=[RP]=] can make this
+ decision based on local policy and the extensions in use.
+
+ Since all extensions are OPTIONAL for both the [=client=] and the [=authenticator=], the [=[RP]=] MUST also be
+ prepared to handle cases where none or not all of the requested extensions were acted upon.
+ |options|
, [=iteration/continue=] (i.e. ignore the [=create/candidate authenticator=])
if the [=create/candidate authenticator=] is not capable of storing large blobs.
1. Otherwise (i.e. {{AuthenticationExtensionsLargeBlobInputs/support}} is absent or has the value {{LargeBlobSupport/preferred}}):