WebAPI/PresentationAPI:Protocol Draft: Difference between revisions

→‎Requirement: add data integrity
m (→‎Start Presentation: update step sequence number)
(→‎Requirement: add data integrity)
 
(5 intermediate revisions by the same user not shown)
Line 9: Line 9:
** Service information: app/page URL
** Service information: app/page URL
** Session information: session Id, bootstrap info for communication
** Session information: session Id, bootstrap info for communication
** Controlling message: launch, reconnect, terminate
** Controlling message: connect, disconnect, launch, close, reconnect, terminate
** User settings: preferred locale
** User settings: preferred locale
* Communication
* Communication
** establish dedicate transportation channel
** establish dedicate transportation channel
* Security
* Security
** device challenge: OOB channel, passkey
** device authentication: passcode verification + j-PAKE procedure
** data encryption: key derived from challenge, key exchange for communication channel
** data encryption: TLS for ctrl channel, DTLS for communication channel
** data integrity: provide HMAC for each ctrl message (except for query)


== Architecture ==
== Architecture ==
Line 76: Line 77:


=== Establish Control Channel ===
=== Establish Control Channel ===
Simply establish a TCP socket to the service port received during service discovery
* server generates a self-signed certificate
* client establishes a TLS socket to the service port received during service discovery.
 
=== Close Control Channel ===
* STEP 1: send disconnect command with reason to remote device
* STEP 2: close TCP socket
[[File:Draft Protocol Close Control Channel.png]]


=== Start Presentation  ===
=== Start Presentation  ===
Line 106: Line 113:
* STEP 3: send terminate command with presentation Id (terminate command should be encrypted and carried in encrypted-ctrl-msg command)
* STEP 3: send terminate command with presentation Id (terminate command should be encrypted and carried in encrypted-ctrl-msg command)
* STEP 4: receiving user agent close the presented content and close data channel
* STEP 4: receiving user agent close the presented content and close data channel
* STEP 5: server send terminate-ack to client
* STEP 5: server send terminate-ack to client (terminate-ack command should be encrypted and carried in encrypted-ctrl-msg command)
* STEP 6: client close control channel and notify onterminate event to controlling page
* STEP 6: client close control channel and notify onterminate event to controlling page
[[File:Draft Protocol Terminate Presentation.png]]
[[File:Draft Protocol Terminate Presentation.png]]
Confirmed users
216

edits