如何在 PBC 中存储序列化元素?
How to store serialized element in 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)
保留时,该值不正确。我应该怎么做才能解决这个问题。
您需要先分配一些内存,然后将分配的内存地址传递给 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);
我正在使用基于配对的加密库来实现应用程序。我想通过调用
来存储元素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)
保留时,该值不正确。我应该怎么做才能解决这个问题。
您需要先分配一些内存,然后将分配的内存地址传递给 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);