Skip to content

Commit 824437e

Browse files
committed
Use cref for TODO; update values
1 parent f3a1a85 commit 824437e

File tree

2 files changed

+27
-21
lines changed

2 files changed

+27
-21
lines changed

README.md

+11
Original file line numberDiff line numberDiff line change
@@ -75,3 +75,14 @@ The repository contains:
7575
- **a specification draft describing our current idea of WebDAV-Push** (see above)
7676
- discussion and exchange about the WebDAV Push topic (in [Discussions](https://github.com/bitfireAT/webdav-push/discussions))
7777
- specific tasks (in [Issues](https://github.com/bitfireAT/webdav-push/issues)) and related patches (in [Pull requests](https://github.com/bitfireAT/webdav-push/pulls))
78+
79+
80+
## Additional content / FAQ
81+
82+
There are some additional explanations that are non-normative and thus not found in the specification draft.
83+
84+
"Big" architecture diagram:
85+
86+
![Big architecture diagram](images/architecture.svg)
87+
88+
UnifiedPush (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources.

content.md

+16-21
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,9 @@ Typical use cases:
2424

2525
## Architectural overview
2626

27-
<!-- <artwork type="svg" src="images/architecture.svg"/> -->
27+
[^todo] Figure
2828

29-
> **TODO:** figure
29+
[^todo]: TODO
3030

3131

3232
## Terminology
@@ -52,7 +52,7 @@ Push service
5252
(Push) subscription (URL)
5353
: The information that the client needs to provide to the server so that the server can send push notifications.
5454

55-
If the transport is Web Push, the term _(push) subscription (URL)_ as used in this document is equivalent to the Web Push term _push resource_. So for instance, a client could have connected to its Web Push service and receive `https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV` as the subscription URL.
55+
If the transport is Web Push, the term "(push) subscription (URL)" as used in this document is equivalent to the Web Push term _push resource_. So for instance, a client could have connected to its Web Push service and receive `https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV` as the subscription URL.
5656

5757
(Push) topic
5858
: Character sequence that identifies a WebDAV collection for push purposes (unique per WebDAV server). A specific collection could be reachable at different URLs, but it can only have one push topic.
@@ -209,7 +209,7 @@ Example: `<P:topic>O7M1nQ7cKkKTKsoS_j6Z3w</P:topic>`
209209

210210
# Subscription management
211211

212-
> **TODO:** ACL for registering subscriptions?
212+
[^todo] ACL for registering subscriptions?
213213

214214

215215
## Subscription registration
@@ -223,7 +223,7 @@ How to subscribe to collections on the WebDAV server. Required information:
223223
- Expiration? how long by default, min/max (24 h), server decides (and can impose limits)
224224
- (End-to-end-encryption? Or should it be defined per transport?)
225225

226-
> **TODO:** By now, only updates in direct members (equals `Depth: 1`) are sent. Maybe it could be specified that servers can send one notification per path segment? Implications?
226+
[^todo] By now, only updates in direct members (equals `Depth: 1`) are sent. Maybe it could be specified that servers can send one notification per path segment? Implications?
227227

228228
To subscribe to a collection, the client sends a POST request with
229229
`Content-Type: application/xml` to the collection it wants to subscribe. The root XML element of the XML body is `push-register` in the WebDAV-Push name space (`DAV:Push`) and can be used to distinguish between a WebDAV-Push and other requests.
@@ -236,7 +236,7 @@ Allowed response codes:
236236
* 204 if the subscription was registered
237237
* other response code with usual HTTP/WebDAV semantics (if possible, with `DAV:error` XML body)
238238

239-
> **TODO**: Always return expiration
239+
[^todo] Always return expiration
240240

241241
In any case, when a subscription is registered the first time, the server creates a URL that identifies that registration (_registration URL_). That URL is sent in the `Location` header and can be used to remove the subscription.
242242

@@ -389,7 +389,7 @@ A server MAY use some logic like remembering the last successful delivery plus s
389389

390390
## Element definitions
391391

392-
TODO `push-message`
392+
[^todo] `push-message`
393393

394394

395395

@@ -442,9 +442,6 @@ Usage of message encryption {{RFC8291}} and VAPID {{RFC8292}} is RECOMMENDED. If
442442

443443
A WebDAV-Push server SHOULD use the collection topic as `Topic` header in push messages to replace previous notifications for the same collection.
444444

445-
> [Non-normative, should probably be removed] **NOTE**: {{UnifiedPush}} (UP) is a specification which is intentionally designed as a 100% compatible subset of Web Push, together with a software that can be used to implement these documents. From a WebDAV-Push server perspective, UP endpoints can be seen as Web Push resources.
446-
447-
<!-- <artwork type="svg" src="images/unifiedpush-flowchart.svg"/> -->
448445

449446

450447
## Subscription
@@ -475,8 +472,6 @@ Example:
475472
</web-push-subscription>
476473
~~~
477474

478-
> **TODO:** message encryption as defined in RFC 8291
479-
480475

481476
## Push message
482477

@@ -513,7 +508,7 @@ VAPID {{RFC8292}} SHOULD be used to restrict push subscriptions to the specific
513508

514509
A WebDAV server which supports VAPID stores a key pair. The server exposes an additional transport property:
515510

516-
* `server-public-key` – VAPID public key in uncompressed point form
511+
* `server-public-key` – VAPID public key in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
517512

518513
Example service detection of a WebDAV server that supports VAPID:
519514

@@ -526,7 +521,7 @@ Example service detection of a WebDAV server that supports VAPID:
526521
<P:push-transports>
527522
<P:transport>
528523
<P:web-push>
529-
<server-public-key>MFkwEwYHKoZIzj0CAQYIKoZIzj0DAQcDQgAE7bDggHmOZi5RexC6TrTzRT_prrFVUYn-tnXXAYXhgYKsqCtoYvRe5uZKa9zjsy7yvzR1L857E9_Iza0zsnj0Wg</server-public-key>
524+
<server-public-key type="p256dh">BA1Hxzyi1RUM1b5wjxsn7nGxAszw2u61m164i3MrAIxHF6YK5h4SDYic-dRuU_RCPCfA5aq9ojSwk5Y2EmClBPs</server-public-key>
530525
</P:web-push>
531526
</P:transport>
532527
</P:push-transports>
@@ -536,7 +531,7 @@ Example service detection of a WebDAV server that supports VAPID:
536531
</multistatus>
537532
~~~
538533

539-
The client uses this key to create a restricted subscription at the push service.
534+
If available, the client SHOULD use this key to create a restricted subscription at the push service.
540535

541536
When the server sends a push message, it includes a corresponding `Authorization` header to prove its identity.
542537

@@ -545,20 +540,20 @@ When the server sends a push message, it includes a corresponding `Authorization
545540

546541
Message encryption SHOULD be used to hide details of push messages from the push services.
547542

548-
When creating the subscription, the client generates a key pair as defined in {{RFC8291}}.
543+
Before creating the subscription, the client generates a key pair as defined in {{RFC8291}}.
549544

550545
When the client then registers this subscription at the server, it includes additional subscription properties:
551546

552-
* `client-public-key` – public key of the user agent's key pair in uncompressed point form
553-
* `auth` – authentication secret
547+
* `client-public-key` – public key of the user agent's key pair in uncompressed form and base64url encoded; attribute `type="p256dh"` MUST be added to allow different key types in the future
548+
* `auth-secret` – authentication secret
554549

555-
Example for a subscription as it could be registered at the server:
550+
Example for a subscription registration requesting message encryption:
556551

557552
~~~
558553
<web-push-subscription xmlns="DAV:Push">
559554
<push-resource>https://push.example.net/push/JzLQ3raZJfFBR0aqvOMsLrt54w4rJUsV</push-resource>
560-
<client-public-key>BC4n4Qa_5Tze9nwQOKjhmZ89kUp162_OJv7qEIVciS-nbWR_wLuCC-v667-Atgn9oDIc2GVJTCuZOtO9dT-O5TI</client-public-key>
561-
<auth>BTBZMqHH6r4Tts7J_aSIgg</auth>
555+
<client-public-key type="p256dh">BCVxsr7N_eNgVRqvHtD0zTZsEc6-VV-JvLexhqUzORcxaOzi6-AYWXvTBHm4bjyPjs7Vd8pZGH6SRpkNtoIAiw4</client-public-key>
556+
<auth-secret>BTBZMqHH6r4Tts7J_aSIgg</auth-secret>
562557
</web-push-subscription>
563558
~~~
564559

0 commit comments

Comments
 (0)