pelican_memory.c revision 29698e296e3fd1474a362fbd229bca888175bb66
18e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* LibTomCrypt, modular cryptographic library -- Tom St Denis 28e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 38e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * LibTomCrypt is a library that provides various cryptographic 48e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * algorithms in a highly modular and flexible manner. 58e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 68e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * The library is free for all purposes without any express 78e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * guarantee it works. 88e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * 98e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project * Tom St Denis, tomstdenis@gmail.com, http://libtomcrypt.com 108e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project */ 118e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#include "tomcrypt.h" 128e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 138e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 148e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @file pelican_memory.c 158e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Pelican MAC, MAC a block of memory, by Tom St Denis 168e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 178e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 188e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project#ifdef PELICAN 198e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 208e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/** 218e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project Pelican block of memory 228e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @param key The key for the MAC 238e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @param keylen The length of the key (octets) 248e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @param in The input to MAC 258e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @param inlen The length of the input (octets) 268e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @param out [out] The output TAG 278e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project @return CRYPT_OK on success 288e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project*/ 298e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Projectint pelican_memory(const unsigned char *key, unsigned long keylen, 308e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project const unsigned char *in, unsigned long inlen, 318e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project unsigned char *out) 328e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project{ 338e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pelican_state *pel; 348e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project int err; 358e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 368e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project pel = XMALLOC(sizeof(*pel)); 372fc2651226baac27029e38c9d6ef883fa32084dbSteve Block if (pel == NULL) { 388e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return CRYPT_MEM; 398e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 408e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 418e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ((err = pelican_init(pel, key, keylen)) != CRYPT_OK) { 42cad810f21b803229eb11403f9209855525a25d57Steve Block XFREE(pel); 438e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return err; 448e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 458e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project if ((err = pelican_process(pel, in ,inlen)) != CRYPT_OK) { 468e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project XFREE(pel); 478e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return err; 488e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project } 498e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project err = pelican_done(pel, out); 5081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch XFREE(pel); 518e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project return err; 528e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project} 5381bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch 548e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project 5581bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch#endif 562fc2651226baac27029e38c9d6ef883fa32084dbSteve Block 578e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* $Source: /cvs/libtom/libtomcrypt/src/mac/pelican/pelican_memory.c,v $ */ 588e35f3cfc7fba1d1c829dc557ebad6409cbe16a2The Android Open Source Project/* $Revision: 1.6 $ */ 5981bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch/* $Date: 2006/03/31 14:15:35 $ */ 6081bc750723a18f21cd17d1b173cd2a4dda9cea6eBen Murdoch