У меня есть текстовое представление зашифрованного буфера (через gcrypt) следующим образом:
(enc-val
(ecdh
(s #04FA304FE9E91BED21E3C5898796056CE4E590E12BC74D0219A185D2E0B9B49A7393F023415F3E1FFD22D5B0A134E03F84D5C5DF7C5326C51971CFB783A26F1636#)
(e #0411C41FC2ECB6F6F482050C005B30F75E134FD8AEA1E45F687A9E995CCFFB14DDD8EA41462E41CAEBA2AA21CA8F70C67FF4AA6620E64BABA23CCA0088F292256D#)
)
)
Затем я преобразую эту текстовую строку в (uint_8) массив значений через функцию data_from_string. Функция выглядит следующим образом:
size_t data_from_string(const char *str, uint8_t **data)
{
char tmp[3];
size_t size, i;
info("data_from_string");
size = strlen(str) / 2;
*data = (uint8_t *)malloc(size);
if (*data == NULL)
return 0;
tmp[2] = '\0';
for (i = 0; i < size; i++) {
memcpy(tmp, str + (i * 2), 2);
(*data)[i] = (uint8_t) strtol(tmp, NULL, 16);
}
return size;
}
data_from_string Функция используется Bluez для кодирования строки символов и отправки ее на подключенное устройство. Это производит закодированный (uinit_8) массив значений следующим образом:
0000000A0000EC0D0000000004FA304FE9E91BED21E3C5898796056CE4E590E12BC74D0219A185D2E0B9B49A7393F023415F3E1FFD22D5B0A134E03F84D5C5DF7C5326C51971CFB783A26F16360000000E00411C41FC2ECB6F6F482050C005B30F75E134FD8AEA1E45F687A9E995CCFFB14DDD8EA41462E41CAEBA2AA21CA8F70C67FF4AA6620E64BABA23CCA0088F2922560D00000000
Искал средство для восстановления закодированного (uinit_8) массив значений обратно в исходное текстовое представление.
У кого-нибудь есть представление, как выполнить эту задачу?
Задача ещё не решена.