walt-id / waltid-identity

All-in-one open-source identity and wallet toolkit.
Apache License 2.0
122 stars 48 forks source link

Refactor openid4vc library #98

Open waltkb opened 9 months ago

waltkb commented 9 months ago

Currently, the openid4vc library provides interfaces that are more geared towards being a framework for use in the Wallet Kit than providing the necessary isolated functions as expected by the Issuer API and Verifier API, manifesting itself through needing various hacks to map outside data around the openid4vc library as to being able to run through the flows. This is currently a blocking issue for continuing with the cloud platform.

Classes and implementations thereof like OpenIDCredentialIssuer should not be needed, and no internal representation of state should exist within the library, as this then stops adhering to the definition of library and moves towards being a not flexible enough framework. For example open class CIProvider : OpenIDCredentialIssuer( ... ) with ... being various configuration is not flexible enough for dynamic usage as e.g. in the Cloud platform.

After the refactor, the openid4vc library should (only) provide:

-> Mainly refers to OpenIDCredentialIssuer, OpenIDCredentialWallet, and OpenIDCredentialVerifier.

End deliverable/result is a single Kotlin function (which can already serve as unit test) which contains the function calls that can run through the whole flow (Issuer -> issues -> Wallet -> presents -> Verifier) by passing around the OIDC4VC data objects between functions (not doing real HTTP requests, you can make comments what HTTP endpoint would be called in that place).

severinstampler commented 9 months ago

Maybe we can discuss this directly. Surely the idea was, that the state management is handled via abstract methods, that are provided by the implementer of the abstract class (as a library user). How the state management is done is up to the implementer and the use case. For the cloud API, there could be dedicated implementation providing the necessary flexibility to the outside and encapsulating the state management internally. But anyways, I'm interested to talk about it.

github-actions[bot] commented 7 months ago

This issue has been marked as stale.

taminobaumann commented 1 week ago

@severinstampler, can you please check if everything is already resolved and if this item can therefore be closed? Please check if the Linear issue here has also been closed.