Key Establishment Client/Server#
API and Callbacks for the Key Establishment Cluster Client/Server Component.
Silicon Labs implementation of the Smart Energy Key Establishment cluster. The key establishment cluster is used by the Smart Energy profile to perform Certificate-Based Key Establishment (CBKE), which performs mutual authentication and establishes a symmetric APS link key. Direct CBKE between any two non-TC devices is supported after the two devices have completed partner link key exchange via Trust Center. This component defaults to using CBKE functions with the 163k ECC curve support, but users can also choose the 283k1 ECC curve by selecting the 'CBKE 283k1' component.
API#
Enumerations#
Typedefs#
Variables#
Macros#
Init - bytes: suite (2), key gen time (1), derive secret time (1), cert (48)
Terminate - bytes: status (1), wait time (1), suite (2)
The offset within the 163k1 curve certificate struct where the issuer field lives. 22-bytes for Public Key Reconstruction data, and 8-bytes for subject.
The offset within the 283k1 curve certificate struct where the issuer field lives. 22-bytes for Public Key Reconstruction data, and 8-bytes for subject.
These values reported to the remote device as to how long the local device takes to execute these operations.
API Documentation#
checkIssuer#
bool checkIssuer (uint8_t * issuer)
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| uint8_t * | N/A | issuer |
cleanupAndStopWithDelay#
void cleanupAndStopWithDelay (EmberAfKeyEstablishmentNotifyMessage message, uint8_t delayInSec)
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| EmberAfKeyEstablishmentNotifyMessage | N/A | message | |
| uint8_t | N/A | delayInSec |
sendCertificate#
EmberAfKeyEstablishmentNotifyMessage sendCertificate (void )
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| void | N/A |
sendNextKeyEstablishMessage#
void sendNextKeyEstablishMessage (KeyEstablishMessage message, uint8_t * data)
| Type | Direction | Argument Name | Description |
|---|---|---|---|
| KeyEstablishMessage | N/A | message | |
| uint8_t * | N/A | data |
Enumeration Documentation#
KeyEstablishEvent#
KeyEstablishEvent
| Enumerator | |
|---|---|
| NO_KEY_ESTABLISHMENT_EVENT | |
| CHECK_SUPPORTED_CURVES | |
| BEGIN_KEY_ESTABLISHMENT | |
| GENERATE_KEYS | |
| SEND_EPHEMERAL_DATA_MESSAGE | |
| GENERATE_SHARED_SECRET | |
| SEND_CONFIRM_KEY_MESSAGE | |
| INITIATOR_RECEIVED_CONFIRM_KEY | |
Variable Documentation#
Macro Definition Documentation#
EM_AF_KE_INITIATE_SIZE#
#define EM_AF_KE_INITIATE_SIZEValue:
(2 + 1 + 1 + EMBER_CERTIFICATE_SIZE)
Init - bytes: suite (2), key gen time (1), derive secret time (1), cert (48)
EM_AF_KE_INITIATE_SIZE_283K1#
#define EM_AF_KE_INITIATE_SIZE_283K1Value:
(2 + 1 + 1 + EMBER_CERTIFICATE_283K1_SIZE)
EM_AF_KE_EPHEMERAL_SIZE_283K1#
#define EM_AF_KE_EPHEMERAL_SIZE_283K1Value:
EMBER_PUBLIC_KEY_283K1_SIZE
EM_AF_KE_TERMINATE_SIZE#
#define EM_AF_KE_TERMINATE_SIZEValue:
(1 + 1 + 2)
Terminate - bytes: status (1), wait time (1), suite (2)
KEY_ESTABLISHMENT_APS_DUPLICATE_DETECTION_TIMEOUT_SEC#
#define KEY_ESTABLISHMENT_APS_DUPLICATE_DETECTION_TIMEOUT_SECValue:
5
CERT_SUBJECT_OFFSET#
#define CERT_SUBJECT_OFFSETValue:
22
The offset within the 163k1 curve certificate struct where the issuer field lives. 22-bytes for Public Key Reconstruction data, and 8-bytes for subject.
CERT_SUBJECT_OFFSET_283K1#
#define CERT_SUBJECT_OFFSET_283K1Value:
(1 + 8 + 1 + 1 + 8 + 5 + 4)
The offset within the 283k1 curve certificate struct where the issuer field lives. 22-bytes for Public Key Reconstruction data, and 8-bytes for subject.
DEFAULT_EPHEMERAL_DATA_GENERATE_TIME_SECONDS#
#define DEFAULT_EPHEMERAL_DATA_GENERATE_TIME_SECONDSValue:
(10 + APS_ACK_TIMEOUT_SECONDS)
These values reported to the remote device as to how long the local device takes to execute these operations.
DEFAULT_GENERATE_SHARED_SECRET_TIME_SECONDS
#define DEFAULT_GENERATE_SHARED_SECRET_TIME_SECONDSValue:
(15 + APS_ACK_TIMEOUT_SECONDS)
emAfPluginKeyEstablishmentGenerateCbkeKeysHandler#
#define emAfPluginKeyEstablishmentGenerateCbkeKeysHandlerValue:
emAfGenerateCbkeKeysCallback
emAfPluginKeyEstablishmentCalculateSmacsHandler#
#define emAfPluginKeyEstablishmentCalculateSmacsHandlerValue:
emAfCalculateSmacsCallback
emAfPluginKeyEstablishmentGenerateCbkeKeysHandler283k1#
#define emAfPluginKeyEstablishmentGenerateCbkeKeysHandler283k1Value:
emAfGenerateCbkeKeysCallback283k1
emAfPluginKeyEstablishmentCalculateSmacsHandler283k1#
#define emAfPluginKeyEstablishmentCalculateSmacsHandler283k1Value:
emAfCalculateSmacsCallback283k1
TERMINATE_STATUS_STRINGS#
#define TERMINATE_STATUS_STRINGSValue:
isCbkeKeyEstablishmentSuite163k1#
#define isCbkeKeyEstablishmentSuite163k1Value:
isCbkeKeyEstablishmentSuite283k1#
#define isCbkeKeyEstablishmentSuite283k1Value: