Skip to content

refactor: split OID4VC monolith and overhaul storage layer#526

Open
Dindexx wants to merge 17 commits intoopenwallet-foundation-labs:developfrom
lissi-id:feature/adjust-structure
Open

refactor: split OID4VC monolith and overhaul storage layer#526
Dindexx wants to merge 17 commits intoopenwallet-foundation-labs:developfrom
lissi-id:feature/adjust-structure

Conversation

@Dindexx
Copy link
Copy Markdown
Contributor

@Dindexx Dindexx commented Apr 14, 2026

Short description of what this resolves:

Refactors project architecture and data access by breaking down monolithic boundaries. The broad OID4VC surface is split into distinct OID4VCI and OID4VP projects, while shared credential concerns and DI/storage composition are extracted into dedicated assemblies. At the storage layer, the broad IDomainRepository is replaced with aggregate-specific store abstractions (mDoc, SD-JWT, credential sets, auth-flow sessions, completed presentations) alongside a new IStorageSession for data access. Additionally, this update makes database creation concurrency-safe, adjusts DI registrations and lifetimes accordingly, and updates namespaces, references, and tests across the solution to match the new APIs and project boundaries.

Changes proposed in this pull request:

  • Introduce WalletFramework.Oid4Vci and WalletFramework.Oid4Vp, and add WalletFramework.Credentials for shared credential/credential-set concerns used by those flows.

  • Add WalletFramework.Foundations to centralize wallet DI and storage builder wiring over Oid4Vci and Oid4Vp; extract WalletFramework.WalletAttestations and WalletFramework.RelyingPartyAuthentication into their own projects.

  • Harden DatabaseCreator (and IDatabaseCreator) for single initialization under parallel callers; expand DatabaseCreationTests and align other storage/integration tests with the new contracts.

  • Refactor domain repositories (MdocCredentialRepository, CredentialDataSetRepository, AuthFlowSessionRepository, CompletedPresentationRepository) and core storage (Repository, RecordsBuilder) to use the new session/store model; update OID4VC services (VCI, VP, DCQL) and DI extensions.

Fixes: #

Dindexx and others added 16 commits November 20, 2025 14:51
* Migrate storage layer to EF Core

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* deprecate aries and indy (openwallet-foundation-labs#427)

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* Align IssuerMetadata with VCI 1.0 spec (openwallet-foundation-labs#438)

* support credential_metadata in issuer metadata and drop AttributeOrder support

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* clean attribute order

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* Merge branch 'v3.0.0' of github.com:openwallet-foundation-labs/wallet-framework-dotnet into algin-isser-metadata-with-oid4vci1.0

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* Add CredentialsSet id as index to SdJwt and MDoc records

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* Fix the issuance for the PID (associate SdJwt AND MDocs with PID)

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* implement requested changes

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* minimal cleanup

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* Revert Vctmetadata ClaimDisplay removal

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

---------

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
Signed-off-by: Kevin <kevin.dinh@lissi.id>
Co-authored-by: Kevin <kevin.dinh@lissi.id>
Signed-off-by: Kevin <kevin.dinh@lissi.id>

* adjust readme for deprecating indy (openwallet-foundation-labs#439)

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* adjustment for indy migration (openwallet-foundation-labs#450)

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* Fix supported algs for the issuer signed jwt in wallet metadata (openwallet-foundation-labs#449)

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix tests

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* make dependencies packable again

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* DC-API: Validate origin

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* Introduce SDLC (openwallet-foundation-labs#466)

* initial sdcl introduction

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* add TODO

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* sign git tag

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* update sdlc guide

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

---------

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
Signed-off-by: Kevin <kevin.dinh@lissi.id>

* Dc api validate origin (openwallet-foundation-labs#473)

* DC-API: Validate origin

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* DC-API: refactor

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Kevin <kevin.dinh@lissi.id>
Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
Co-authored-by: Johannes Tuerk <72355192+JoTiTu@users.noreply.github.com>
* fix dev build number & distribute dev builds via nuget

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* CI/CD: adjust naming and add storage tests to pipeline

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
Signed-off-by: Kevin <kevin.dinh@lissi.id>
Co-authored-by: Kevin <kevin.dinh@lissi.id>
Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
* update to .NET 10

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* update to .NET 10 appendix

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* update to .NET 10 appendix

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Kevin <kevin.dinh@lissi.id>
* remove PEX

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* remove PEX appendix

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* remove UC5 QES

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix tests

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix response encryption tests

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix response encryption tests

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Kevin <kevin.dinh@lissi.id>
* refactor: client attestation

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* refactor: client attestation 2

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* refactor: client attestation 3

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix attestations

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix attestations 2

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* refactor: client attestation 4

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* refactor: client attestation 5

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* fix test

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* refactor: client attestation 6

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Kevin <kevin.dinh@lissi.id>
- Add method to sign a attestation request"

Signed-off-by: Kevin <kevin.dinh@lissi.id>
…t-foundation-labs#511)

- Added JsonConverter attribute to ClaimPath for improved JSON serialization.
- Refactored FromJArray method in ClaimPath to use expression-bodied syntax.
- Updated ClaimPathComponent to handle JTokenType.Undefined in addition to JTokenType.Null.
- Modified ClaimPathJsonConverter to handle JToken types more robustly.
- Added unit tests for handling null components in ClaimPath serialization and deserialization.

Signed-off-by: Kevin <kevin.dinh@lissi.id>
…ndation-labs#512)

* Make ClientAttestation and WalletAttestation optional

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

* Fix unit tests

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>

---------

Signed-off-by: Johannes Tuerk <johannes.tuerk@lissi.id>
…e DI service lifetimes

Signed-off-by: Kevin <kevin.dinh@lissi.id>
Refactor persistence to store interfaces; thread-safe one-time database initialization
…se initialization (openwallet-foundation-labs#525)

* fix: ensure one-time database initialization with concurrency handling

Signed-off-by: Kevin <kevin.dinh@lissi.id>

* refactor: replace domain repositories with store interfaces and update DI service lifetimes

Signed-off-by: Kevin <kevin.dinh@lissi.id>

---------

Signed-off-by: Kevin <kevin.dinh@lissi.id>
Made-with: Cursor
Signed-off-by: Kevin <kevin.dinh@lissi.id>
@Dindexx Dindexx requested a review from JoTiTu April 14, 2026 13:29
@Dindexx Dindexx self-assigned this Apr 14, 2026
@Dindexx Dindexx force-pushed the feature/adjust-structure branch from 3629a44 to ff857bb Compare April 14, 2026 13:35
@Dindexx Dindexx force-pushed the feature/adjust-structure branch from ff857bb to 2bac7ac Compare April 14, 2026 13:36
@Dindexx Dindexx force-pushed the develop branch 2 times, most recently from 321702c to 58513c8 Compare April 18, 2026 11:32
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants