---
# System prepended metadata

title: Node to Coordinator Communication

---

# Node to Coordinator Communication

```sequence
Participant Node
Participant Coordinator
Note right of Coordinator: Generates Secret Key (CA:SK)\nand Public Key (CA:PK)
Note right of Coordinator: Signs CA:PK with CA:SK\n(CA:S)
Note right of Coordinator: Publishes CA:S & CA:PK\nin pointer record
Note left of Node: Generates Secret Key (N1:SK)\nand Public Key(N1:PK)
Node->Coordinator: Initial Connection\nSends N1:PK
Note right of Coordinator: Signs N1:PK with CA:SK (N1:S)
Coordinator->Node: Sends CA:N1:S
Note left of Node: Verifies N1:S using known\nCA:PK from pointer\n(Good Coordinator)
Note left of Node: Signs N1:PK with N1:SK (N1:S)
Node->Coordinator: Sends N1:S
Note right of Coordinator: Hashes(N1:S) and signs with CA:SK\nNode1 Cert (N1:C)
Coordinator->Node: Sends N1:C
Node->Coordinator: Request CRL
Coordinator->Node: Sends CRL
Note right of Node: Normal operation continues
```

# Node to Node w/ Coordinator PKI

Presume the above was completed and Node2 enters the game

```sequence
Participant Node1
Participant Node2
Participant Coordinator
Note right of Coordinator: Generates Secret Key (CA:SK)\nand Public Key (CA:PK)
Note right of Coordinator: Signs CA:PK with CA:SK\n(CA:S)
Note right of Coordinator: Publishes CA:S & CA:PK\nin pointer record
Note left of Node2: Generates Secret Key (N2:SK)\nand Public Key(N2:PK)
Node2->Coordinator: Initial Connection\nSends N2:PK
Note right of Coordinator: Signs N2:PK with CA:SK (N2:S)
Coordinator->Node2: Sends CA:N2:S
Note left of Node2: Verifies N2:S using known\nCA:PK from pointer\n(Good Coordinator)
Note left of Node2: Signs N2:PK with N2:SK (N1:S)
Node2->Coordinator: Sends N2:S
Note right of Coordinator: Verifies N2:S\nHashes(N1:S) and signs with CA:SK\nNode2 Cert (N2:C)
Coordinator->Node2: Sends N2:C
Node2->Coordinator: Request CRL
Coordinator->Node2: Sends CRL
Node2->Node1: Initial connection\nSends N2:S & N2:C & N2:PK
Note left of Node1: Checks CRL for N2:C value\nIf on CRL, reject
Note left of Node1: Verifies N2:S\nHashes(N2:S) and verifies\nN2:C using CA:PK\nIf failed, reject
Node1->Node2: Sends N1:S & N1:C
Note left of Node2: Checks CRL for N1:C value\nIf on CRL, reject
Note left of Node2: Verifies N1:S\nHashes(N1:S) and verifies\nN1:C using CA:PK\nIf failed, reject
Note right of Node1: Normal operation continues
```