Home | History | Annotate | Download | only in pelican
      1 /* LibTomCrypt, modular cryptographic library -- Tom St Denis
      2  *
      3  * LibTomCrypt is a library that provides various cryptographic
      4  * algorithms in a highly modular and flexible manner.
      5  *
      6  * The library is free for all purposes without any express
      7  * guarantee it works.
      8  *
      9  * Tom St Denis, tomstdenis (at) gmail.com, http://libtomcrypt.com
     10  */
     11 #include "tomcrypt.h"
     12 
     13 /**
     14    @file pelican_memory.c
     15    Pelican MAC, MAC a block of memory, by Tom St Denis
     16 */
     17 
     18 #ifdef PELICAN
     19 
     20 /**
     21   Pelican block of memory
     22   @param key      The key for the MAC
     23   @param keylen   The length of the key (octets)
     24   @param in       The input to MAC
     25   @param inlen    The length of the input (octets)
     26   @param out      [out] The output TAG
     27   @return CRYPT_OK on success
     28 */
     29 int pelican_memory(const unsigned char *key, unsigned long keylen,
     30                    const unsigned char *in,  unsigned long inlen,
     31                          unsigned char *out)
     32 {
     33    pelican_state *pel;
     34    int err;
     35 
     36    pel = XMALLOC(sizeof(*pel));
     37    if (pel == NULL) {
     38       return CRYPT_MEM;
     39    }
     40 
     41    if ((err = pelican_init(pel, key, keylen)) != CRYPT_OK) {
     42       XFREE(pel);
     43       return err;
     44    }
     45    if ((err = pelican_process(pel, in ,inlen)) != CRYPT_OK) {
     46       XFREE(pel);
     47       return err;
     48    }
     49    err = pelican_done(pel, out);
     50    XFREE(pel);
     51    return err;
     52 }
     53 
     54 
     55 #endif
     56 
     57 /* $Source: /cvs/libtom/libtomcrypt/src/mac/pelican/pelican_memory.c,v $ */
     58 /* $Revision: 1.6 $ */
     59 /* $Date: 2006/03/31 14:15:35 $ */
     60