• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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@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 */
pelican_memory(const unsigned char * key,unsigned long keylen,const unsigned char * in,unsigned long inlen,unsigned char * out)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