A cross-browser extension that intercepts W3C Digital Credentials API calls and enables users to choose between multiple digital identity wallet providers.
When a website requests credentials using the W3C Digital Credentials API, this extension:
- Intercepts the request - Captures
navigator.credentials.get()calls - Filters by protocol - Shows only compatible wallets (OpenID4VP, mDoc, W3C VC)
- Presents wallet choices - User selects their preferred wallet
- Routes the request - Sends the credential request to the chosen wallet
- Returns the credential - Wallet response goes back to the website
- OpenID4VP Support - Full implementation with JAR, Presentation Exchange, and DCQL
- JWT Verification Callbacks - Wallets provide their own signature verification
- Auto-Registration API - Wallets can register themselves via JavaScript API
- Protocol-Aware - Filters wallets by supported protocols
- Cross-Browser - Works on Chrome, Firefox, and Safari
- User-Friendly - Beautiful modal UI with wallet management
- Install the extension (from your browser's extension store)
- Configure wallets - Click the extension icon β "Configure Wallets"
- Add wallets - Use pre-configured wwWallet presets or add custom wallets
- Done! - Visit any website that requests credentials and select your wallet
Use the standard W3C Digital Credentials API:
const credential = await navigator.credentials.get({
digital: {
providers: [{
protocol: "openid4vp",
request: {
client_id: "https://verifier.example.com",
response_type: "vp_token",
presentation_definition: { /* ... */ }
}
}]
}
});Register your wallet with the extension:
if (window.DCWS?.isInstalled()) {
await window.DCWS.registerWallet({
name: 'MyWallet',
url: 'https://wallet.example.com',
protocols: ['openid4vp'],
icon: 'π',
color: '#3b82f6'
});
}- W3C Digital Credentials API interception
- OpenID4VP protocol (JAR, Presentation Exchange, DCQL)
- JWT verification callback system
- Wallet auto-registration API
- Protocol-aware wallet filtering
- Cross-browser support (Chrome, Firefox, Safari)
- 146 passing tests (100% coverage)
- mDoc OpenID4VP protocol plugin
- W3C Verifiable Credentials plugin
- Response encryption callbacks
- Additional protocol support
- Quick Start Guide - Get up and running in minutes
- Wallet Management - Configure and manage wallets
- API Reference - Complete API documentation
- Development Guide - Build, test, and develop the extension
- Wallet API Guide - Auto-registration API for wallet developers
- OpenID4VP Implementation - Complete OpenID4VP guide
- OpenID4VP Summary - Executive summary
- JWT Verification Callbacks - JWT callback system
- Protocol Support Architecture - Protocol plugin system
- Branding Guide - Logo, colors, and UI guidelines
- Auto-Registration - Wallet registration system
- Node.js (v14+)
- npm or yarn
- Chrome, Firefox, or Safari
# Clone and install
cd /home/leifj/work/siros.org/browser-extensions
npm install
# Build for all browsers
npm run build
# Or build for specific browser
npm run build:chrome
npm run build:firefox
npm run build:safari
# Development with auto-rebuild
npm run watch:chromeChrome:
- Go to
chrome://extensions/ - Enable "Developer mode"
- Click "Load unpacked" β Select
chrome/directory
Firefox:
- Go to
about:debugging#/runtime/this-firefox - Click "Load Temporary Add-on" β Select
firefox/manifest.json
Safari:
- Convert:
xcrun safari-web-extension-converter safari/ - Open Xcode project and run
β Complete Development Guide
# Run all tests
npm test
# Run specific test suites
npm test -- tests/openid4vp.test.js
npm test -- tests/jwt-verification.test.js
# Open interactive test pages
open test-page.html
open test-wallet-api.htmlTest Coverage: 146/146 tests passing (100%)
# Package for Chrome Web Store
npm run package:chrome
# Package for Firefox Add-ons
npm run package:firefox
# Or use Makefile
make packageβββββββββββββββ
β Website β Calls navigator.credentials.get()
ββββββββ¬βββββββ
β
v
βββββββββββββββββββββββββββββββββββββββ
β Extension (inject.js) β
β - Intercepts DC API calls β
β - Exposes window.DCWS API β
ββββββββ¬βββββββββββββββββββββββββββββββ
β
v
βββββββββββββββββββββββββββββββββββββββ
β Protocol Plugin (OpenID4VPPlugin) β
β - Parses/validates requests β
β - Handles JAR, DCQL, Pres. Ex. β
ββββββββ¬βββββββββββββββββββββββββββββββ
β
v
βββββββββββββββββββββββββββββββββββββββ
β Wallet Selection Modal β
β - Filters by protocol β
β - User selects wallet β
ββββββββ¬βββββββββββββββββββββββββββββββ
β
v
βββββββββββββββ
β Wallet β Processes request, returns credential
βββββββββββββββ
Contributions welcome! Please:
- Fork the repository
- Create a feature branch
- Write tests for new features
- Run
npm testto verify - Submit a pull request
BSD 2-Clause License - see LICENSE file for details.
Copyright (c) 2025, SIROS Foundation
- W3C Digital Credentials API
- OpenID4VP Specification
- Presentation Exchange v2.0
- Chrome Extensions
- Firefox Extensions
- Safari Web Extensions
- Issues: GitHub Issues
- Discussions: GitHub Discussions
- Documentation: See links above
Made with β€οΈ by the SIROS Foundation