Branch: refs/heads/main
  Home:   https://github.com/WebKit/WebKit
  Commit: 0179ac8fd6ef82163e4a08d41735ff8d0b0e85cd
      
https://github.com/WebKit/WebKit/commit/0179ac8fd6ef82163e4a08d41735ff8d0b0e85cd
  Author: Pascoe <[email protected]>
  Date:   2026-07-20 (Mon, 20 Jul 2026)

  Changed paths:
    A 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-disabled-by-default.https-expected.txt
    A 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-disabled-by-default.https.html
    A 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-user-agent-allows-protocol.https-expected.txt
    A 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-user-agent-allows-protocol.https.html
    M Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml
    M Source/WebCore/Modules/identity/DigitalCredential.cpp
    M Source/WebCore/Modules/identity/DigitalCredential.h
    M Source/WebCore/Modules/identity/DigitalCredential.idl
    M Source/WebCore/Modules/identity/DigitalCredentialPresentationProtocol.h
    M Source/WebCore/Modules/identity/DigitalCredentialPresentationProtocol.idl
    M Source/WebKit/Shared/WebCoreArgumentCodersAuth.serialization.in

  Log Message:
  -----------
  Add OpenID4VP presentation protocols behind an off-by-default flag
https://bugs.webkit.org/show_bug.cgi?id=319841
rdar://182739442

Reviewed by Abrar Rahman Protyasha.

Add the three OpenID4VP protocol identifiers defined by the W3C Digital
Credentials specification -- "openid4vp-v1-unsigned",
"openid4vp-v1-signed", and "openid4vp-v1-multisigned" -- alongside the
existing "org-iso-mdoc" protocol.  This is the first step toward
supporting OpenID4VP presentation requests; request validation and
wallet plumbing follow in later changes.

`DigitalCredentialsEnabled` is a stable, entitlement-gated preference
that is on by default in browsers, so advertising these protocols
unconditionally would make `userAgentAllowsProtocol()` report support
that the engine cannot yet fulfill (a request using one of them would
still be filtered out).  Introduce a separate off-by-default setting,
`DigitalCredentialsOpenID4VPEnabled` (internal), to gate the OpenID4VP
behavior while it is under development.

Extend the `DigitalCredentialPresentationProtocol` enum, the matching
IDL enum, and the IPC serialization list, kept in the same order since
the IDL enum's generated string mapping is indexed by the C++ enum
value.  `userAgentAllowsProtocol()` now receives the current document
(`CallWith=CurrentDocument`) and allows the OpenID4VP identifiers only
when the new setting is enabled; "org-iso-mdoc" is unaffected.

Request conversion in `convertProtocolString()` and
`jsToCredentialRequest()` is deliberately left to a follow-up: mapping
these identifiers there has no observable effect until the OpenID4VP
request structures and validation exist.

Tests: 
http/wpt/identity/digital-credential-openid4vp-user-agent-allows-protocol.https.html
       
http/wpt/identity/digital-credential-openid4vp-disabled-by-default.https.html

* Source/WTF/Scripts/Preferences/UnifiedWebPreferences.yaml:
* Source/WebCore/Modules/identity/DigitalCredential.cpp:
(WebCore::DigitalCredential::userAgentAllowsProtocol):
* Source/WebCore/Modules/identity/DigitalCredential.h:
* Source/WebCore/Modules/identity/DigitalCredential.idl:
* Source/WebCore/Modules/identity/DigitalCredentialPresentationProtocol.h:
* Source/WebCore/Modules/identity/DigitalCredentialPresentationProtocol.idl:
* Source/WebKit/Shared/WebCoreArgumentCodersAuth.serialization.in:
* 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-disabled-by-default.https.html:
 Added.
* 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-disabled-by-default.https-expected.txt:
 Added.
* 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-user-agent-allows-protocol.https.html:
 Added.
* 
LayoutTests/http/wpt/identity/digital-credential-openid4vp-user-agent-allows-protocol.https-expected.txt:
 Added.

Canonical link: https://commits.webkit.org/317599@main



To unsubscribe from these emails, change your notification settings at 
https://github.com/WebKit/WebKit/settings/notifications

Reply via email to