84 lines
1.5 KiB
C
Executable File
84 lines
1.5 KiB
C
Executable File
#include"crypto.h"
|
|
#include"cryptlib.h"
|
|
#include"lhash.h"
|
|
#include"myfunction.h"
|
|
|
|
|
|
unsigned char cleanse_ctr = 0;
|
|
|
|
void OPENSSL_cleanse(void *ptr, size_t len)
|
|
{
|
|
unsigned char *p = ptr;
|
|
size_t loop = len, ctr = cleanse_ctr;
|
|
while(loop--)
|
|
{
|
|
*(p++) = (unsigned char)ctr;
|
|
ctr += (17 + ((size_t)p & 0xF));
|
|
}
|
|
p=memchr(ptr, (unsigned char)ctr, len);
|
|
if(p)
|
|
ctr += (63 + (size_t)p);
|
|
cleanse_ctr = (unsigned char)ctr;
|
|
}
|
|
|
|
|
|
void *CRYPTO_malloc(int num, const char *file, int line)
|
|
{
|
|
if (num <= 0) return NULL;
|
|
|
|
return malloc(num);
|
|
}
|
|
|
|
void *CRYPTO_realloc(void *str, int num, const char *file, int line)
|
|
{
|
|
if (str == NULL)
|
|
return CRYPTO_malloc(num, file, line);
|
|
|
|
if (num <= 0) return NULL;
|
|
|
|
return realloc(str, num);
|
|
}
|
|
|
|
void *CRYPTO_realloc_clean(void *str, int old_len, int num, const char *file,
|
|
int line)
|
|
{
|
|
void *ret = NULL;
|
|
|
|
if (str == NULL)
|
|
return CRYPTO_malloc(num, file, line);
|
|
|
|
if (num <= 0) return NULL;
|
|
|
|
/* We don't support shrinking the buffer. Note the memcpy that copies
|
|
* |old_len| bytes to the new buffer, below. */
|
|
if (num < old_len) return NULL;
|
|
|
|
ret = malloc(num);
|
|
if(ret)
|
|
{
|
|
memcpy(ret,str,old_len);
|
|
OPENSSL_cleanse(str,old_len);
|
|
free(str);
|
|
}
|
|
|
|
return ret;
|
|
}
|
|
|
|
void CRYPTO_free(void *str)
|
|
{
|
|
free(str);
|
|
}
|
|
|
|
void *CRYPTO_remalloc(void *a, int num, const char *file, int line)
|
|
{
|
|
if (a != NULL) free(a);
|
|
a=(char *)malloc(num);
|
|
return(a);
|
|
}
|
|
|
|
|
|
void reset_CRYPTO_reset(void)
|
|
{
|
|
cleanse_ctr = 0;
|
|
}
|