-
Notifications
You must be signed in to change notification settings - Fork 238
Description
I want to assess the timeline for deprecating DIF Presentation Exchange in Credo.
This covers both support for it in OpenID4VP, and DIDComm. Since for OpenID4VP it has be removed in the final 1.0 version, we can drop support once we drop support for pre-1.0 draft of OpenID4VP
For DIDComm no new protocol has been defined that replaces PEX, but I'm also not sure if the current implementation of DIDComm/PEX is heavily used within Credo. It's still relying on PEX v1, and is not well integrated with non-W3C credentials.
We could look at supporting DIDCom presentation based on DCQL, piggybacking on the existing specification and integration into Credo. To be honest, the DIDComm protocol evolution for credential issuance and presentations has somewhat stagnated, so I'm uncertain about what to do in general about this in Credo.
There are several reason for wanting to deprecating PEX support in Credo:
- The PEX specification seems to have stagnated
- PEX relies on JSON Path which is hard to do securely
- The PEX library we depend on seems to have stagnated in terms of updates. We currently maintain a fork to address issues we've had with the library, and also integrates an outstanding PR.
- The PEX library depends on quite a list of credential parsing dependencies. With the DCQL we tried to stay as light as possible and leave all credential format logic and parsing up to the user of the library (in this case Credo). In our fork we alredy exhcanged some for the dependencies used by Credo, but since this is a core dependency it feels heavy to include.
- Keeping feature parity across PEX and DCQL is complex, for example we're integrating support for batch issuance now, and handling that during presentation. It requires custom logic based on DCQL/PEX, and for now we're only implementing this for DCQL
Another approach could be moving the PEX logic to the DIDComm module, since it soon will only be used by the DIDcomm logic. This way we make core lighter, but keep the functionality for DIDComm users leaning on PEX. However we will probably stop maintaining our fork of the PEX library at some point