10 unsigned char k_ipad[KEY_IOPAD_SIZE] = { 0 };
11 unsigned char k_opad[KEY_IOPAD_SIZE] = { 0 };
16 if (key_len <= KEY_IOPAD_SIZE)
18 memcpy(k_ipad, key, key_len);
19 memcpy(k_opad, key, key_len);
25 winpr_MD5_Init(&lctx);
26 winpr_MD5_Update(&lctx, key, key_len);
27 winpr_MD5_Final(k_ipad, &lctx);
28 memcpy(k_opad, k_ipad, KEY_IOPAD_SIZE);
30 for (
size_t i = 0; i < KEY_IOPAD_SIZE; i++)
36 winpr_MD5_Init(&ctx->icontext);
37 winpr_MD5_Update(&ctx->icontext, k_ipad, KEY_IOPAD_SIZE);
39 winpr_MD5_Init(&ctx->ocontext);
40 winpr_MD5_Update(&ctx->ocontext, k_opad, KEY_IOPAD_SIZE);
43 void hmac_md5_update(
WINPR_HMAC_MD5_CTX* ctx,
const unsigned char* text,
size_t text_len)
46 winpr_MD5_Update(&ctx->icontext, text, text_len);
52 winpr_MD5_Final(hmac, &ctx->icontext);
54 winpr_MD5_Update(&ctx->ocontext, hmac, 16);
55 winpr_MD5_Final(hmac, &ctx->ocontext);