提交 743bda06 编写于 作者: J Ján Tomko

tests: mock gnutls_dh_params_generate2

This function generates some big random numbers.

Cache the result and supply it to any subsequent generate2 calls.
上级 9f95593d
......@@ -633,7 +633,7 @@ mymain(void)
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
VIRT_TEST_MAIN(mymain)
VIRT_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/virrandommock.so")
#else
......
......@@ -487,7 +487,7 @@ mymain(void)
return ret == 0 ? EXIT_SUCCESS : EXIT_FAILURE;
}
VIRT_TEST_MAIN(mymain)
VIRT_TEST_MAIN_PRELOAD(mymain, abs_builddir "/.libs/virrandommock.so")
#else
......
......@@ -37,3 +37,43 @@ virRandomBytes(unsigned char *buf,
return 0;
}
#ifdef WITH_GNUTLS
# include <stdio.h>
# include <gnutls/gnutls.h>
static int (*real_gnutls_dh_params_generate2)(gnutls_dh_params_t dparams,
unsigned int bits);
static gnutls_dh_params_t params_cache;
static unsigned int cachebits;
int
gnutls_dh_params_generate2(gnutls_dh_params_t dparams,
unsigned int bits)
{
int rc = 0;
VIR_MOCK_REAL_INIT(gnutls_dh_params_generate2);
if (!params_cache) {
if (gnutls_dh_params_init(&params_cache) < 0) {
fprintf(stderr, "Error initializing params cache");
abort();
}
rc = real_gnutls_dh_params_generate2(params_cache, bits);
if (rc < 0)
return rc;
cachebits = bits;
}
if (cachebits != bits) {
fprintf(stderr, "Requested bits do not match the cached value");
abort();
}
return gnutls_dh_params_cpy(dparams, params_cache);
}
#endif
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册