|
|
| Line 239: |
Line 239: |
| } | | } |
| } | | } |
|
| |
| === Pairing (Full version, without secure connection) ===
| |
| Meta Bug: {{Bug|1207996}}
| |
|
| |
| ==== Flowchart ====
| |
|
| |
| First Time Connection (deprecated in secure connection)
| |
|
| |
| [[File: RemoteControl FirstConnect.png]]
| |
|
| |
| Enter PIN Code (deprecated in secure connection)
| |
|
| |
| [[File:RemoteControl EnterPIN.png]]
| |
|
| |
| Resume Connection (deprecated in secure connection)
| |
|
| |
| [[File:RemoteControl ResumeConnection.png]]
| |
|
| |
| Dismiss Pairing
| |
|
| |
| [[File:RemoteControl DismissPairing.png]]
| |
|
| |
| ==== Protocol ====
| |
|
| |
| from client to server via AJAX (deprecated in secure connection)
| |
|
| |
| {
| |
| pincode: <pincode>
| |
| }
| |
|
| |
| response when success (deprecated in secure connection)
| |
|
| |
| {
| |
| verified: true,
| |
| uuid: <uuid>
| |
| }
| |
|
| |
| reponse when error
| |
|
| |
| {
| |
| verified: false,
| |
| reason: 'expired' / 'invalid'
| |
| }
| |
|
| |
| internal events at server side
| |
|
| |
| {
| |
| type: 'mozChromeRemoteControlEvent',
| |
| detail: {
| |
| action: 'pin-created',
| |
| pincode: <pincode>
| |
| }
| |
| }
| |
|
| |
| {
| |
| type: 'mozChromeRemoteControlEvent',
| |
| detail: {
| |
| action: 'pin-destroyed'
| |
| }
| |
| }
| |
|
| |
| {
| |
| type: 'mozContentEvent',
| |
| detail: {
| |
| type: 'remote-control-pin-dismissed',
| |
| detail: {
| |
| reason: 'timeout' / 'manually'
| |
| }
| |
| }
| |
| }
| |
|
| |
| === Secure Connection (deprecated) ===
| |
| To protect private data between user and TV, we provide a secure connection which refers to SSL and [http://www.jcryption.org/ jCryption]. Here is the concept:
| |
|
| |
| # Client requests RSA public key from TV.
| |
| # Client sends symmetric key and PIN code (if any) to TV, encrypted with public key.
| |
| # TV decrypts symmetric key with private key
| |
| # TV generates an UUID, encrypts with symmetric key then sends 2 UUIDs to client, one is encrypted the other is not.
| |
| # Client decrypts UUID with symmetric key, confirm UUID
| |
| # Begin remote control with symmetric key.
| |
|
| |
| Goal of Remote Control is to create an easy to use way for every device, we hide public key exchange at the background. User doesn't need to input a long URL with public key nor scan QRCode. Everything is done automatically without interrupting user experience.
| |
|
| |
| [[File: Remote_Security.png]]
| |
|
| |
|
| == Bug Status == | | == Bug Status == |