Skip to content

Commit 007625a

Browse files
authored
Merge pull request #24 from wwWallet/adrs
ADR documentation and OHTTP ADR
2 parents 3e5260a + 4776b39 commit 007625a

File tree

3 files changed

+57
-0
lines changed

3 files changed

+57
-0
lines changed
Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
---
2+
---
3+
# Architecture Decision Records
4+
Architecturally significant decisions regarding the wwWallet stack are being tracked using Architectural Decision Records (ADRs) on version control. Those significant decisions include those that affect the structure, non-functional characteristics, dependencies, interfaces, or construction techniques.
5+
6+
An ADR is a short document written in Markdown, kept under [/wallet-docs/docs/category/architecture-decision-records-archive](/wallet-docs/docs/category/architecture-decision-records-archive), numbered sequentially and monotonically. If a decision is reversed, relevant ADR is marked as superseded and points to the newest decision.
7+
8+
ADRs in wwWallet are built around these sections:
9+
* Title
10+
* Context
11+
* Decision
12+
* Status
13+
* Consequences
14+
15+
Subsections can be used when needed. It is recommended that ADRs do not exceed one page.
16+
The semantics of each of the main sections are based on [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions) by Michael Nygard.
17+
18+
## Further Reading
19+
* [Documenting Architecture Decisions](https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions)
20+
* [Markdown template for ADRs](https://github.com/joelparkerhenderson/architecture-decision-record/blob/main/locales/en/templates/decision-record-template-by-michael-nygard/index.md)
21+
* [ADR Github Org](https://adr.github.io/)
Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,29 @@
1+
# 1. Oblivious HTTP as a Proxy Protocol
2+
3+
Date: 2025-10-23
4+
5+
## Status
6+
7+
Accepted
8+
9+
## Context
10+
11+
The Web platform imposes several challenges to the implementation of the wallet. One of these is the network request restrictions, the one encountered more often being CORS policies. The wallet depends on a proxy (hosted by the wallet provider) to fetch resources behind such restrictions.
12+
13+
While practical, the proxy exposes information about the holder's action to the provider, which has access to the interactions with issuers and verifiers.
14+
15+
## Decision
16+
17+
We will implement Oblivious HTTP ([RFC 9458](https://www.ietf.org/rfc/rfc9458.html)) as an opt-in setting. Oblivious HTTP allows a client to make multiple requests to an origin server without that server being able to link those requests to the client or to identify the requests as having come from the same client, while placing only limited trust in the nodes used to forward the messages. The protocol utilizes a relay (wallet provider's backend) and a gateway (commercial or self-hosted, seperate business entity from the provider).
18+
19+
## Consequences
20+
21+
### Positive
22+
- Wallet provider cannot parse the target url or the body of the request, enhancing user privacy.
23+
- Target resource servers get no information about the user's client since all requests originate for the relay (provider), enchancing user privacy.
24+
25+
### Negative
26+
- A new step is added on each request, hurting perfomance.
27+
- The gateway, a new part of the stack managed by a third-party, has access to the request's target and body, as well as the response from issuers and verifiers. This can be mitigated by implementing more privacy-centric profiles of OID specifications.
28+
- Users can still be tracked in some cases. RFC 9458 has a section on [Privacy Considerations](https://www.ietf.org/rfc/rfc9458.html#name-privacy-considerations)
29+
Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,7 @@
1+
{
2+
"label": "Architecture Decision Records archive",
3+
"link": {
4+
"type": "generated-index",
5+
"description": "Archive of all the ADRs of the project"
6+
}
7+
}

0 commit comments

Comments
 (0)