Как сохранить сериализованный элемент в PBC?

Я использую библиотеку криптографии на основе сопряжения для реализации приложения. И я хочу сохранить элемент, позвонив

int element_length_in_bytes(element_t e)

а также

int element_to_bytes(unsigned char *data, element_t e)

Проблема в том, что значение хранится в типе unsigned char *, Так что я не знаю, как сохранить его в файле.

Я пытался привести его к char * и использовал библиотеку под названием jsoncpp хранить. Однако значение не является правильным, когда я использую Json::Value((char *)data) хранить. Что я должен сделать, чтобы решить эту проблему.

1

Решение

Сначала необходимо выделить немного памяти, а затем передать адрес этой выделенной памяти функции element_to_bytes (), которая сохранит элемент в выделенной памяти.

Как узнать, сколько байтов выделить? Для этого используйте element_length_in_bytes ().

int num_bytes = element_length_in_bytes(e);
/* Handle errors, ensure num_bytes > 0 */

char *elem_bytes = malloc(num_bytes * sizeof(unsigned char));
/* Handle malloc failure */

int ret = element_to_bytes(elem_bytes, e);
/* Handle errors by looking at 'ret'; read the PBC documentation */

На этом этапе ваш элемент отображается как байты, расположенные в elem_bytes. Самый простой способ просто записать его в файл — использовать open () / write () / close (). Если есть какая-то конкретная причина, по которой вы должны использовать jsoncpp, то вам следует прочитать документацию для jsoncpp о том, как писать байтовый массив. Обратите внимание, что любой вызываемый вами метод должен запрашивать количество записываемых байтов.

Используя open () / write () / close (), вот как вы это сделаете:

int fd = open("myfile", ...)
write(fd, elem_bytes, num_bytes);
close(fd);

После того, как вы закончите, вы должны освободить выделенную память:

free(elem_bytes);
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]