mesh: add version field to mesh_network_key_t

This commit is contained in:
Matthias Ringwald 2019-07-02 14:04:30 +02:00
parent d5b798e5cb
commit c82bae6612
2 changed files with 9 additions and 1 deletions

View File

@ -903,10 +903,12 @@ void mesh_foundation_state_store(void){
typedef struct { typedef struct {
uint16_t netkey_index; uint16_t netkey_index;
uint8_t version;
// net_key from provisioner or Config Model Client // net_key from provisioner or Config Model Client
uint8_t net_key[16]; uint8_t net_key[16];
// derivative data // derived data
// k1 // k1
uint8_t identity_key[16]; uint8_t identity_key[16];
@ -933,6 +935,7 @@ void mesh_store_network_key(mesh_network_key_t * network_key){
memcpy(data.beacon_key, network_key->beacon_key, 16); memcpy(data.beacon_key, network_key->beacon_key, 16);
memcpy(data.network_id, network_key->network_id, 8); memcpy(data.network_id, network_key->network_id, 8);
data.nid = network_key->nid; data.nid = network_key->nid;
data.version = network_key->version;
memcpy(data.encryption_key, network_key->encryption_key, 16); memcpy(data.encryption_key, network_key->encryption_key, 16);
memcpy(data.privacy_key, network_key->privacy_key, 16); memcpy(data.privacy_key, network_key->privacy_key, 16);
btstack_tlv_singleton_impl->store_tag(btstack_tlv_singleton_context, tag, (uint8_t *) &data, sizeof(data)); btstack_tlv_singleton_impl->store_tag(btstack_tlv_singleton_context, tag, (uint8_t *) &data, sizeof(data));
@ -964,6 +967,7 @@ void mesh_load_network_keys(void){
memcpy(network_key->beacon_key, data.beacon_key, 16); memcpy(network_key->beacon_key, data.beacon_key, 16);
memcpy(network_key->network_id, data.network_id, 8); memcpy(network_key->network_id, data.network_id, 8);
network_key->nid = data.nid; network_key->nid = data.nid;
network_key->version = data.version;
memcpy(network_key->encryption_key, data.encryption_key, 16); memcpy(network_key->encryption_key, data.encryption_key, 16);
memcpy(network_key->privacy_key, data.privacy_key, 16); memcpy(network_key->privacy_key, data.privacy_key, 16);

View File

@ -74,9 +74,13 @@ typedef struct {
// internal index [0..MAX_NR_MESH_NETWORK_KEYS-1] // internal index [0..MAX_NR_MESH_NETWORK_KEYS-1]
uint16_t internal_index; uint16_t internal_index;
// index into shared global key list // index into shared global key list
uint16_t netkey_index; uint16_t netkey_index;
// internal version - allows for newer relation between keys with same netkey_index
uint8_t version;
// net_key from provisioner or Config Model Client // net_key from provisioner or Config Model Client
uint8_t net_key[16]; uint8_t net_key[16];