Open waltkb opened 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.
This issue has been marked as stale.
@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.
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 exampleopen 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).