1f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* LibTomCrypt, modular cryptographic library -- Tom St Denis
2f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project *
3f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * LibTomCrypt is a library that provides various cryptographic
4f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * algorithms in a highly modular and flexible manner.
5f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project *
6f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * The library is free for all purposes without any express
7f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * guarantee it works.
8f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project *
9f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.com
10f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project */
11f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#include "tomcrypt.h"
12f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
13f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/**
14f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  @file hmac_process.c
15f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  HMAC support, process data, Tom St Denis/Dobes Vandermeer
16f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project*/
17f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
18f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#ifdef LTC_HMAC
19f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
20f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/**
21f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  Process data through HMAC
22f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  @param hmac    The hmac state
23f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  @param in      The data to send through HMAC
24f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  @param inlen   The length of the data to HMAC (octets)
25f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project  @return CRYPT_OK if successful
26f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project*/
27f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Projectint hmac_process(hmac_state *hmac, const unsigned char *in, unsigned long inlen)
28f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project{
29f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project    int err;
30f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project    LTC_ARGCHK(hmac != NULL);
31f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project    LTC_ARGCHK(in != NULL);
32f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project    if ((err = hash_is_valid(hmac->hash)) != CRYPT_OK) {
33f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project        return err;
34f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project    }
35f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project    return hash_descriptor[hmac->hash].process(&hmac->md, in, inlen);
36f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project}
37f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
38f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project#endif
39f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
40f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project
41f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Source: /cvs/libtom/libtomcrypt/src/mac/hmac/hmac_process.c,v $ */
42f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Revision: 1.5 $ */
43f7fc46c63fdc8f39234fea409b8dbe116d73ebf8The Android Open Source Project/* $Date: 2006/11/03 00:39:49 $ */
44