例如,我有一个动态分配的现有数组:
unsigned char *c =NULL
for(int i=0; i<10;i++){
//receiveKeySizeFromNetwork receives a key size from the network
int key_size = receiveKeySizeFromNetwork();
unsigned char *c = OPENSSL_realloc(c, key_zise*sizeof(unsigned char));
receiveKeyFromTheNetwork(c, key_size);
//Further logic
}
我使用c
作为临时数组,从多个主机接收它们的密钥。正如我在OPENSSL v1.1.0中看到的那样,有一个OPENSSL_clear_realloc
函数可以安全地处理内存的重新分配,在我的系统中已安装的OPENSSL不存在。
因此,我想使用现有的OPENSSL函数并执行我自己的安全方法。所以我想问:
unsigned char
缓冲区归零。答案 0 :(得分:0)
对于1,我不知道,但是对于2,您可以使用定义为:{p>
OPENSSL_cleanse
并且在OPENSSL的v1.0.2和v1.1.0中相同。在使用OPENSSL v1.0.2的情况下,我制作了自己的安全分配函数,专门用于处理字节大小的数组:
void OPENSSL_cleanse(void *ptr, size_t len);