--- a/libpurple/ciphers/hmac.c Mon May 06 14:50:00 2013 +0200
+++ b/libpurple/ciphers/hmac.c Mon May 06 15:50:09 2013 +0200
@@ -30,7 +30,7 @@
PurpleCipherContext *hash;
@@ -57,6 +57,8 @@
@@ -66,8 +68,10 @@
hctx = purple_cipher_context_get_data(context);
- purple_cipher_context_reset_state(hctx->hash, extra);
+ purple_cipher_context_reset_state(hctx->hash, NULL); + purple_cipher_context_append(hctx->hash, hctx->ipad, hctx->blocksize); @@ -168,15 +172,15 @@
struct HMAC_Context *hctx = purple_cipher_context_get_data(context);
g_return_if_fail(hctx->hash != NULL);
blocksize = hctx->blocksize;
- ipad = g_malloc(blocksize);
+ hctx->ipad = g_malloc(blocksize); hctx->opad = g_malloc(blocksize);
if (key_len > blocksize) {
@@ -195,15 +199,14 @@
for(i = 0; i < blocksize; i++) {
- ipad[i] = 0x36 ^ full_key[i];
+ hctx->ipad[i] = 0x36 ^ full_key[i]; hctx->opad[i] = 0x5c ^ full_key[i];
purple_cipher_context_reset(hctx->hash, NULL);
- purple_cipher_context_append(hctx->hash, ipad, blocksize);
+ purple_cipher_context_append(hctx->hash, hctx->ipad, blocksize);