You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
{{ message }}
This repository was archived by the owner on Dec 29, 2022. It is now read-only.
Copy file name to clipboardExpand all lines: configuration-service/README.md
+4-4Lines changed: 4 additions & 4 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -44,7 +44,7 @@ If variable advertising intervals are supported (see `IS_VARIABLE_ADV_SUPPORTED`
44
44
</tr>
45
45
<tr>
46
46
<td>Notes</td>
47
-
<td>Where not explicitly stated, data written and read is defined in terms of big-endian arrays of signed bytes.</td>
47
+
<td>Where not explicitly stated, data written and read is defined in terms of big-endian arrays of bytes. However, there are exceptions for EID related keys: the Public ECDH Key in Characteristic 8, the Identity Key in Characteristic 9, and the service's public ECDH key when writing an EID slot in Characteristic 10, all three of which are little-endian. This exception exists because the reference design for eliptic curve-25519, which has been widely adopted, was implemented using little-endian arithmetic and is the basis for the EID design. Note: the elliptic curve-25519 reference design is little-endian, even though big-endian is used almost universally for all other cryto protocols</td>
48
48
</tr>
49
49
</table>
50
50
@@ -407,7 +407,7 @@ Length: 32 bytes
407
407
<tr>
408
408
<td>Description</td>
409
409
<td>
410
-
Reads the beacon's 256-bit public ECDH key.
410
+
Reads the beacon's 256-bit public ECDH key (little-endian).
411
411
</td>
412
412
</tr>
413
413
<tr>
@@ -445,7 +445,7 @@ Length: 16 bytes
445
445
<tr>
446
446
<td>Description</td>
447
447
<td>
448
-
Reads the identity key for the active slot. If the slot isn't configured as EID, returns an error.
448
+
Reads the identity key (little-endian) for the active slot. If the slot isn't configured as EID, returns an error.
449
449
<br><br>
450
450
To prevent this data being broadcast in the clear, it shall be AES-128 encrypted with the lock code for the beacon.
451
451
</td>
@@ -505,7 +505,7 @@ In the case of UID and URL frames, the data to be broadcast is supplied in the a
505
505
<br><br>
506
506
In the case of a TLM frame, the data is just the frame type byte, <code>0x20</code>. If another slot on the beacon has been configured as an EID frame type, the beacon shall broadcast the ETLM variety of telemetry. Otherwise, the plain TLM frame shall be broadcast. If the beacon is currently broadcasting a plain TLM frame and an EID frame is configured, the beacon shall switch to broadcasting the ETLM variety. If the beacon is configured to broadcast multiple EID frames, then the beacon should cycle through the set identity keys and use them in turn to broadcast an equal number of ETLM frames.
507
507
<br><br>
508
-
In the case of an EID frame, the length is either 34 or 18. If 34, it's the frame type, the 32-byte service's public ECDH key and the exponent byte. This is the prefered method of provisioning an EID beacon. If 18, it's the frame type, the result of encrypting the 16-byte identity key with the beacon's lock code, and the exponent. This is less secure and any provisioner who implements this should make it clear to the user.
508
+
In the case of an EID frame, the length is either 34 or 18. If 34, it's the frame type, the 32-byte service's public ECDH key (little-endian) and the exponent byte. This is the prefered method of provisioning an EID beacon. If 18, it's the frame type, the result of encrypting the 16-byte identity key (little-endian) with the beacon's lock code (big-endian), and the exponent. This is less secure and any provisioner who implements this should make it clear to the user.
509
509
<br><br>
510
510
Writing an empty array, or a single <code>0x00</code> byte clears the slot and stops Tx. If configured as an EID beacon this will also destroy the peripheral's state for this frame data.
0 commit comments