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