return false;
}
+
+static bool match_key(const void *data, const void *match_data)
+{
+ const struct irk_data *irk = data;
+ const uint8_t *key = match_data;
+
+ return !memcmp(irk->key, key, 16);
+}
+
+bool keys_add_identity(const uint8_t addr[6], uint8_t addr_type,
+ const uint8_t key[16])
+{
+ struct irk_data *irk;
+
+ irk = queue_find(irk_list, match_key, key);
+ if (!irk) {
+ irk = new0(struct irk_data, 1);
+ memcpy(irk->key, key, 16);
+ queue_push_tail(irk_list, irk);
+ }
+
+ memcpy(irk->addr, addr, 6);
+ irk->addr_type = addr_type;
+
+ return true;
+}
bool keys_resolve_identity(const uint8_t addr[6], uint8_t ident[6],
uint8_t *ident_type);
+bool keys_add_identity(const uint8_t addr[6], uint8_t addr_type,
+ const uint8_t key[16]);
mgmt_print_address(data, address_type);
print_hex_field("Key", data + 7, 16);
+ keys_add_identity(data, address_type, data + 7);
}
static void mgmt_print_signature_resolving_key(const void *data)