From fe73b0589483a11389fd68b1b0910229039bfcca Mon Sep 17 00:00:00 2001 From: Benedict Date: Fri, 2 Sep 2016 20:12:53 +0200 Subject: completed set4, challenge 28 --- lib/lib4.c | 28 ++++++++++++++++++++++++++++ 1 file changed, 28 insertions(+) (limited to 'lib/lib4.c') diff --git a/lib/lib4.c b/lib/lib4.c index 475efe9..5b7ec7d 100644 --- a/lib/lib4.c +++ b/lib/lib4.c @@ -20,3 +20,31 @@ int aes_ctr_edit(char *ciphertext, int ciphertext_length, int offset, char *newt aes_ctr(plaintext, ciphertext_length, ciphertext, key, nonce); return 0; } + +void sha1_hmac(unsigned int *mac, unsigned char *message, unsigned int msg_len, unsigned char *key, + unsigned int key_len) +{ + char *res = malloc(msg_len + key_len); + + memcpy(res, key, key_len); + memcpy(&res[key_len], message, msg_len); + + SHA1Context sh; + + SHA1Reset(&sh); + SHA1Input(&sh, res, (msg_len + key_len)); + SHA1Result(&sh); + + memcpy(mac, &(sh.Message_Digest), 20); +} + +int sha1_hmac_verify(unsigned int *mac, unsigned char *msg, unsigned int msg_len, + unsigned char *key, unsigned int key_len) +{ + unsigned int com_mac[5]; + + sha1_hmac(com_mac, msg, msg_len, key, key_len); + + return !memcmp(com_mac, mac, 20); + +} -- cgit v1.2.3-70-g09d2