⚠ Archived content — this site is no longer maintained.   Current WebKit documentation is at docs.webkit.org.

Changeset 287002 in webkit


Ignore:
Timestamp:
Dec 13, 2021, 6:42:38 PM (5 years ago)
Author:
J Pascoe
Message:

Unreviewed, reverting r286993.
https://bugs.webkit.org/show_bug.cgi?id=234283

Reverted changeset:

"[WebAuthn] Allow same-site, cross-origin iframe get()"
https://bugs.webkit.org/show_bug.cgi?id=234180
https://commits.webkit.org/r286993

Patch by Commit Queue <commit-queue@webkit.org> on 2021-12-13

Location:
trunk
Files:
1 deleted
18 edited

Legend:

Unmodified
Added
Removed
  • trunk/LayoutTests/ChangeLog

    r287000 r287002  
     12021-12-13  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, reverting r286993.
     4        https://bugs.webkit.org/show_bug.cgi?id=234283
     5
     6
     7        Reverted changeset:
     8
     9        "[WebAuthn] Allow same-site, cross-origin iframe get()"
     10        https://bugs.webkit.org/show_bug.cgi?id=234180
     11        https://commits.webkit.org/r286993
     12
    1132021-12-13  Christopher Reid  <chris.reid@sony.com>
    214
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https-expected.txt

    r286993 r287002  
    33PASS Tests that a frame that doesn't share the same origin with all its ancestors could not access the API.
    44PASS Tests that a frame that doesn't share the same origin with all its ancestors could not access the API. 2
    5 PASS Tests that a frame that is same-site, cross-origin without publickey-credentials-get feature policy cannot use get().
    6 PASS Tests that a frame that is same-site, cross-origin with publickey-credentials-get feature policy can use get().
    7 PASS Tests that a frame that is cross-origin, NOT same-site  with publickey-credentials-get feature policy cannot use get().
    85
  • trunk/LayoutTests/http/wpt/webauthn/public-key-credential-same-origin-with-ancestors.https.html

    r286993 r287002  
    2323            });
    2424        }, "Tests that a frame that doesn't share the same origin with all its ancestors could not access the API. 2");
    25 
    26         promise_test(t => {
    27             return withSameSiteIframe("samesite-iframe.html").then((message) => {
    28                 assert_equals(message.data, "Throw NotAllowedError: The origin of the document is not the same as its ancestors.");
    29             });
    30         }, "Tests that a frame that is same-site, cross-origin without publickey-credentials-get feature policy cannot use get().");
    31 
    32         promise_test(t => {
    33             return withSameSiteIframe("samesite-iframe.html", "publickey-credentials-get").then((message) => {
    34                 assert_equals(message.data, "PASS!");
    35             });
    36         }, "Tests that a frame that is same-site, cross-origin with publickey-credentials-get feature policy can use get().");
    37 
    38         promise_test(t => {
    39             return withCrossOriginIframe("samesite-iframe.html", "publickey-credentials-get").then((message) => {
    40                 assert_equals(message.data, "Throw NotAllowedError: The origin of the document is not the same as its ancestors.");
    41             });
    42         }, "Tests that a frame that is cross-origin, NOT same-site  with publickey-credentials-get feature policy cannot use get().");
    4325    </script>
    4426</body>
  • trunk/LayoutTests/http/wpt/webauthn/resources/util.js

    r286993 r287002  
    305305}
    306306
    307 function withCrossOriginIframe(resourceFile, allow = "")
     307function withCrossOriginIframe(resourceFile)
    308308{
    309309    return new Promise((resolve) => {
     
    312312        });
    313313        const frame = document.createElement("iframe");
    314         frame.allow = allow;
    315314        frame.src = get_host_info().HTTPS_REMOTE_ORIGIN + RESOURCES_DIR + resourceFile;
    316315        document.body.appendChild(frame);
    317     });
    318 }
    319 
    320 function withSameSiteIframe(resourceFile, allow = "")
    321 {
    322     return new Promise((resolve) => {
    323         waitForLoad().then((message) => {
    324             resolve(message);
    325        });
    326        const frame = document.createElement("iframe");
    327        const host = get_host_info();
    328        frame.allow = allow;
    329        frame.src = "https://" + host.ORIGINAL_HOST + ":" + host.HTTPS_PORT2 + RESOURCES_DIR + resourceFile;
    330        document.body.appendChild(frame);
    331316    });
    332317}
  • trunk/Source/WebCore/ChangeLog

    r287000 r287002  
     12021-12-13  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, reverting r286993.
     4        https://bugs.webkit.org/show_bug.cgi?id=234283
     5
     6
     7        Reverted changeset:
     8
     9        "[WebAuthn] Allow same-site, cross-origin iframe get()"
     10        https://bugs.webkit.org/show_bug.cgi?id=234180
     11        https://commits.webkit.org/r286993
     12
    1132021-12-13  Christopher Reid  <chris.reid@sony.com>
    214
  • trunk/Source/WebCore/Modules/credentialmanagement/CredentialsContainer.cpp

    r286993 r287002  
    3838#include "Page.h"
    3939#include "SecurityOrigin.h"
    40 #include "WebAuthenticationConstants.h"
    4140
    4241namespace WebCore {
     
    4746}
    4847
    49 WebAuthn::Scope CredentialsContainer::scope()
     48bool CredentialsContainer::doesHaveSameOriginAsItsAncestors()
    5049{
     50    // The following implements https://w3c.github.io/webappsec-credential-management/#same-origin-with-its-ancestors
     51    // as of 14 November 2017.
    5152    if (!m_document)
    52         return WebAuthn::Scope::CrossOrigin;
    53    
    54     bool isSameOrigin = true;
    55     bool isSameSite = true;
     53        return false;
     54
    5655    auto& origin = m_document->securityOrigin();
    57     auto& url = m_document->url();
    5856    for (auto* document = m_document->parentDocument(); document; document = document->parentDocument()) {
    59         if (!origin.isSameOriginDomain(document->securityOrigin()) && !areRegistrableDomainsEqual(url, document->url()))
    60             isSameSite = false;
    6157        if (!origin.isSameOriginAs(document->securityOrigin()))
    62             isSameOrigin = false;
     58            return false;
    6359    }
    64 
    65     if (isSameOrigin)
    66         return WebAuthn::Scope::SameOrigin;
    67     if (isSameSite)
    68         return WebAuthn::Scope::SameSite;
    69     return WebAuthn::Scope::CrossOrigin;
     60    return true;
    7061}
    7162
     
    9990    }
    10091
    101     m_document->page()->authenticatorCoordinator().discoverFromExternalSource(*m_document, options.publicKey.value(), scope(), WTFMove(options.signal), WTFMove(promise));
     92    m_document->page()->authenticatorCoordinator().discoverFromExternalSource(*m_document, options.publicKey.value(), doesHaveSameOriginAsItsAncestors(), WTFMove(options.signal), WTFMove(promise));
    10293}
    10394
     
    134125    }
    135126
    136     m_document->page()->authenticatorCoordinator().create(*m_document, options.publicKey.value(), scope(), WTFMove(options.signal), WTFMove(promise));
     127    m_document->page()->authenticatorCoordinator().create(*m_document, options.publicKey.value(), doesHaveSameOriginAsItsAncestors(), WTFMove(options.signal), WTFMove(promise));
    137128}
    138129
  • trunk/Source/WebCore/Modules/credentialmanagement/CredentialsContainer.h

    r286993 r287002  
    3333#include <wtf/WeakPtr.h>
    3434
    35 namespace WebAuthn {
    36 enum class Scope;
    37 }
    38 
    3935namespace WebCore {
    4036
     
    5955    CredentialsContainer(WeakPtr<Document>&&);
    6056
    61     WebAuthn::Scope scope();
     57    bool doesHaveSameOriginAsItsAncestors();
    6258
    6359    WeakPtr<Document> m_document;
  • trunk/Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.cpp

    r286993 r287002  
    3535#include "AuthenticatorResponseData.h"
    3636#include "Document.h"
    37 #include "FeaturePolicy.h"
    3837#include "JSBasicCredential.h"
    3938#include "JSDOMPromiseDeferred.h"
     
    106105}
    107106
    108 void AuthenticatorCoordinator::create(const Document& document, const PublicKeyCredentialCreationOptions& options, WebAuthn::Scope scope, RefPtr<AbortSignal>&& abortSignal, CredentialPromise&& promise) const
     107void AuthenticatorCoordinator::create(const Document& document, const PublicKeyCredentialCreationOptions& options, bool sameOriginWithAncestors, RefPtr<AbortSignal>&& abortSignal, CredentialPromise&& promise) const
    109108{
    110109    using namespace AuthenticatorCoordinatorInternal;
     
    116115    // Step 1, 3, 16 are handled by the caller.
    117116    // Step 2.
    118     if (scope != WebAuthn::Scope::SameOrigin) {
     117    if (!sameOriginWithAncestors) {
    119118        promise.reject(Exception { NotAllowedError, "The origin of the document is not the same as its ancestors."_s });
    120119        return;
     
    150149
    151150    // Step 13-15.
    152     auto clientDataJson = buildClientDataJson(ClientDataType::Create, options.challenge, callerOrigin, scope);
     151    auto clientDataJson = buildClientDataJson(ClientDataType::Create, options.challenge, callerOrigin);
    153152    auto clientDataJsonHash = buildClientDataJsonHash(clientDataJson);
    154153
     
    177176}
    178177
    179 void AuthenticatorCoordinator::discoverFromExternalSource(const Document& document, const PublicKeyCredentialRequestOptions& options, WebAuthn::Scope scope, RefPtr<AbortSignal>&& abortSignal, CredentialPromise&& promise) const
     178void AuthenticatorCoordinator::discoverFromExternalSource(const Document& document, const PublicKeyCredentialRequestOptions& options, bool sameOriginWithAncestors, RefPtr<AbortSignal>&& abortSignal, CredentialPromise&& promise) const
    180179{
    181180    using namespace AuthenticatorCoordinatorInternal;
     
    187186    // Step 1, 3, 13 are handled by the caller.
    188187    // Step 2.
    189     // This implements https://www.w3.org/TR/webauthn-2/#sctn-permissions-policy except only same-site, cross-origin is permitted.
    190     if (scope != WebAuthn::Scope::SameOrigin && !(scope == WebAuthn::Scope::SameSite && isFeaturePolicyAllowedByDocumentAndAllOwners(FeaturePolicy::Type::PublickeyCredentialsGetRule, document, LogFeaturePolicyFailure::No))) {
     188    if (!sameOriginWithAncestors) {
    191189        promise.reject(Exception { NotAllowedError, "The origin of the document is not the same as its ancestors."_s });
    192190        return;
     
    222220
    223221    // Step 10-12.
    224     auto clientDataJson = buildClientDataJson(ClientDataType::Get, options.challenge, callerOrigin, scope);
     222    auto clientDataJson = buildClientDataJson(ClientDataType::Get, options.challenge, callerOrigin);
    225223    auto clientDataJsonHash = buildClientDataJsonHash(clientDataJson);
    226224
  • trunk/Source/WebCore/Modules/webauthn/AuthenticatorCoordinator.h

    r286993 r287002  
    3232#include <wtf/Noncopyable.h>
    3333
    34 namespace WebAuthn {
    35 enum class Scope;
    36 }
    37 
    3834namespace WebCore {
    3935
     
    5854
    5955    // The following methods implement static methods of PublicKeyCredential.
    60     void create(const Document&, const PublicKeyCredentialCreationOptions&, WebAuthn::Scope, RefPtr<AbortSignal>&&, CredentialPromise&&) const;
    61     void discoverFromExternalSource(const Document&, const PublicKeyCredentialRequestOptions&, WebAuthn::Scope, RefPtr<AbortSignal>&&, CredentialPromise&&) const;
     56    void create(const Document&, const PublicKeyCredentialCreationOptions&, bool sameOriginWithAncestors, RefPtr<AbortSignal>&&, CredentialPromise&&) const;
     57    void discoverFromExternalSource(const Document&, const PublicKeyCredentialRequestOptions&, bool sameOriginWithAncestors, RefPtr<AbortSignal>&&, CredentialPromise&&) const;
    6258    void isUserVerifyingPlatformAuthenticatorAvailable(DOMPromiseDeferred<IDLBoolean>&&) const;
    6359
  • trunk/Source/WebCore/Modules/webauthn/WebAuthenticationConstants.h

    r286993 r287002  
    8181
    8282} // namespace WebCore
    83 
    84 namespace WebAuthn {
    85 
    86 enum class Scope {
    87     CrossOrigin,
    88     SameOrigin,
    89     SameSite
    90 };
    91 
    92 } // namespace WebAuthn
  • trunk/Source/WebCore/Modules/webauthn/WebAuthenticationUtils.cpp

    r286993 r287002  
    135135
    136136// FIXME(181948): Add token binding ID.
    137 Ref<ArrayBuffer> buildClientDataJson(ClientDataType type, const BufferSource& challenge, const SecurityOrigin& origin, WebAuthn::Scope scope)
     137Ref<ArrayBuffer> buildClientDataJson(ClientDataType type, const BufferSource& challenge, const SecurityOrigin& origin)
    138138{
    139139    auto object = JSON::Object::create();
     
    148148    object->setString("challenge"_s, base64URLEncodeToString(challenge.data(), challenge.length()));
    149149    object->setString("origin"_s, origin.toRawString());
    150     if (scope != WebAuthn::Scope::SameOrigin)
    151         object->setBoolean("crossOrigin"_s, scope != WebAuthn::Scope::SameOrigin);
    152150
    153151    auto utf8JSONString = object->toJSONString().utf8();
  • trunk/Source/WebCore/Modules/webauthn/WebAuthenticationUtils.h

    r286993 r287002  
    5353WEBCORE_EXPORT Vector<uint8_t> buildAttestationObject(Vector<uint8_t>&& authData, String&& format, cbor::CBORValue::MapValue&& statementMap, const AttestationConveyancePreference&);
    5454
    55 WEBCORE_EXPORT Ref<ArrayBuffer> buildClientDataJson(ClientDataType /*type*/, const BufferSource& challenge, const SecurityOrigin& /*origin*/, WebAuthn::Scope);
     55WEBCORE_EXPORT Ref<ArrayBuffer> buildClientDataJson(ClientDataType /*type*/, const BufferSource& challenge, const SecurityOrigin& /*origin*/);
    5656
    5757WEBCORE_EXPORT Vector<uint8_t> buildClientDataJsonHash(const ArrayBuffer& clientDataJson);
  • trunk/Source/WebCore/html/FeaturePolicy.cpp

    r286993 r287002  
    6868        return "Magnetometer";
    6969#endif
    70 #if ENABLE(WEB_AUTHN)
    71     case FeaturePolicy::Type::PublickeyCredentialsGetRule:
    72         return "PublickeyCredentialsGet";
    73 #endif
    7470#if ENABLE(WEBXR)
    7571    case FeaturePolicy::Type::XRSpatialTracking:
     
    189185    bool isMagnetometerInitialized = false;
    190186#endif
    191 #if ENABLE(WEB_AUTHN)
    192     bool isPublickeyCredentialsGetInitialized = false;
    193 #endif
    194187#if ENABLE(WEBXR)
    195188    bool isXRSpatialTrackingInitialized = false;
     
    256249            isMagnetometerInitialized = true;
    257250            updateList(document, policy.m_magnetometerRule, item.substring(13));
    258             continue;
    259         }
    260 #endif
    261 #if ENABLE(WEB_AUTHN)
    262         if (item.startsWith("publickey-credentials-get")) {
    263             isPublickeyCredentialsGetInitialized = true;
    264             updateList(document, policy.m_publickeyCredentialsGetRule, item.substring(26));
    265251            continue;
    266252        }
     
    297283    if (!isMagnetometerInitialized)
    298284        policy.m_magnetometerRule.allowedList.add(document.securityOrigin().data());
    299 #endif
    300 #if ENABLE(WEB_AUTHN)
    301     if (!isPublickeyCredentialsGetInitialized)
    302         policy.m_publickeyCredentialsGetRule.allowedList.add(document.securityOrigin().data());
    303285#endif
    304286#if ENABLE(WEBXR)
     
    357339        return isAllowedByFeaturePolicy(m_magnetometerRule, origin);
    358340#endif
    359 #if ENABLE(WEB_AUTHN)
    360     case Type::PublickeyCredentialsGetRule:
    361         return isAllowedByFeaturePolicy(m_publickeyCredentialsGetRule, origin);
    362 #endif
    363341#if ENABLE(WEBXR)
    364342    case Type::XRSpatialTracking:
  • trunk/Source/WebCore/html/FeaturePolicy.h

    r286993 r287002  
    5454        Magnetometer,
    5555#endif
    56 #if ENABLE(WEB_AUTHN)
    57         PublickeyCredentialsGetRule,
    58 #endif
    5956#if ENABLE(WEBXR)
    6057        XRSpatialTracking,
     
    8582    AllowRule m_magnetometerRule;
    8683#endif
    87 #if ENABLE(WEB_AUTHN)
    88     AllowRule m_publickeyCredentialsGetRule;
    89 #endif
    9084#if ENABLE(WEBXR)
    9185    AllowRule m_xrSpatialTrackingRule;
  • trunk/Source/WebKit/ChangeLog

    r286999 r287002  
     12021-12-13  Commit Queue  <commit-queue@webkit.org>
     2
     3        Unreviewed, reverting r286993.
     4        https://bugs.webkit.org/show_bug.cgi?id=234283
     5
     6
     7        Reverted changeset:
     8
     9        "[WebAuthn] Allow same-site, cross-origin iframe get()"
     10        https://bugs.webkit.org/show_bug.cgi?id=234180
     11        https://commits.webkit.org/r286993
     12
    1132021-12-13  Tim Horton  <timothy_horton@apple.com>
    214
  • trunk/Source/WebKit/Platform/spi/Cocoa/AuthenticationServicesCoreSPI.h

    r286993 r287002  
    108108@interface ASCPublicKeyCredentialCreationOptions : NSObject <NSSecureCoding>
    109109
    110 @property (nonatomic, nullable, copy) NSData *challenge;
    111 @property (nonatomic, nullable, copy) NSData *clientDataHash;
     110@property (nonatomic, copy) NSData *challenge;
    112111@property (nonatomic, copy) NSString *relyingPartyIdentifier;
    113112@property (nonatomic, copy) NSString *userName;
     
    118117@property (nonatomic) BOOL shouldRequireResidentKey;
    119118
    120 @end
    121 
    122 @interface ASCPublicKeyCredentialAssertionOptions : NSObject <NSSecureCoding>
    123 @property (nonatomic, copy, readonly) NSString *relyingPartyIdentifier;
    124 @property (nonatomic, nullable, copy, readonly) NSData *challenge;
    125 @property (nonatomic, nullable, copy) NSData *clientDataHash;
    126 @property (nonatomic, nullable, readonly, copy) NSString *userVerificationPreference;
    127119@end
    128120
  • trunk/Source/WebKit/UIProcess/API/Cocoa/_WKWebAuthenticationPanel.mm

    r286993 r287002  
    8888    auto securityOrigin = WebCore::SecurityOrigin::createFromString(origin);
    8989
    90     auto clientDataJson = buildClientDataJson(clientDataType, WebCore::BufferSource(challengeBuffer), securityOrigin, WebAuthn::Scope::SameOrigin);
     90    auto clientDataJson = buildClientDataJson(clientDataType, WebCore::BufferSource(challengeBuffer), securityOrigin);
    9191    return adoptNS([[NSData alloc] initWithBytes:clientDataJson->data() length:clientDataJson->byteLength()]);
    9292}
  • trunk/Source/WebKit/UIProcess/WebAuthentication/Cocoa/WebAuthenticatorCoordinatorProxy.mm

    r286993 r287002  
    146146}
    147147
    148 static RetainPtr<ASCCredentialRequestContext> configureRegistrationRequestContext(const PublicKeyCredentialCreationOptions& options, NSData *hash)
     148static RetainPtr<ASCCredentialRequestContext> configureRegistrationRequestContext(const PublicKeyCredentialCreationOptions& options)
    149149{
    150150    ASCCredentialRequestTypes requestTypes = ASCCredentialRequestTypePlatformPublicKeyRegistration | ASCCredentialRequestTypeSecurityKeyPublicKeyRegistration;
     
    170170    auto credentialCreationOptions = adoptNS([allocASCPublicKeyCredentialCreationOptionsInstance() init]);
    171171
    172     if ([credentialCreationOptions respondsToSelector:@selector(setClientDataHash:)])
    173         [credentialCreationOptions setClientDataHash:toNSData(hash).get()];
    174     else
    175         [credentialCreationOptions setChallenge:WebCore::toNSData(options.challenge).get()];
     172    [credentialCreationOptions setChallenge:WebCore::toNSData(options.challenge).get()];
    176173    [credentialCreationOptions setRelyingPartyIdentifier:options.rp.id];
    177174    [credentialCreationOptions setUserName:options.user.name];
     
    206203}
    207204
    208 static RetainPtr<ASCCredentialRequestContext> configurationAssertionRequestContext(const PublicKeyCredentialRequestOptions& options, Vector<uint_8> hash)
     205static RetainPtr<ASCCredentialRequestContext> configurationAssertionRequestContext(const PublicKeyCredentialRequestOptions& options)
    209206{
    210207    ASCCredentialRequestTypes requestTypes = ASCCredentialRequestTypePlatformPublicKeyAssertion | ASCCredentialRequestTypeSecurityKeyPublicKeyAssertion;
     
    231228    [requestContext setRelyingPartyIdentifier:options.rpId];
    232229
    233     if (requestTypes & ASCCredentialRequestTypePlatformPublicKeyAssertion) {
    234         auto assertionOptions = adoptNS(allocASCPublicKeyCredentialAssertionOptionsInstance());
    235         if ([assertionOptions respondsToSelector:@selector(initWithKind:relyingPartyIdentifier:clientDataHash:userVerificationPreference:allowedCredentials:)]) {
    236             auto nsHash = toNSData(hash);
    237             [assertionOptions initWithKind:ASCPublicKeyCredentialKindPlatform relyingPartyIdentifier:options.rpId clientDataHash:nsHash userVerificationPreference:userVerification.get() allowedCredentials:allowedCredentials.get()]
    238         } else {
    239             auto challenge = WebCore::toNSData(options.challenge);
    240             [assertionOptions initWithKind:ASCPublicKeyCredentialKindPlatform relyingPartyIdentifier:options.rpId challenge:challenge.get() userVerificationPreference:userVerification.get() allowedCredentials:allowedCredentials.get()]
    241         }
    242 
    243         [requestContext setPlatformKeyCredentialAssertionOptions:assertionOptions.get()];
    244     }
    245 
    246     if (requestTypes & ASCCredentialRequestTypeSecurityKeyPublicKeyAssertion) {
    247         auto assertionOptions = adoptNS(allocASCPublicKeyCredentialAssertionOptionsInstance());
    248         if ([assertionOptions respondsToSelector:@selector(initWithKind:relyingPartyIdentifier:clientDataHash:userVerificationPreference:allowedCredentials:)]) {
    249             auto nsHash = toNSData(hash);
    250             [assertionOptions initWithKind:ASCPublicKeyCredentialKindSecurityKey relyingPartyIdentifier:options.rpId clientDataHash:nsHash userVerificationPreference:userVerification.get() allowedCredentials:allowedCredentials.get()]];
    251         } else {
    252             auto challenge = WebCore::toNSData(options.challenge);
    253             [assertionOptions initWithKind:ASCPublicKeyCredentialKindSecurityKey relyingPartyIdentifier:options.rpId challenge:challenge.get() userVerificationPreference:userVerification.get() allowedCredentials:allowedCredentials.get()]];
    254         }
    255         [requestContext setSecurityKeyCredentialAssertionOptions:assertionOptions.get()];
    256     }
     230    auto challenge = WebCore::toNSData(options.challenge);
     231
     232    if (requestTypes & ASCCredentialRequestTypePlatformPublicKeyAssertion)
     233        [requestContext setPlatformKeyCredentialAssertionOptions:[allocASCPublicKeyCredentialAssertionOptionsInstance() initWithKind:ASCPublicKeyCredentialKindPlatform relyingPartyIdentifier:options.rpId challenge:challenge.get() userVerificationPreference:userVerification.get() allowedCredentials:allowedCredentials.get()]];
     234
     235    if (requestTypes & ASCCredentialRequestTypeSecurityKeyPublicKeyAssertion)
     236        [requestContext setSecurityKeyCredentialAssertionOptions:[allocASCPublicKeyCredentialAssertionOptionsInstance() initWithKind:ASCPublicKeyCredentialKindSecurityKey relyingPartyIdentifier:options.rpId challenge:challenge.get() userVerificationPreference:userVerification.get() allowedCredentials:allowedCredentials.get()]];
    257237
    258238    return requestContext;
     
    263243    RetainPtr<ASCCredentialRequestContext> result;
    264244    WTF::switchOn(requestData.options, [&](const PublicKeyCredentialCreationOptions& options) {
    265         result = configureRegistrationRequestContext(options, requestData.hash);
     245        result = configureRegistrationRequestContext(options);
    266246    }, [&](const PublicKeyCredentialRequestOptions& options) {
    267         result = configurationAssertionRequestContext(options, requestData.hash);
     247        result = configurationAssertionRequestContext(options);
    268248    });
    269249    return result;
Note: See TracChangeset for help on using the changeset viewer.