diff --git a/src/adapter.c b/src/adapter.c
index 329de16..b32e3ba 100644
--- a/src/adapter.c
+++ b/src/adapter.c
info = g_new0(struct link_key_info, 1);
str2ba(peer, &info->bdaddr);
- str2buf(&str[2], info->key, sizeof(info->key));
+
+ if (!strncmp(str, "0x", 2))
+ str2buf(&str[2], info->key, sizeof(info->key));
+ else
+ str2buf(&str[0], info->key, sizeof(info->key));
info->type = g_key_file_get_integer(key_file, "LinkKey", "Type", NULL);
info->pin_len = g_key_file_get_integer(key_file, "LinkKey", "PINLength",
goto failed;
}
- str2buf(&key[2], ltk->val, sizeof(ltk->val));
+ if (!strncmp(key, "0x", 2))
+ str2buf(&key[2], ltk->val, sizeof(ltk->val));
+ else
+ str2buf(&key[0], ltk->val, sizeof(ltk->val));
+
str2buf(&rand[2], ltk->rand, sizeof(ltk->rand));
ltk->authenticated = g_key_file_get_integer(key_file, group,
char filename[PATH_MAX + 1];
GKeyFile *key_file;
gsize length = 0;
- char key_str[35];
+ char key_str[33];
char *str;
int i;
key_file = g_key_file_new();
g_key_file_load_from_file(key_file, filename, 0, NULL);
- key_str[0] = '0';
- key_str[1] = 'x';
for (i = 0; i < 16; i++)
- sprintf(key_str + 2 + (i * 2), "%2.2X", key[i]);
+ sprintf(key_str + (i * 2), "%2.2X", key[i]);
g_key_file_set_string(key_file, "LinkKey", "Key", key_str);
char device_addr[18];
char filename[PATH_MAX + 1];
GKeyFile *key_file;
- char key_str[35];
+ char key_str[33];
char rand_str[19];
gsize length = 0;
char *str;
/* Old files may contain this so remove it in case it exists */
g_key_file_remove_key(key_file, "LongTermKey", "Master", NULL);
- key_str[0] = '0';
- key_str[1] = 'x';
for (i = 0; i < 16; i++)
- sprintf(key_str + 2 + (i * 2), "%2.2X", key[i]);
+ sprintf(key_str + (i * 2), "%2.2X", key[i]);
g_key_file_set_string(key_file, group, "Key", key_str);