Browse Source

minor spelling fixes, and explain the command protocol..

irr_shared
John-Mark Gurney 3 years ago
parent
commit
9e56615b43
1 changed files with 19 additions and 4 deletions
  1. +19
    -4
      PROTOCOL.md

+ 19
- 4
PROTOCOL.md View File

@@ -1,7 +1,7 @@
Protocol Protocol
======== ========


The responder will be the node under control (irrigation controler), and
The responder will be the node under control (irrigation controller), and
the initiator will be the server. the initiator will be the server.


The responder will always respond with one and only one packet. That The responder will always respond with one and only one packet. That
@@ -25,7 +25,7 @@ initiator:
send_enc(<16 bytes random data> + 'reqreset') # nonce injection send_enc(<16 bytes random data> + 'reqreset') # nonce injection
send_mac(8) send_mac(8)


respondant:
respondent:
send_enc(<16 bytes random data>) # nonce injection send_enc(<16 bytes random data>) # nonce injection
send_mac(8) send_mac(8)


@@ -33,7 +33,7 @@ initiator:
send_enc('confirm') send_enc('confirm')
send_mac(8) send_mac(8)


respondant:
respondent:
send_enc('confirmed') send_enc('confirmed')
send_mac(8) send_mac(8)


@@ -45,7 +45,7 @@ The new key/session does not become active till this point.


In order to handle a reset and prevent a replay attack, the existing In order to handle a reset and prevent a replay attack, the existing
session, if any is maintained till the completion of a reset request. session, if any is maintained till the completion of a reset request.
Only after that, does the old conenction key get removed. This does
Only after that, does the old connection key get removed. This does
mean that after a reset request, it is required that both sides attempt mean that after a reset request, it is required that both sides attempt
to decode each packet w/ both keys. to decode each packet w/ both keys.


@@ -54,4 +54,19 @@ Where type is to be:
ecdh - Results of an ECDH exchange, key = K || K_A || K_B ecdh - Results of an ECDH exchange, key = K || K_A || K_B
ecdhe - Results of an ECDHE exchange, key = TBD ecdhe - Results of an ECDHE exchange, key = TBD


Once the session has been established, the initiator will send commands of the
following format:
<cmd byte> <args>

Currently the only defined type for args, is a 4 byte integer in little endian
format. Additional types may be added later.

The following commands are defined:
TERMINATE: 1 -- no args: terminate the session, reply confirms
WAITFOR: 2 -- args: (length): waits for length seconds
RUNFOR: 3 -- args: (chan, length): turns on chan for length seconds

When the responder receives a command, it will process it, and send back
a response w/ the same command byte as an acknowledgment.

Note: look at: https://monocypher.org/manual/advanced/elligator when doing ECDHE Note: look at: https://monocypher.org/manual/advanced/elligator when doing ECDHE

Loading…
Cancel
Save