- Improve connection messaging
- The current connection status isn't detailed enough
- Signaling connection using socket.io
- WebRTC connection
- The current connection status isn't detailed enough
- Set-up TURN server to allow app to work through firewalls and NAT
- Improve overall security of app by looking at webrtc encryption
- Additional logging for webrtc connection sequence
- User enters secret
- Generate unique room id for signaling via socket.io
- Generate unique secret for TOTP generation
- Get offer for webrtc connection
- Generate url to share with receiver
- Connect to socket.io server
- Emit message to join room in socket.io
- Wait for receiver to ask for offer
- Send offer to receiver using socket.io
- Wait for reveiver to send answer via socket.io
- Complete webrtc connection using received answer
- Wait for totp from webrtc connection
- Send whatever is in the secret field if the received totp matched current totp
- Read room id from url hash
- Connect to socket.io server
- Emit message to join room in socket.io
- Emit message in socket.io to ask for webrtc offer from sender
- Wait for webrtc offer from sender
- Use offer to generate webrtc answer
- Send webrtc answer via socket.io
- Sender should complete webrtc using the webrtc answer
- Wait for user to enter totp
- Send totp using webtc connection
- Wait for reply from webrtc connection
Resources:
- https://github.com/adnsio/node-otp
- https://github.com/yeojz/otplib/blob/master/site/public/app.js
- https://socket.io/blog/socket-io-p2p/
- https://github.com/feross/simple-peer
- https://github.com/socketio/socket.io-p2p
- https://www.html5rocks.com/en/tutorials/webrtc/infrastructure/
- https://hpbn.co/webrtc/
- https://downloads.newyorker.com/mp3/fiction/110819_fiction_rushdie.mp3
- https://github.com/joelchoo/web-crypto/blob/master/design.md
- https://github.com/wardhanster/simplertc_heroku
- https://www.apple.com/business/site/docs/iOS_Security_Guide.pdf
- https://developer.apple.com/documentation/security/certificate_key_and_trust_services/keys/storing_keys_in_the_secure_enclave