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