目录
6.其它函数
随机数生成、内存分配、日志记录。
6.1 随机比特流
第一次要求PBC生成随机数时,PBC库将尝试打开 /dev/urandom 文件作为随机比特的来源。如果失败,PBC就会回落到确定性随机数发生器(对于密码学来说这毫无用处)。
改变用于随机比特的文件是可能的。此外,显式选择确定性随机数生成器将会抑制警告(suppress the warning)。
在Windows中,PBC默认使用Microsoft Crypto API生成随机bits。
void pbc_random_set_file(char *filename) // 设置 filename 作为随机字节的源。例如,在Linux中可能会使用 /dev/random。
void pbc_random_set_deterministic(unsigned int seed) // 使用一个确定的随机数生成器,以seed为种子。
void pbc_mpz_random(mpz_t z, mpz_t limit) // 选择一个小于 limit 的z。
void pbc_mpz_randomb(mpz_t z, unsigned int bits) // 选择一个随机的bits位的整数z。
6.2 自定义分配
像GMP一样,PBC可以按照指令使用自定义内存分配函数。必须在执行任何内存操作前完成此操作,通常是在调用其他PBC函数之前,在程序的开始时执行。
像GMP一样,封装 malloc 和realloc的封装器会在调用失败时在标准error上打印一条信息并且终止程序执行。替换这些函数应该类似。
然而,与GMP不同的是,在调用realloc和free函数时PBC不会传递之前与指针一起分配的字节数。
void pbc_set_memory_functions(void *(*malloc_fn)(size_t), void *(*realloc_fn)(void *, size_t), void (*free_fn)(void *))
设置自定义内存分配函数。参数必须是指向malloc、realloc和free的函数指针,只是malloc和realloc在失败时应该终止程序:在这种情况下函数一定没有返回。
6.3 日志记录
// 默认情况下,error消息被打印成标准error。调用int pbc_set_msg_to_stderr(0)来suppress messages.
int pbc_set_msg_to_stderr(int i)
// 报告error 消息并以代码128退出。
void pbc_die(const char *err, ...)
// 报告信息(informational)消息
void pbc_info(const char *err, ...)
// 报告warning消息
void pbc_warn(const char *err, ...)
// 报告error消息
void pbc_error(const char *err, ...)