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 lrw_decrypt.c
15   LRW_MODE implementation, Decrypt blocks, Tom St Denis
16*/
17
18#ifdef LTC_LRW_MODE
19
20/**
21  LRW decrypt blocks
22  @param ct     The ciphertext
23  @param pt     [out] The plaintext
24  @param len    The length in octets, must be a multiple of 16
25  @param lrw    The LRW state
26*/
27int lrw_decrypt(const unsigned char *ct, unsigned char *pt, unsigned long len, symmetric_LRW *lrw)
28{
29   int err;
30
31   LTC_ARGCHK(pt  != NULL);
32   LTC_ARGCHK(ct  != NULL);
33   LTC_ARGCHK(lrw != NULL);
34
35   if ((err = cipher_is_valid(lrw->cipher)) != CRYPT_OK) {
36      return err;
37   }
38
39   if (cipher_descriptor[lrw->cipher].accel_lrw_decrypt != NULL) {
40      return cipher_descriptor[lrw->cipher].accel_lrw_decrypt(ct, pt, len, lrw->IV, lrw->tweak, &lrw->key);
41   }
42
43   return lrw_process(ct, pt, len, LRW_DECRYPT, lrw);
44}
45
46
47#endif
48
49/* $Source: /cvs/libtom/libtomcrypt/src/modes/lrw/lrw_decrypt.c,v $ */
50/* $Revision: 1.8 $ */
51/* $Date: 2006/06/29 01:53:13 $ */
52