diff --git a/src/device.c b/src/device.c
index 68b0d61..78e314a 100644
--- a/src/device.c
+++ b/src/device.c
list, len);
}
+static void store_csrk(struct csrk_info *csrk, GKeyFile *key_file,
+ const char *group)
+{
+ char key[33];
+ int i;
+
+ for (i = 0; i < 16; i++)
+ sprintf(key + (i * 2), "%2.2X", csrk->key[i]);
+
+ g_key_file_set_string(key_file, group, "Key", key);
+ g_key_file_set_integer(key_file, group, "Counter", csrk->counter);
+}
+
static gboolean store_device_info_cb(gpointer user_data)
{
struct btd_device *device = user_data;
g_key_file_remove_group(key_file, "DeviceID", NULL);
}
+ if (device->local_csrk)
+ store_csrk(device->local_csrk, key_file, "LocalSignatureKey");
+
+ if (device->remote_csrk)
+ store_csrk(device->remote_csrk, key_file, "RemoteSignatureKey");
+
create_file(filename, S_IRUSR | S_IWUSR);
str = g_key_file_to_data(key_file, &length, NULL);
*sign_cnt = dev->local_csrk->counter++;
+ store_device_info(dev);
+
return true;
}
dev->remote_csrk->counter = *sign_cnt;
+ store_device_info(dev);
+
return true;
}