X-Git-Url: http://git.silcnet.org/gitweb/?a=blobdiff_plain;f=lib%2Fsilccore%2Fsilcchannel.c;h=2bd7eb6fce3351cb8fbee08cc26a0856ba4d7619;hb=f1a1c41a159700e60f98a1dcf3bc4801c36af62c;hp=2a853548826575e08387eabd0d4c843de3ae7320;hpb=190a11fdbc18f27db65608586806b3a4b7faa4bb;p=silc.git diff --git a/lib/silccore/silcchannel.c b/lib/silccore/silcchannel.c index 2a853548..2bd7eb6f 100644 --- a/lib/silccore/silcchannel.c +++ b/lib/silccore/silcchannel.c @@ -299,7 +299,10 @@ bool silc_channel_message_payload_decrypt(unsigned char *data, /* Check the MAC of the message */ SILC_LOG_DEBUG(("Checking channel message MACs")); - silc_hmac_make(hmac, dst, (data_len - iv_len - mac_len), mac2, &mac_len); + silc_hmac_init(hmac); + silc_hmac_update(hmac, dst, (data_len - iv_len - mac_len)); + silc_hmac_update(hmac, data + (data_len - iv_len), iv_len); + silc_hmac_final(hmac, mac2, &mac_len); if (memcmp(mac, mac2, mac_len)) { SILC_LOG_DEBUG(("Channel message MACs does not match")); silc_free(dst); @@ -395,7 +398,10 @@ bool silc_channel_message_payload_encrypt(unsigned char *data, SilcBufferStruct buf; /* Compute the MAC of the channel message data */ - silc_hmac_make(hmac, data, data_len, mac, &mac_len); + silc_hmac_init(hmac); + silc_hmac_update(hmac, data, data_len); + silc_hmac_update(hmac, iv, iv_len); + silc_hmac_final(hmac, mac, &mac_len); /* Put rest of the data to the payload */ silc_buffer_set(&buf, data, true_len);