void winpr_MD5_Init(WINPR_MD5_CTX* ctx) { #if defined(WITH_OPENSSL) MD5_Init((MD5_CTX*) ctx); #elif defined(WITH_MBEDTLS) && defined(MBEDTLS_MD5_C) mbedtls_md5_init((mbedtls_md5_context*) ctx); mbedtls_md5_starts((mbedtls_md5_context*) ctx); #endif }
char *calc_keepalive_data(time_t timestamp) { static char keepalive_data[64]; u_char timebytes[4]; u_char md5_result[16]; mbedtls_md5_context md5; if (strlen(keepalive_data) == 0) { strcpy(keepalive_data, DEFAULT_KEEPALIVE_DATA); } int2byte((int)timestamp, timebytes); mbedtls_md5_init(&md5); mbedtls_md5_starts(&md5); mbedtls_md5_update(&md5, timebytes, 4); mbedtls_md5_update(&md5, (const u_char *)keepalive_data, strlen(keepalive_data)); mbedtls_md5_finish(&md5, md5_result); byte2str(md5_result, 16, keepalive_data); return keepalive_data; }
static void md5_starts_wrap( void *ctx ) { mbedtls_md5_starts( (mbedtls_md5_context *) ctx ); }