return ret;
}
+void *_gnutls_bzero(void *mem, size_t size)
+{
+ volatile uint8_t *p = mem;
+ while (size--)
+ *p++ = 0;
+ return mem;
+}
#if 0
/* don't use them. They are included for documentation.
void *_gnutls_calloc(size_t nmemb, size_t size);
char *_gnutls_strdup(const char *);
+void *_gnutls_bzero(void *v, size_t n);
+
#define zrelease_mpi_key(mpi) if (*mpi!=NULL) { \
_gnutls_mpi_clear(*mpi); \
_gnutls_mpi_release(mpi); \
}
-#define zeroize_key(x, size) memset(x, 0, size)
+#define zeroize_key(x, size) _gnutls_bzero(x, size)
#ifdef ENABLE_FIPS140
# define zeroize_temp_key zeroize_key