<html>
    <head>
      <base href="https://bugs.webkit.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - _WKWebAuthenticationPanel should expose a way to encode CTAP commands"
   href="https://bugs.webkit.org/show_bug.cgi?id=232977#c12">Comment # 12</a>
              on <a class="bz_bug_link 
          bz_status_RESOLVED  bz_closed"
   title="RESOLVED FIXED - _WKWebAuthenticationPanel should expose a way to encode CTAP commands"
   href="https://bugs.webkit.org/show_bug.cgi?id=232977">bug 232977</a>
              from <span class="vcard"><a class="email" href="mailto:j_pascoe@apple.com" title="j_pascoe@apple.com <j_pascoe@apple.com>"> <span class="fn">j_pascoe@apple.com</span></a>
</span></b>
        <pre>(In reply to Garrett Davidson from <a href="show_bug.cgi?id=232977#c9">comment #9</a>)
<span class="quote">> > Any reason we can't do this?

> Sorry I thought I replied inline on the old patch but I'm not sure what
> happened to it.

> Part of the WebAuthn API contract is that the caller needs the original
> clientDataJSON back, which is used during signature verification, so the
> full value needs to be exposed anywhere a command is encoded. That said,
> _WKWebAuthenticationPanel could definitely start using
> AuthenticatorCoordinator::produceClientDataJson internally instead of having
> its own copy, and/or the other methods on _WKWebAuthenticationPanel could
> accept a full clientDataJSON as well. I think those would both be
> independent of this change though.</span >

We already made _WKWebAuthenticationPanel start using AuthenticatorCoordinator::produceClientDataJson internally in <a href="https://trac.webkit.org/changeset/285617/webkit">https://trac.webkit.org/changeset/285617/webkit</a> as using a different implementation broke WebAuthn due to the signature not matching the client data json returned.

The complete ClientDataJson is only needed for returning via the api, which is already done in AuthenticatorCoordinator.cpp:238. Everywhere else, ClientDataHash can be passed around. The authenticator does not need this value, noted here: <a href="https://www.w3.org/TR/webauthn-3/#iface-authenticatorresponse">https://www.w3.org/TR/webauthn-3/#iface-authenticatorresponse</a>

To complete same-site i-frames, we are going to have to add a crossOrigin flag to ClientDataJson, which is complicated by _WKWebAuthenticationPanel also having an SPI to calculate ClientDataJson, so we're going to have to end up removing it and likely changing these new SPIs.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are the assignee for the bug.</li>
      </ul>
    </body>
</html>