Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

webrtc/: Add libp2p WebRTC browser-to-server spec #412

Merged
merged 135 commits into from Nov 9, 2022
Merged
Show file tree
Hide file tree
Changes from 114 commits
Commits
Show all changes
135 commits
Select commit Hold shift + click to select a range
9677aa2
webrtc/: Add libp2p WebRTC specification
mxinden May 11, 2022
968d127
webrtc/: Document RTCCertificate#getFingerprints
mxinden May 17, 2022
64a3dff
webrtc/: Extend protocol flow
mxinden May 17, 2022
7dfcca1
webrtc/: Mention SDP exchange through relay and DCUtR
mxinden May 17, 2022
28e341b
webrtc/: Stress that A can build B's SDP offer locally
mxinden May 18, 2022
b3bd981
webrtc/: Add B's peer ID to B's multiaddr
mxinden May 18, 2022
dc6fb4e
webrtc/: Add FAQ section
mxinden May 19, 2022
9728e22
webrtc/: Do additional auth handshake to prevent replay attack
mxinden May 24, 2022
13f6aaa
webrtc/: Differentiate in Browser->Server and Browser->Browser
mxinden Jun 1, 2022
7ec96db
webrtc/: Document open question of B learning A's fingerprint
mxinden Jun 1, 2022
5f5fd60
webrtc/: Detail generic RTCPeerConnection creation
mxinden Jun 1, 2022
84d4c41
webrtc/: Describe address scheme
mxinden Jun 1, 2022
9790d1a
webrtc/: Document open question of B learning A's fingerprint
mxinden Jun 1, 2022
4c6320e
webrtc/: Fix outdated multiaddrs
mxinden Jun 1, 2022
449462b
webrtc/: Document open question of key derivation for TLS cert
mxinden Jun 1, 2022
3e9fb70
webrtc/: Determine UDP port for browser-to-browser
mxinden Jun 3, 2022
81249f3
webrtc/: Add open question on udp vs tcp
mxinden Jun 22, 2022
ee09ed4
webrtc/README: Update with reuse of certificates
mxinden Jun 27, 2022
d451652
webrtc/: Answer question no double muxing
mxinden Jun 27, 2022
b485340
webrtc/: Reword connecting to instantiating
mxinden Jun 27, 2022
b654f11
webrtc/: Document generating valid SDP packet
mxinden Jun 27, 2022
9a90f0d
webrtc/: Restructure sections with Open Questions section each
mxinden Jul 1, 2022
baccb1d
webrtc/: Document DCUtR in browser-to-browser use-case
mxinden Jul 1, 2022
83e7aa0
webrtc/: Document client fingerprint in STUN username
mxinden Jul 1, 2022
766bb62
webrtc/: Detail Multiplexing and Security in separate section
mxinden Jul 1, 2022
525bc9e
webrtc/: Document UDP port multiplexing and ICE lite
mxinden Jul 1, 2022
3e9e6df
webrtc/: Document potential attack vectors using STUN
mxinden Jul 1, 2022
a29cb45
webrtc/: Write out additional Noise handshake
mxinden Jul 1, 2022
827def2
webrtc/: Delete outdated comment on browsers
mxinden Jul 1, 2022
e6c23e1
webrtc/: Document Firefox not connecting on localhost
mxinden Jul 6, 2022
5f7ea61
webrtc/: Document random string in STUN username and password
mxinden Jul 12, 2022
f5eb1b7
webrtc/: Document potential amplification defense through large clien…
mxinden Jul 12, 2022
a8a42b5
webrtc/: Document certhash being a multibase encoded multihash
mxinden Jul 12, 2022
c8e725a
webrtc/: Document hash function match on WebRTC and Noise
mxinden Jul 12, 2022
7e601e7
webrtc/: Track open question on whether server should initiate Noise
mxinden Jul 12, 2022
9e8ec87
webrtc/readme/faq: Write out the need for handshake over plain sigs
mxinden Jul 21, 2022
cceed49
webrtc/: Fix typo fingerprint -> signature
mxinden Jul 21, 2022
c5522c4
webrtc/: Document open question on Noise optimization
mxinden Jul 27, 2022
c89a72a
webrtc/: Reword Motivation section
mxinden Aug 2, 2022
bc76a06
webrtc/: Document UDP port per RTCPeerConnection
mxinden Aug 2, 2022
a0ae9b0
webrtc/: Extend on UDP muxing support across implementations
mxinden Aug 2, 2022
774cd52
webrtc/: Document SDP munging
mxinden Aug 2, 2022
ae1020b
webrtc/: Document Noise Prologue mechanism
mxinden Aug 2, 2022
4b8e890
webrtc/: Require signature tag and sorted fingerprints
mxinden Aug 4, 2022
285574d
webrtc/: Add message framing to support half-close and reset of stream
mxinden Aug 18, 2022
7009f94
webrtc/: Specify sha256 and base64url
mxinden Aug 19, 2022
373bafe
webrtc/: Reword protobuf comment from local endpoint to sender
mxinden Aug 22, 2022
93df7e3
webrtc/: Adapt enum variants to QUIC RFC
mxinden Sep 5, 2022
027b539
webrtc/: Link QUIC RFC as reference
mxinden Sep 5, 2022
865f4f2
webrtc/: Redefine RESET semantics
mxinden Sep 5, 2022
a60234c
webrtc/: Rephrase missing mechanism in browser webrtc api
mxinden Sep 5, 2022
48f5fe7
webrtc/: Add note on stream ordering
mxinden Sep 8, 2022
7f40491
Apply suggestions from code review
mxinden Sep 10, 2022
31ac65d
webrtc/: Require RESET after STOP_SENDING
mxinden Sep 10, 2022
85364f4
webrtc/: Rename RESET to RESET_STREAM
mxinden Sep 10, 2022
9ce0d45
webrtc/: Allow overriding ordering on a data channel
mxinden Sep 10, 2022
2570b24
Merge branch 'webrtc' of github.com:mxinden/specs into webrtc-msg-fra…
mxinden Sep 10, 2022
7a8ebc0
webrtc/: Use message framing for Noise handshake already
mxinden Sep 11, 2022
f0acbb5
Update webrtc/README.md
mxinden Sep 13, 2022
6df6cf3
Merge pull request #1 from mxinden/webrtc-msg-framing
mxinden Sep 13, 2022
c19ba8a
webrtc/README.md: Fix typo
mxinden Sep 16, 2022
65a894a
webrtc/: Don't require STREAM_RESET in response to STOP_SENDING
mxinden Sep 22, 2022
6fb2750
Add initial test vector for noise prologue
thomaseizinger Sep 23, 2022
73516b1
Add note about encoding
thomaseizinger Sep 23, 2022
8208f02
webrtc/: Document option for not using trickle ICE
mxinden Sep 25, 2022
6c7f18e
webrtc/: Mention icegatheringstatechange event on the browser
mxinden Sep 25, 2022
666c9f4
webrtc/: Use id 0 and negotiated true for Noise channel
mxinden Sep 25, 2022
ae5b0d8
webrtc/: Document allowing streams before Noise finished
mxinden Sep 25, 2022
7ce6213
webrtc/: Use IP + port + ufrag for multiplexing
mxinden Sep 25, 2022
a2d1547
webrtc/: Remove open question on SDP munging
mxinden Sep 25, 2022
ded63c5
webrtc/: Reword certificate verification section
mxinden Sep 28, 2022
54f8264
webrtc/: Recommend against reusing the TLS certificate
mxinden Sep 28, 2022
67e12da
webrtc/: Document B listening via UDP socket
mxinden Sep 28, 2022
4a52edc
webrtc/: Add uvarint link
mxinden Sep 28, 2022
7380483
webrtc/: Remove mention of saved round trip
mxinden Sep 28, 2022
c063a81
webrtc/: Move fingerprint extraction to statement instead of question
mxinden Sep 28, 2022
65590f9
webrtc/: Remove obsolete question on preceeding SDP packet
mxinden Sep 28, 2022
8dc6465
webrtc/: Remove open question on handshake security
mxinden Sep 28, 2022
daecb5b
README.md: Link to WebRTC specification
mxinden Sep 28, 2022
6267324
Merge branch master into webrtc
mxinden Sep 28, 2022
590c3db
connections/hole-punching: Link to WebRTC specification
mxinden Sep 28, 2022
a207aa5
webrtc/: Document open questions on data channel IDs
mxinden Sep 30, 2022
ed5c641
webrtc/: Document head-of-line blocking
mxinden Oct 5, 2022
42e7a20
webrtc/: Recommend concrete maximum message size
mxinden Oct 5, 2022
3315b5c
webrtc/: Document stream negotiation and ids
mxinden Oct 5, 2022
2dddfdc
webrtc/: Remove open questions on data channel negotiation and ids
mxinden Oct 5, 2022
0deaa30
webrtc/: Make certificate reuse a SHOULD NOT
mxinden Oct 5, 2022
7ac21aa
webrtc/: Fix typo
mxinden Oct 5, 2022
8803682
webrtc/: Draft the browser-to-browser section
mxinden Oct 5, 2022
b5466fd
webrtc/: Have B start Noise handshake
mxinden Oct 12, 2022
4931f87
webrtc/: Fix fingerprint hash algorithm to sha-256
mxinden Oct 12, 2022
d5d164b
webrtc/: Document replacement of webrtc direct and star
mxinden Oct 12, 2022
6775d10
webrtc/: Document setting ondatachannel callback before noise
mxinden Oct 12, 2022
730dca0
webrtc/: Order Protologue fingerprints by role not by sorting
mxinden Oct 12, 2022
faf641d
webrtc/: Use RTCDataChannel `negotiated: false`
mxinden Oct 12, 2022
e2df94c
webrtc/: Link to RFC and not Chromium codebase for stream reuse
mxinden Oct 12, 2022
b268693
webrtc/: Rephrase stream reuse and mention concurrent limit
mxinden Oct 13, 2022
3aebc68
webrtc/: Drop hope for not having to use STUN
mxinden Oct 13, 2022
50b4e12
webrtc/: Rephrase requirements as FAQs
mxinden Oct 13, 2022
c8df617
webrtc/: Document setting username and password on local and remote SDP
mxinden Oct 13, 2022
4de8f96
webrtc/: Document amplification and DOS attack defense
mxinden Oct 13, 2022
4dcf801
webrtc/: Document reason for B starting noise handshake
mxinden Oct 13, 2022
16e38fb
webrtc/: Remove derivation of TLS certificate
mxinden Oct 13, 2022
f635466
webrtc: Document MUST for UDP and MAY for TCP
mxinden Oct 13, 2022
5c9b600
Merge branch 'master' of https://github.com/libp2p/specs into webrtc
mxinden Oct 13, 2022
961ada2
Merge remote-tracking branch 'mxinden/webrtc' into prologue-test-vectors
thomaseizinger Oct 14, 2022
75c3b5c
Update test vector to remove sorting requirement
thomaseizinger Oct 14, 2022
9abf638
webrtc/: Document RTCDataChannel label to be an empty string
mxinden Oct 14, 2022
1cb4093
webrtc/: Track RTCDatachannel label in TOC
mxinden Oct 14, 2022
a46919c
webrtc/: Remove browser-to-browser use-case
mxinden Oct 14, 2022
3058fb9
webrtc/: Update "Previous, ongoing and related work" section
mxinden Oct 14, 2022
a382f18
webrtc/: Add revision
mxinden Oct 14, 2022
44fd082
webrtc/: Fix interest group links
mxinden Oct 14, 2022
22fc557
Merge pull request #2 from thomaseizinger/prologue-test-vectors
mxinden Oct 14, 2022
1ddc317
webrtc/: Document role on test vectors
mxinden Oct 20, 2022
1e3ca59
webrtc/: Fix typo generating an offer for B
mxinden Oct 20, 2022
b1f629a
webrtc/: Fix more offer answer confusions
mxinden Oct 20, 2022
070ebea
webrtc/: Reword server generating SDP offer
mxinden Oct 20, 2022
072c317
Update webrtc/README.md
mxinden Oct 20, 2022
b8dc6fd
webrtc/: Mark server's peer ID as optional
mxinden Oct 20, 2022
a62fdd2
Update webrtc/README.md
mxinden Oct 20, 2022
118a4dc
Merge remote-tracking branch 'libp2p/master' into webrtc
mxinden Oct 22, 2022
60ac97a
webrtc/: Mention WebTransport specification
mxinden Oct 22, 2022
6846d34
webrtc/: s/listen/bind for UDP socket
mxinden Oct 22, 2022
c369f2b
Update webrtc/README.md
mxinden Oct 22, 2022
0c4e836
Update webrtc/README.md
mxinden Oct 22, 2022
dd9756b
webrtc/: Fix maximum packet size calculation
mxinden Oct 22, 2022
249ebd2
webrtc/: Mention head-of-line-blocking on packet size recommendation
mxinden Oct 22, 2022
be5cfeb
webrtc/: Emphasize prologue prefix representation in bytes
mxinden Oct 22, 2022
602f492
webrtc/: Require A to use same hash alg as B and REQUIRE sha-256 support
mxinden Oct 22, 2022
1c7956c
webrtc/: Prefix random ufrag string for future upgrades
mxinden Oct 22, 2022
b5ac74b
webrtc/README.md: Refer to plural RTCDataChannel
mxinden Oct 26, 2022
b6e7eb1
webrtc/README.md: Use valid ufrag prefix
mxinden Nov 2, 2022
2d0478c
webrtc/: Add max-message-size SDP attribute
mxinden Nov 2, 2022
4dc788c
webrtc/: Fix typo
mxinden Nov 2, 2022
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Jump to
Jump to file
Failed to load files.
Diff view
Diff view
2 changes: 2 additions & 0 deletions README.md
Expand Up @@ -89,6 +89,7 @@ The protocols described below all use [protocol buffers](https://developers.goog
peer discovery
- [secio][spec_secio] - SECIO, a transport security protocol for libp2p
- [tls][spec_tls] - The libp2p TLS Handshake (TLS 1.3+)
- [webrtc][spec_webrtc] - The libp2p WebRTC transport
- [WebTransport][spec_webtransport] - Using WebTransport in libp2p


Expand Down Expand Up @@ -128,4 +129,5 @@ you feel an issue isn't the appropriate place for your topic, please join our
[spec_mdns]: ./discovery/mdns.md
[spec_autonat]: ./autonat/README.md
[spec_dcutr]: ./relay/DCUtR.md
[spec_webrtc]: ./webrtc/README.md
[spec_webtransport]: ./webtransport/README.md
2 changes: 1 addition & 1 deletion connections/hole-punching.md
Expand Up @@ -166,5 +166,5 @@ connections across the various permutations of the two dimensions.
[ipfs-kademlia]: https://docs.ipfs.io/concepts/dht/
[Kademlia]: https://github.com/libp2p/specs/blob/master/kad-dht/README.md
[Gossipsub]: ../pubsub/gossipsub/README.md
[WebRTC]: https://github.com/libp2p/specs/issues/220
[WebRTC]: ../webrtc/README.md
[WebTransport]: https://github.com/libp2p/specs/pull/404