Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
6 changes: 6 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,7 @@ chrome/options.html
chrome/options.js
chrome/icons/icon*.png
chrome/icons/logo-*.svg
chrome/protocols

firefox/background.js
firefox/content.js
Expand All @@ -32,6 +33,7 @@ firefox/options.html
firefox/options.js
firefox/icons/icon*.png
firefox/icons/logo-*.svg
firefox/protocols

safari/background.js
safari/content.js
Expand All @@ -44,6 +46,7 @@ safari/options.html
safari/options.js
safari/icons/icon*.png
safari/icons/logo-*.svg
safari/protocols

# Source generated icons (regenerated from SVG)
src/icons/icon*.png
Expand Down Expand Up @@ -82,3 +85,6 @@ node_modules/.cache/
.env
.env.local
.env.*.local

# Xcode
xcuserdata/
2 changes: 1 addition & 1 deletion API_REFERENCE.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# API Reference

Complete API reference for the Digital Credentials Wallet Selector extension.
Complete API reference for the Web Wallet Selector extension.

## Table of Contents

Expand Down
6 changes: 3 additions & 3 deletions DEVELOPMENT.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Development Guide

Complete guide for building, testing, and developing the Digital Credentials Wallet Selector extension.
Complete guide for building, testing, and developing the Web Wallet Selector extension.

## Table of Contents

Expand Down Expand Up @@ -256,14 +256,14 @@ npm run test:integration
2. Convert to Safari Web Extension (first time only):

```bash
xcrun safari-web-extension-converter safari/ --app-name "DC API Interceptor"
xcrun safari-web-extension-converter safari/ --app-name "Web Wallet Selector"
```

3. Open the generated Xcode project and run it

4. Enable in Safari:
- Safari → Preferences → Extensions
- Enable "DC API Interceptor"
- Enable "Web Wallet Selector"

5. View logs:
- Develop menu → Show Extension Background Page
Expand Down
6 changes: 3 additions & 3 deletions Makefile
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Makefile for DC API Interceptor Browser Extensions
# Makefile for Web Wallet Selector Browser Extensions

.PHONY: help install clean build build-chrome build-firefox build-safari \
watch watch-chrome watch-firefox watch-safari \
Expand All @@ -24,7 +24,7 @@ DIST_DIR := dist
SCRIPTS_DIR := scripts

help: ## Show this help message
@echo "$(BLUE)DC API Interceptor - Browser Extension Build System$(NC)"
@echo "$(BLUE)Web Wallet Selector - Browser Extension Build System$(NC)"
@echo ""
@echo "$(GREEN)Available targets:$(NC)"
@grep -E '^[a-zA-Z_-]+:.*?## .*$$' $(MAKEFILE_LIST) | awk 'BEGIN {FS = ":.*?## "}; {printf " $(YELLOW)%-20s$(NC) %s\n", $$1, $$2}'
Expand Down Expand Up @@ -123,7 +123,7 @@ dev-safari: build-safari ## Instructions for Safari development
@echo "$(YELLOW)Safari Extension Development:$(NC)"
@echo ""
@echo "1. Convert to Safari Web Extension:"
@echo " xcrun safari-web-extension-converter $(SAFARI_DIR)/ --app-name 'DC API Interceptor'"
@echo " xcrun safari-web-extension-converter $(SAFARI_DIR)/ --app-name 'Web Wallet Selector'"
@echo ""
@echo "2. Open the generated Xcode project and run it"
@echo ""
Expand Down
2 changes: 1 addition & 1 deletion QUICKSTART.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Quick Start Guide

Get started with the Digital Credentials Wallet Selector extension in minutes.
Get started with the Web Wallet Selector extension in minutes.

## For Verifiers (Websites Requesting Credentials)

Expand Down
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
# Digital Credentials Wallet Selector
# Web Wallet Selector

A cross-browser extension that intercepts W3C Digital Credentials API calls and enables users to choose between multiple digital identity wallet providers.

Expand Down
29 changes: 29 additions & 0 deletions Web Wallet Selector/Config.xcconfig
Original file line number Diff line number Diff line change
@@ -0,0 +1,29 @@
//
// Config.xcconfig
// Web Wallet Selector
//
// Created by Benjamin Erhart on 05.12.25.
//

// Configuration settings file format documentation can be found at:
// https://developer.apple.com/documentation/xcode/adding-a-build-configuration-file-to-your-project

APP_BUNDLE_ID[config=Debug] = org.siros.webwalletselector
EXT_BUNDLE_ID[config=Debug] = org.siros.webwalletselector.ext
DEVELOPMENT_TEAM[config=Debug] = X3YM693CZ3
IOS_APP_PROVISIONING_PROFILE_SPECIFIER[config=Debug] =
IOS_EXT_PROVISIONING_PROFILE_SPECIFIER[config=Debug] =

APP_BUNDLE_ID[config=Release] = org.siros.webwalletselector
EXT_BUNDLE_ID[config=Release] = org.siros.webwalletselector.ext
DEVELOPMENT_TEAM[config=Release] = X3YM693CZ3
IOS_APP_PROVISIONING_PROFILE_SPECIFIER[config=Release] = Web Wallet Selector iOS Dist
IOS_EXT_PROVISIONING_PROFILE_SPECIFIER[config=Release] = Web Wallet Selector Ext iOS Dist
MAC_APP_PROVISIONING_PROFILE_SPECIFIER[config=Release] = Web Wallet Selector macOS Dist
MAC_EXT_PROVISIONING_PROFILE_SPECIFIER[config=Release] = Web Wallet Selector Ext macOS Dist


MARKETING_VERSION = 0.1.0
CURRENT_PROJECT_VERSION = 2

GCC_PREPROCESSOR_DEFINITIONS = $(inherited) EXT_BUNDLE_ID="$(EXT_BUNDLE_ID)"
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
{
"colors" : [
{
"idiom" : "universal"
}
],
"info" : {
"author" : "xcode",
"version" : 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
{
"images" : [
{
"size" : "1024x1024",
"idiom" : "universal",
"filename" : "universal-icon-1024@1x.png",
"platform" : "ios"
},
{
"size" : "1024x1024",
"appearances" : [
{
"appearance" : "luminosity",
"value" : "dark"
}
],
"idiom" : "universal",
"filename" : "universal-icon-1024@1x.png",
"platform" : "ios"
},
{
"size" : "1024x1024",
"appearances" : [
{
"appearance" : "luminosity",
"value" : "tinted"
}
],
"idiom" : "universal",
"filename" : "universal-icon-1024@1x.png",
"platform" : "ios"
},
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "mac-icon-16@1x.png",
"scale" : "1x"
},
{
"size" : "16x16",
"idiom" : "mac",
"filename" : "mac-icon-16@2x.png",
"scale" : "2x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "mac-icon-32@1x.png",
"scale" : "1x"
},
{
"size" : "32x32",
"idiom" : "mac",
"filename" : "mac-icon-32@2x.png",
"scale" : "2x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "mac-icon-128@1x.png",
"scale" : "1x"
},
{
"size" : "128x128",
"idiom" : "mac",
"filename" : "mac-icon-128@2x.png",
"scale" : "2x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "mac-icon-256@1x.png",
"scale" : "1x"
},
{
"size" : "256x256",
"idiom" : "mac",
"filename" : "mac-icon-256@2x.png",
"scale" : "2x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "mac-icon-512@1x.png",
"scale" : "1x"
},
{
"size" : "512x512",
"idiom" : "mac",
"filename" : "mac-icon-512@2x.png",
"scale" : "2x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
{
"info" : {
"author" : "xcode",
"version" : 1
}
}
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
{
"images" : [
{
"idiom" : "universal",
"scale" : "1x",
"filename" : "icon128.png"
},
{
"idiom" : "universal",
"scale" : "2x"
},
{
"idiom" : "universal",
"scale" : "3x"
}
],
"info" : {
"version" : 1,
"author" : "xcode"
}
}
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
19 changes: 19 additions & 0 deletions Web Wallet Selector/Shared (App)/Config.h
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
//
// Config.h
// Orbot
//
// Created by Benjamin Erhart on 20.05.20.
// Copyright © 2020 - 2026 Guardian Project. All rights reserved.
//

#import <Foundation/Foundation.h>

NS_ASSUME_NONNULL_BEGIN

@interface Config : NSObject

@property (class, nonatomic, assign, readonly, nonnull) NSString *extBundleId NS_REFINED_FOR_SWIFT;

@end

NS_ASSUME_NONNULL_END
21 changes: 21 additions & 0 deletions Web Wallet Selector/Shared (App)/Config.m
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
//
// Config.m
// Orbot
//
// Created by Benjamin Erhart on 20.05.20.
// Copyright © 2020 - 2026 Guardian Project. All rights reserved.
//

#import "Config.h"
#import <TargetConditionals.h>

#define MACRO_STRING_(m) #m
#define MACRO_STRING(m) @MACRO_STRING_(m)

@implementation Config

+ (NSString *) extBundleId {
return MACRO_STRING(EXT_BUNDLE_ID);
}

@end
16 changes: 16 additions & 0 deletions Web Wallet Selector/Shared (App)/Config.swift
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
//
// Config.swift
// Orbot
//
// Created by Benjamin Erhart on 20.05.20.
// Copyright © 2020 - 2026 Guardian Project. All rights reserved.
//

import Foundation

extension Config {

class var extBundleId: String {
__extBundleId as String
}
}
20 changes: 20 additions & 0 deletions Web Wallet Selector/Shared (App)/Resources/Base.lproj/Main.html
Original file line number Diff line number Diff line change
@@ -0,0 +1,20 @@
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta http-equiv="Content-Security-Policy" content="default-src 'self'">

<meta name="viewport" content="width=device-width, initial-scale=1, user-scalable=no">

<link rel="stylesheet" href="../Style.css">
<script src="../Script.js" defer></script>
</head>
<body>
<img src="../Icon.png" width="128" height="128" alt="Web Wallet Selector Icon">
<p class="platform-ios">You can turn on Web Wallet Selector’s Safari extension in Settings.</p>
<p class="platform-mac state-unknown">You can turn on Web Wallet Selector’s extension in Safari Extensions preferences.</p>
<p class="platform-mac state-on">Web Wallet Selector’s extension is currently on. You can turn it off in Safari Extensions preferences.</p>
<p class="platform-mac state-off">Web Wallet Selector’s extension is currently off. You can turn it on in Safari Extensions preferences.</p>
<button class="platform-mac open-preferences">Quit and Open Safari Extensions Preferences…</button>
</body>
</html>
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
24 changes: 24 additions & 0 deletions Web Wallet Selector/Shared (App)/Resources/Script.js
Original file line number Diff line number Diff line change
@@ -0,0 +1,24 @@
function show(platform, enabled, useSettingsInsteadOfPreferences) {
document.body.classList.add(`platform-${platform}`);

if (useSettingsInsteadOfPreferences) {
document.getElementsByClassName('platform-mac state-on')[0].innerText = "Web Wallet Selector’s extension is currently on. You can turn it off in the Extensions section of Safari Settings.";
document.getElementsByClassName('platform-mac state-off')[0].innerText = "Web Wallet Selector’s extension is currently off. You can turn it on in the Extensions section of Safari Settings.";
document.getElementsByClassName('platform-mac state-unknown')[0].innerText = "You can turn on Web Wallet Selector’s extension in the Extensions section of Safari Settings.";
document.getElementsByClassName('platform-mac open-preferences')[0].innerText = "Quit and Open Safari Settings…";
}

if (typeof enabled === "boolean") {
document.body.classList.toggle(`state-on`, enabled);
document.body.classList.toggle(`state-off`, !enabled);
} else {
document.body.classList.remove(`state-on`);
document.body.classList.remove(`state-off`);
}
}

function openPreferences() {
webkit.messageHandlers.controller.postMessage("open-preferences");
}

document.querySelector("button.open-preferences").addEventListener("click", openPreferences);
Loading