NL Wallet
Contents:
Relying Party
Introduction
Step-by-step
Architecture Overview
Preparations and Onboarding
Decisions
What a PID_DOCTYPE looks like
What an ADDRESS_DOCTYPE looks like
Required Data
Example reader_auth.json
Example Screenshot of reader_auth.json Data Used in Wallet App
Certificate Request
File Request
Wallet server installation
Obtaining the software
Creating a database backend (optional)
Create a database server
Create user and database itself:
Apply database schema:
Creating a configuration
The storage settings
Using in-memory session state
Using database persisted session state (optional)
Determine public URL
Universal link base URL
The ephemeral ID secret
Configuring the trustanchor and the usecase
Creating the configuration file
Configuring an API key (optional)
Configuring Cross-Origin Resource Sharing (optional)
Running the server for the first time
Server logging
Validating the configuration
Background
What a Disclosure Session Looks Like
Cross Device vs. Same Device
Notes on Requirements Applicable to Your Application
Integration
API Specifications
Example calls
Initiate a Disclosure Session
Check Status of Session
Retrieve Disclosure Results
References
Specification references
Protocols
Attestation formats
Cryptography
Other
Generic issuance in NL Wallet ecosystem
SD-JWT
mdoc
1. Serialize the mdoc to JSON for JSON Schema
2. Convert namespace structure to nested SD-JWT structure
Example
SD-JWT VC Type Metadata used for validation
Mdoc formatted document snippet
Transformed snippet used for validation against Type Metadata
SD-JWT VC Profile for the NL Wallet, VV and OV
Introduction
SD-JWT VC Type Metadata
Type Metadata
Display Metadata
Credential Summary
Simple Rendering
Claims Metadata
Claim Metadata
Claim Display Metadata
Extending types
Profile considerations
C1 - Credential contents must be presentable to the end user
C2 - Credential summary (based on contents) for optimized browsing
C3 - No support for external resources
C4 - Unambiguously select a locale for displaying credentials
Open Api Specifications
App Startup
Initialization
Extra callbacks
Configuration
Wallet lock
Disclosure with OpenID4VP
Generic disclosure
Disclosure based issuance
API
Attestation server
issuance_server
configuration
QR/UL
Sequence diagram
Issuance with OpenID4VCI
PID issuance
Generic issuance
Components overview
Pin validation
Local pin validation
Remote pin validation
Wallet creation
Create wallet (app)
Create wallet (server)
Lokalise
Workflow
Exporting translations (lokalise -> app)
Export script
Importing keys/translations (app -> lokalise)
Import script
How to update Rust (or anything really) for NL Wallet
Update Rust images
Update Rust macOS Runner
Update Rust workspace version
Definition of done
In general
Things we check every pull- or merge request
Is in compliance with our coding and quality standards
Implements and tests all acceptance criteria and/or capabilities
Implements any screens according to our Figma designs (if applicable)
Is described in release notes, with any breaking changes or upgrade steps
Is documented (in README.md files, OpenAPI specs, documentation folder)
Does not contain commits with personal, secret or copyrighted information
Incurred technical debt has a TODO comment and a related issue ticket
Can be deployed locally and remotely (CI/CD related setup up-to-date)
Merge Requests
Releases Howto
Assumptions
What constitutes a release?
Doing a release
Step 1: Make sure the release on Jira is green
Step 2: Make sure Figma links are up-to-date in README.md
Step 3: Confirm appropiate tests and reports have been done for this release
Step 4: Release approval
Step 5: Freeze git main branch
Step 6: Set release version and tag
Step 7: Set development version
Step 8: Run publication guard
Step 9: Publish source code to GitHub
Step 10: Collect build artifacts for release
Step 11: Create a release description
Step 12: Create GitHub release from tag
References
Release Notes Template
vX.Y.Z (fill in version, place at /documentation/release-notes/vX.Y.Z.md)
Important (this is an optional header, remove if there are no )
Changes
Releases
Release notes v0.3.0
Upgrading
New features
Code improvements
Wallet app improvements
Bug fixes
CI changes
NL Wallet
Releases
View page source
Releases
Releases:
Release notes v0.3.0