OpenSSL将现有分配的数组归零

时间:2019-01-27 18:09:08

标签: c openssl dynamic-memory-allocation

例如,我有一个动态分配的现有数组:

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函数并执行我自己的安全方法。所以我想问:

  1. 这样做是个好主意吗?
  2. 如何使用OPENSSL v1.0.2-交付的库将现有的unsigned char缓冲区归零。

1 个答案:

答案 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);